This is an automated email from the ASF dual-hosted git repository. leerho pushed a commit to branch java8-11_changes_consistent_with_17 in repository https://gitbox.apache.org/repos/asf/datasketches-java.git
commit fc6c471943745e4b0549fdf408528947904e2106 Author: Lee Rhodes <[email protected]> AuthorDate: Wed Jun 19 14:49:34 2024 -0700 Java8-11 changes consistent with 17 --- pom.xml | 4 +- .../java/org/apache/datasketches/common/Util.java | 3 +- .../java/org/apache/datasketches/theta/Sketch.java | 9 +- .../org/apache/datasketches/theta/Sketches.java | 10 +- .../filters/bloomfilter/BloomFilterTest.java | 4 +- .../filters/bloomfilter/DirectBitArrayTest.java | 2 +- .../datasketches/hll/DirectAuxHashMapTest.java | 83 +- .../datasketches/hll/DirectCouponListTest.java | 17 +- .../datasketches/quantiles/DebugUnionTest.java | 6 +- .../DirectQuantilesMemoryRequestTest.java | 147 ++-- .../datasketches/quantiles/DoublesSketchTest.java | 51 +- .../datasketches/quantiles/PreambleUtilTest.java | 6 +- .../datasketches/theta/CompactSketchTest.java | 6 +- .../theta/DirectQuickSelectSketchTest.java | 203 ++--- .../theta/HeapifyWrapSerVer1and2Test.java | 840 ++++++++++----------- .../apache/datasketches/theta/UnionImplTest.java | 37 +- .../datasketches/theta/UpdateSketchTest.java | 8 +- 17 files changed, 630 insertions(+), 806 deletions(-) diff --git a/pom.xml b/pom.xml index 35107f24..1c1107c6 100644 --- a/pom.xml +++ b/pom.xml @@ -134,13 +134,13 @@ under the License. </properties> <dependencies> - <!-- UNIQUE FOR THIS JAVA COMPONENT --> + <!-- <dependency> <groupId>org.apache.datasketches</groupId> <artifactId>datasketches-memory</artifactId> <version>${datasketches-memory.version}</version> </dependency> - <!-- END: UNIQUE FOR THIS JAVA COMPONENT --> + --> <!-- Test Scope --> <dependency> <groupId>org.testng</groupId> diff --git a/src/main/java/org/apache/datasketches/common/Util.java b/src/main/java/org/apache/datasketches/common/Util.java index 729b92f3..19a8ee61 100644 --- a/src/main/java/org/apache/datasketches/common/Util.java +++ b/src/main/java/org/apache/datasketches/common/Util.java @@ -245,7 +245,8 @@ public final class Util { /** * Prepend or postpend the given string with the given character to fill the given field length. - * If the given string is equal to or greater than the given field length, it will be returned without modification. + * If the given string is equal to or greater than the given field length, it will be returned + * without modification. * @param s the given string * @param fieldLength the desired field length * @param padChar the desired pad character diff --git a/src/main/java/org/apache/datasketches/theta/Sketch.java b/src/main/java/org/apache/datasketches/theta/Sketch.java index cc1fd4d2..6c59e4aa 100644 --- a/src/main/java/org/apache/datasketches/theta/Sketch.java +++ b/src/main/java/org/apache/datasketches/theta/Sketch.java @@ -292,14 +292,11 @@ public abstract class Sketch { /** * Returns the maximum number of storage bytes required for a CompactSketch with the given - * number of actual entries. Note that this assumes the worse case of the sketch in - * estimation mode, which requires storing theta and count. - * @param numberOfEntries the actual number of entries stored with the CompactSketch. + * number of actual entries. + * @param numberOfEntries the actual number of retained entries stored in the sketch. * @return the maximum number of storage bytes required for a CompactSketch with the given number - * of entries. - * @deprecated as a public method. Use {@link #getCompactSketchMaxBytes(int) instead} + * of retained entries. */ - @Deprecated public static int getMaxCompactSketchBytes(final int numberOfEntries) { if (numberOfEntries == 0) { return 8; } if (numberOfEntries == 1) { return 16; } diff --git a/src/main/java/org/apache/datasketches/theta/Sketches.java b/src/main/java/org/apache/datasketches/theta/Sketches.java index 4b146187..dc20072d 100644 --- a/src/main/java/org/apache/datasketches/theta/Sketches.java +++ b/src/main/java/org/apache/datasketches/theta/Sketches.java @@ -80,15 +80,11 @@ public final class Sketches { /** * Returns the maximum number of storage bytes required for a CompactSketch with the given - * number of actual entries. Note that this assumes the worse case of the sketch in - * estimation mode, which requires storing theta and count. - * @param numberOfEntries the actual number of entries stored with the CompactSketch. + * number of actual entries. + * @param numberOfEntries the actual number of retained entries stored in the sketch. * @return the maximum number of storage bytes required for a CompactSketch with the given number - * of entries. - * @see Sketch#getMaxCompactSketchBytes(int) - * @deprecated as a public method. Use {@link #getCompactSketchMaxBytes(int) instead} + * of retained entries. */ - @Deprecated public static int getMaxCompactSketchBytes(final int numberOfEntries) { return Sketch.getMaxCompactSketchBytes(numberOfEntries); } diff --git a/src/test/java/org/apache/datasketches/filters/bloomfilter/BloomFilterTest.java b/src/test/java/org/apache/datasketches/filters/bloomfilter/BloomFilterTest.java index dedaf9db..fba761a9 100644 --- a/src/test/java/org/apache/datasketches/filters/bloomfilter/BloomFilterTest.java +++ b/src/test/java/org/apache/datasketches/filters/bloomfilter/BloomFilterTest.java @@ -28,7 +28,6 @@ import org.apache.datasketches.common.Family; import org.apache.datasketches.common.SketchesArgumentException; import org.apache.datasketches.common.SketchesReadOnlyException; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; import org.testng.annotations.Test; @@ -51,8 +50,7 @@ public class BloomFilterTest { assertFalse(bf1.isDirect()); assertFalse(bf1.isReadOnly()); - try (WritableHandle wh = WritableMemory.allocateDirect(sizeBytes)) { - final WritableMemory wmem = wh.getWritable(); + try (WritableMemory wmem = WritableMemory.allocateDirect(sizeBytes)) { final BloomFilter bf2 = new BloomFilter(numBits, numHashes, seed, wmem); assertTrue(bf2.isEmpty()); assertTrue(bf2.hasMemory()); diff --git a/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayTest.java b/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayTest.java index a45bcbb8..46d98f55 100644 --- a/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayTest.java +++ b/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayTest.java @@ -139,7 +139,7 @@ public class DirectBitArrayTest { @Test public void countWritableWrappedBitsWhenDirty() { // like basicOperationTest but with setBit which does - // not neecssarily track numBitsSet_ + // not necessarily track numBitsSet_ final HeapBitArray hba = new HeapBitArray(128); assertFalse(hba.getAndSetBit(1)); assertFalse(hba.getAndSetBit(2)); diff --git a/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java b/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java index 78b18c1c..71774783 100644 --- a/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java +++ b/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java @@ -34,7 +34,6 @@ import org.apache.datasketches.memory.DefaultMemoryRequestServer; import org.testng.annotations.Test; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; @@ -50,51 +49,45 @@ public class DirectAuxHashMapTest { int n = 8; //put lgConfigK == 4 into HLL mode int bytes = HllSketch.getMaxUpdatableSerializationBytes(lgConfigK, tgtHllType); HllSketch hllSketch; - try (WritableHandle handle = WritableMemory.allocateDirect(bytes, - ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) { - WritableMemory wmem = handle.getWritable(); - hllSketch = new HllSketch(lgConfigK, tgtHllType, wmem); - for (int i = 0; i < n; i++) { - hllSketch.update(i); - } - hllSketch.couponUpdate(HllUtil.pair(7, 15)); //mock extreme values - hllSketch.couponUpdate(HllUtil.pair(8, 15)); - hllSketch.couponUpdate(HllUtil.pair(9, 15)); - //println(hllSketch.toString(true, true, true, true)); - DirectHllArray dha = (DirectHllArray) hllSketch.hllSketchImpl; - assertEquals(dha.getAuxHashMap().getLgAuxArrInts(), 2); - assertTrue(hllSketch.isMemory()); - assertTrue(hllSketch.isOffHeap()); - assertTrue(hllSketch.isSameResource(wmem)); - - //Check heapify - byte[] byteArray = hllSketch.toCompactByteArray(); - HllSketch hllSketch2 = HllSketch.heapify(byteArray); - HllArray ha = (HllArray) hllSketch2.hllSketchImpl; - assertEquals(ha.getAuxHashMap().getLgAuxArrInts(), 2); - assertEquals(ha.getAuxHashMap().getAuxCount(), 3); - - //Check wrap - byteArray = hllSketch.toUpdatableByteArray(); - WritableMemory wmem2 = WritableMemory.writableWrap(byteArray); - hllSketch2 = HllSketch.writableWrap(wmem2); - //println(hllSketch2.toString(true, true, true, true)); - DirectHllArray dha2 = (DirectHllArray) hllSketch2.hllSketchImpl; - assertEquals(dha2.getAuxHashMap().getLgAuxArrInts(), 2); - assertEquals(dha2.getAuxHashMap().getAuxCount(), 3); - - //Check grow to on-heap - hllSketch.couponUpdate(HllUtil.pair(10, 15)); //puts it over the edge, must grow - //println(hllSketch.toString(true, true, true, true)); - dha = (DirectHllArray) hllSketch.hllSketchImpl; - assertEquals(dha.getAuxHashMap().getLgAuxArrInts(), 3); - assertEquals(dha.getAuxHashMap().getAuxCount(), 4); - assertTrue(hllSketch.isMemory()); - assertFalse(hllSketch.isOffHeap()); - assertFalse(hllSketch.isSameResource(wmem)); - } catch (final Exception e) { - throw new RuntimeException(e); + WritableMemory wmem = WritableMemory.allocateDirect(bytes, ByteOrder.nativeOrder(), new DefaultMemoryRequestServer()); + hllSketch = new HllSketch(lgConfigK, tgtHllType, wmem); + for (int i = 0; i < n; i++) { + hllSketch.update(i); } + hllSketch.couponUpdate(HllUtil.pair(7, 15)); //mock extreme values + hllSketch.couponUpdate(HllUtil.pair(8, 15)); + hllSketch.couponUpdate(HllUtil.pair(9, 15)); + //println(hllSketch.toString(true, true, true, true)); + DirectHllArray dha = (DirectHllArray) hllSketch.hllSketchImpl; + assertEquals(dha.getAuxHashMap().getLgAuxArrInts(), 2); + assertTrue(hllSketch.isMemory()); + assertTrue(hllSketch.isOffHeap()); + assertTrue(hllSketch.isSameResource(wmem)); + + //Check heapify + byte[] byteArray = hllSketch.toCompactByteArray(); + HllSketch hllSketch2 = HllSketch.heapify(byteArray); + HllArray ha = (HllArray) hllSketch2.hllSketchImpl; + assertEquals(ha.getAuxHashMap().getLgAuxArrInts(), 2); + assertEquals(ha.getAuxHashMap().getAuxCount(), 3); + + //Check wrap + byteArray = hllSketch.toUpdatableByteArray(); + WritableMemory wmem2 = WritableMemory.writableWrap(byteArray); + hllSketch2 = HllSketch.writableWrap(wmem2); + //println(hllSketch2.toString(true, true, true, true)); + DirectHllArray dha2 = (DirectHllArray) hllSketch2.hllSketchImpl; + assertEquals(dha2.getAuxHashMap().getLgAuxArrInts(), 2); + assertEquals(dha2.getAuxHashMap().getAuxCount(), 3); + + //Check grow to on-heap + hllSketch.couponUpdate(HllUtil.pair(10, 15)); //puts it over the edge, must grow + //println(hllSketch.toString(true, true, true, true)); + dha = (DirectHllArray) hllSketch.hllSketchImpl; + assertEquals(dha.getAuxHashMap().getLgAuxArrInts(), 3); + assertEquals(dha.getAuxHashMap().getAuxCount(), 4); + assertTrue(hllSketch.isMemory()); + assertFalse(hllSketch.isOffHeap()); } @Test diff --git a/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java b/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java index 38cbc497..b19e5b36 100644 --- a/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java +++ b/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java @@ -28,7 +28,6 @@ import static org.testng.Assert.assertTrue; import org.testng.annotations.Test; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; /** @@ -69,11 +68,8 @@ public class DirectCouponListTest { //println("DIRECT"); byte[] barr1; - WritableMemory wmem = null; - try (WritableHandle hand = WritableMemory.allocateDirect(bytes)) { - wmem = hand.getWritable(); - //byte[] byteArr = new byte[bytes]; - //WritableMemory wmem = WritableMemory.wrap(byteArr); + WritableMemory wmem = WritableMemory.allocateDirect(bytes); //direct? + hllSketch = new HllSketch(lgConfigK, tgtHllType, wmem); assertTrue(hllSketch.isEmpty()); @@ -84,7 +80,7 @@ public class DirectCouponListTest { assertFalse(hllSketch.isEmpty()); assertEquals(hllSketch.getCurMode(), tgtMode); assertTrue(hllSketch.isMemory()); - assertTrue(hllSketch.isOffHeap()); + assertTrue(hllSketch.isOffHeap()); // assertTrue(hllSketch.isSameResource(wmem)); //convert direct sketch to byte[] @@ -92,9 +88,7 @@ public class DirectCouponListTest { //println(PreambleUtil.toString(barr1)); hllSketch.reset(); assertTrue(hllSketch.isEmpty()); - } catch (final Exception e) { - throw new RuntimeException(e); - } + //println("HEAP"); HllSketch hllSketch2 = new HllSketch(lgConfigK, tgtHllType); @@ -111,6 +105,9 @@ public class DirectCouponListTest { assertEquals(barr1.length, barr2.length, barr1.length + ", " + barr2.length); //printDiffs(barr1, barr2); assertEquals(barr1, barr2); + if (wmem.isCloseable()) { + wmem.close(); + } } @SuppressWarnings("unused") //only used when above printlns are enabled. diff --git a/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java b/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java index bbf89f33..039eefa0 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java @@ -26,7 +26,6 @@ import static org.testng.Assert.assertTrue; import java.util.HashSet; import org.testng.annotations.Test; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; import org.apache.datasketches.quantilescommon.QuantilesDoublesSketchIterator; @@ -61,13 +60,10 @@ public class DebugUnionTest { DoublesSketch.setRandom(1); //make deterministic for test DoublesUnion dUnion; DoublesSketch dSketch; - try ( WritableHandle wdh = WritableMemory.allocateDirect(10_000_000) ) { - WritableMemory wmem = wdh.getWritable(); + try ( WritableMemory wmem = WritableMemory.allocateDirect(10_000_000) ) { dUnion = DoublesUnion.builder().setMaxK(8).build(wmem); for (int s = 0; s < numSketches; s++) { dUnion.union(sketchArr[s]); } dSketch = dUnion.getResult(); //result is on heap - } catch (final Exception e) { - throw new RuntimeException(e); } //iterates and counts errors diff --git a/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java b/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java index 5c2882c5..c8771d80 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java @@ -30,7 +30,6 @@ import org.apache.datasketches.memory.DefaultMemoryRequestServer; import org.testng.annotations.Test; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; /** @@ -47,35 +46,30 @@ public class DirectQuantilesMemoryRequestTest { final int initBytes = ((2 * k) + 4) << 3; //just the BB //########## Owning Implementation - // This part would actually be part of the Memory owning implemention so it is faked here - try (WritableHandle wdh = WritableMemory.allocateDirect(initBytes, - ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) { - final WritableMemory wmem = wdh.getWritable(); - println("Initial mem size: " + wmem.getCapacity()); - - //########## Receiving Application - // The receiving application has been given wmem to use for a sketch, - // but alas, it is not ultimately large enough. - final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(wmem); - assertTrue(usk1.isEmpty()); - - //Load the sketch - for (int i = 0; i < u; i++) { - // The sketch uses The MemoryRequest, acquired from wmem, to acquire more memory as - // needed, and requests via the MemoryRequest to free the old allocations. - usk1.update(i); - } - final double result = usk1.getQuantile(0.5); - println("Result: " + result); - assertEquals(result, u / 2.0, 0.05 * u); //Success - - //########## Owning Implementation - //The actual Memory has been re-allocated several times, - // so the above wmem reference is invalid. - println("\nFinal mem size: " + wmem.getCapacity()); - } catch (Exception e) { - throw new RuntimeException(e); + // This part would actually be part of the Memory owning implementation so it is faked here + WritableMemory wmem = WritableMemory.allocateDirect(initBytes, ByteOrder.nativeOrder(), new DefaultMemoryRequestServer()); + println("Initial mem size: " + wmem.getCapacity()); + + //########## Receiving Application + // The receiving application has been given wmem to use for a sketch, + // but alas, it is not ultimately large enough. + final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(wmem); + assertTrue(usk1.isEmpty()); + + //Load the sketch + for (int i = 0; i < u; i++) { + // The sketch uses The MemoryRequest, acquired from wmem, to acquire more memory as + // needed, and requests via the MemoryRequest to free the old allocations. + usk1.update(i); } + final double result = usk1.getQuantile(0.5); + println("Result: " + result); + assertEquals(result, u / 2.0, 0.05 * u); //Success + + //The actual Memory has been re-allocated several times, + // so the the wmem reference is invalid. Use the sketch to get the last memory reference. + WritableMemory lastMem = usk1.getMemory(); + println("Final mem size: " + usk1.getMemory().getCapacity()); } @Test @@ -84,22 +78,16 @@ public class DirectQuantilesMemoryRequestTest { final int u = 32; // don't need the BB to fill here final int initBytes = (4 + (u / 2)) << 3; // not enough to hold everything - try (WritableHandle memHandler = WritableMemory.allocateDirect(initBytes, - ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) { - //final MemoryManager memMgr = new MemoryManager(); - //final WritableMemory mem1 = memMgr.request(initBytes); - final WritableMemory mem1 = memHandler.getWritable(); - println("Initial mem size: " + mem1.getCapacity()); - final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(mem1); - for (int i = 1; i <= u; i++) { - usk1.update(i); - } - final int currentSpace = usk1.getCombinedBufferItemCapacity(); - println("curCombBufItemCap: " + currentSpace); - assertEquals(currentSpace, 2 * k); - } catch (final Exception e) { - throw new RuntimeException(e); + WritableMemory mem1 = WritableMemory.allocateDirect(initBytes, ByteOrder.nativeOrder(), new DefaultMemoryRequestServer()); + println("Initial mem size: " + mem1.getCapacity()); + final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(mem1); + for (int i = 1; i <= u; i++) { + usk1.update(i); } + final int currentSpace = usk1.getCombinedBufferItemCapacity(); + println("curCombBufItemCap: " + currentSpace); + assertEquals(currentSpace, 2 * k); + println("last Mem Cap: " + usk1.getMemory().getCapacity()); } @Test @@ -108,26 +96,18 @@ public class DirectQuantilesMemoryRequestTest { final int u = (2 * k) - 1; //just to fill the BB final int initBytes = ((2 * k) + 4) << 3; //just room for BB - try (WritableHandle memHandler = WritableMemory.allocateDirect(initBytes, - ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) { - //final MemoryManager memMgr = new MemoryManager(); - //final WritableMemory mem1 = memMgr.request(initBytes); - final WritableMemory mem1 = memHandler.getWritable(); - println("Initial mem size: " + mem1.getCapacity()); - final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(mem1); - for (int i = 1; i <= u; i++) { - usk1.update(i); - } - final int currentSpace = usk1.getCombinedBufferItemCapacity(); - println("curCombBufItemCap: " + currentSpace); - final double[] newCB = usk1.growCombinedBuffer(currentSpace, 3 * k); - final int newSpace = usk1.getCombinedBufferItemCapacity(); - println("newCombBurItemCap: " + newSpace); - assertEquals(newCB.length, 3 * k); - //memMgr.free(mem1); - } catch (final Exception e) { - throw new RuntimeException(e); + WritableMemory mem1 = WritableMemory.allocateDirect(initBytes, ByteOrder.nativeOrder(), new DefaultMemoryRequestServer()); + println("Initial mem size: " + mem1.getCapacity()); + final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(mem1); + for (int i = 1; i <= u; i++) { + usk1.update(i); } + final int currentSpace = usk1.getCombinedBufferItemCapacity(); + println("curCombBufItemCap: " + currentSpace); + final double[] newCB = usk1.growCombinedBuffer(currentSpace, 3 * k); + final int newSpace = usk1.getCombinedBufferItemCapacity(); + println("newCombBurItemCap: " + newSpace); + assertEquals(newCB.length, 3 * k); } @Test @@ -138,28 +118,23 @@ public class DirectQuantilesMemoryRequestTest { final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(); final Memory origSketchMem = Memory.wrap(usk1.toByteArray()); - try (WritableHandle memHandle = WritableMemory.allocateDirect(initBytes, - ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) { - WritableMemory mem = memHandle.getWritable(); - origSketchMem.copyTo(0, mem, 0, initBytes); - UpdateDoublesSketch usk2 = DirectUpdateDoublesSketch.wrapInstance(mem); - assertTrue(mem.isSameResource(usk2.getMemory())); - assertEquals(mem.getCapacity(), initBytes); - assertTrue(mem.isDirect()); - assertTrue(usk2.isEmpty()); - - //update the sketch forcing it to grow on-heap - for (int i = 1; i <= 5; i++) { usk2.update(i); } - assertEquals(usk2.getN(), 5); - WritableMemory mem2 = usk2.getMemory(); - assertFalse(mem.isSameResource(mem2)); - assertFalse(mem2.isDirect()); //should now be on-heap - - final int expectedSize = COMBINED_BUFFER + ((2 * k) << 3); - assertEquals(mem2.getCapacity(), expectedSize); - } catch (final Exception e) { - throw new RuntimeException(e); - } + WritableMemory mem = WritableMemory.allocateDirect(initBytes, ByteOrder.nativeOrder(), new DefaultMemoryRequestServer()); + origSketchMem.copyTo(0, mem, 0, initBytes); + UpdateDoublesSketch usk2 = DirectUpdateDoublesSketch.wrapInstance(mem); + assertTrue(mem.isSameResource(usk2.getMemory())); + assertEquals(mem.getCapacity(), initBytes); + assertTrue(mem.isDirect()); + assertTrue(usk2.isEmpty()); + + //update the sketch forcing it to grow on-heap + for (int i = 1; i <= 5; i++) { usk2.update(i); } + assertEquals(usk2.getN(), 5); + WritableMemory mem2 = usk2.getMemory(); + assertFalse(mem.isAlive()); // + assertFalse(mem2.isDirect()); //should now be on-heap + + final int expectedSize = COMBINED_BUFFER + ((2 * k) << 3); + assertEquals(mem2.getCapacity(), expectedSize); } @Test @@ -171,7 +146,7 @@ public class DirectQuantilesMemoryRequestTest { * @param s value to print */ static void println(final String s) { - //System.out.println(s); //disable here + System.out.println(s); //disable here } } diff --git a/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java b/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java index 5bc5b4ea..3f64db65 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java @@ -28,7 +28,6 @@ import static org.testng.Assert.fail; import java.nio.ByteOrder; import org.apache.datasketches.memory.DefaultMemoryRequestServer; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; import org.apache.datasketches.quantilescommon.DoublesSortedView; import org.apache.datasketches.quantilescommon.DoublesSortedViewIterator; @@ -140,50 +139,36 @@ public class DoublesSketchTest { @Test public void directSketchShouldMoveOntoHeapEventually() { - try (WritableHandle wdh = WritableMemory.allocateDirect(1000, - ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) { - WritableMemory mem = wdh.getWritable(); - UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem); - Assert.assertTrue(sketch.isSameResource(mem)); - for (int i = 0; i < 1000; i++) { - sketch.update(i); - } - Assert.assertFalse(sketch.isSameResource(mem)); - } catch (final Exception e) { - throw new RuntimeException(e); + WritableMemory mem = WritableMemory.allocateDirect(1000, ByteOrder.nativeOrder(), new DefaultMemoryRequestServer()); + UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem); + Assert.assertTrue(sketch.isSameResource(mem)); + for (int i = 0; i < 1000; i++) { + sketch.update(i); } + println(sketch.toString()); } @Test public void directSketchShouldMoveOntoHeapEventually2() { int i = 0; - try (WritableHandle wdh = - WritableMemory.allocateDirect(50, ByteOrder.LITTLE_ENDIAN, new DefaultMemoryRequestServer())) { - WritableMemory mem = wdh.getWritable(); - UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem); - Assert.assertTrue(sketch.isSameResource(mem)); - for (; i < 1000; i++) { - if (sketch.isSameResource(mem)) { - sketch.update(i); - } else { - //println("MOVED OUT at i = " + i); - break; - } + WritableMemory mem = WritableMemory.allocateDirect(50, ByteOrder.LITTLE_ENDIAN, new DefaultMemoryRequestServer()); + UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem); + Assert.assertTrue(sketch.isSameResource(mem)); + for (; i < 1000; i++) { + if (mem.isAlive()) { + sketch.update(i); + } else { + println("Sketch Move to Heap at i = " + i); + break; } - } catch (final Exception e) { - throw new RuntimeException(e); } } @Test public void checkEmptyDirect() { - try (WritableHandle wdh = WritableMemory.allocateDirect(1000)) { - WritableMemory mem = wdh.getWritable(); - UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem); - sketch.toByteArray(); //exercises a specific path - } catch (final Exception e) { - throw new RuntimeException(e); - } + WritableMemory mem = WritableMemory.allocateDirect(1000); + UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem); + sketch.toByteArray(); //exercises a specific path } @Test diff --git a/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java b/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java index be2f328b..07f68063 100644 --- a/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java @@ -40,7 +40,6 @@ import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; public class PreambleUtilTest { @@ -48,8 +47,7 @@ public class PreambleUtilTest { @Test public void checkInsertsAndExtracts() { final int bytes = 32; - try (WritableHandle offHeapMemHandler = WritableMemory.allocateDirect(bytes)) { - final WritableMemory offHeapMem = offHeapMemHandler.getWritable(); + try (WritableMemory offHeapMem = WritableMemory.allocateDirect(bytes)) { final WritableMemory onHeapMem = WritableMemory.writableWrap(new byte[bytes]); onHeapMem.clear(); @@ -156,8 +154,6 @@ public class PreambleUtilTest { assertEquals(offHD, vD); onHeapMem.clear(); offHeapMem.clear(); - } catch (final Exception e) { - throw new RuntimeException(e); } } diff --git a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java index 42b6069d..70db8c78 100644 --- a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java +++ b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java @@ -29,7 +29,6 @@ import static org.testng.Assert.assertTrue; import org.apache.datasketches.common.Family; import org.apache.datasketches.common.SketchesArgumentException; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; import org.testng.annotations.Test; @@ -78,8 +77,7 @@ public class CompactSketchTest { //Prepare Memory for direct int bytes = usk.getCompactBytes(); //for Compact - try (WritableHandle wdh = WritableMemory.allocateDirect(bytes)) { - WritableMemory directMem = wdh.getWritable(); + try (WritableMemory directMem = WritableMemory.allocateDirect(bytes)) { /**Via CompactSketch.compact**/ refSk = usk.compact(ordered, directMem); @@ -90,8 +88,6 @@ public class CompactSketchTest { /**Via CompactSketch.compact**/ testSk = (CompactSketch)Sketch.wrap(directMem); checkByRange(refSk, testSk, u, ordered); - } catch (final Exception e) { - throw new RuntimeException(e); } } diff --git a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java index 5191c7c6..4830f957 100644 --- a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java +++ b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java @@ -45,7 +45,6 @@ import org.apache.datasketches.common.ResizeFactor; import org.apache.datasketches.common.SketchesArgumentException; import org.apache.datasketches.common.SketchesReadOnlyException; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; import org.apache.datasketches.thetacommon.HashOperations; import org.apache.datasketches.thetacommon.ThetaUtil; @@ -56,19 +55,15 @@ import org.testng.annotations.Test; */ public class DirectQuickSelectSketchTest { - @Test//(expectedExceptions = SketchesArgumentException.class) + @Test(expectedExceptions = SketchesArgumentException.class) public void checkBadSerVer() { int k = 512; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks - assertTrue(usk.isEmpty()); for (int i = 0; i< k; i++) { usk.update(i); } - assertFalse(usk.isEmpty()); assertEquals(usk.getEstimate(), k, 0.0); assertEquals(sk1.getRetainedEntries(false), k); @@ -76,17 +71,13 @@ public class DirectQuickSelectSketchTest { mem.putByte(SER_VER_BYTE, (byte) 0); //corrupt the SerVer byte Sketch.wrap(mem); - } catch (final Exception e) { - if (e instanceof SketchesArgumentException) {} - else { throw new RuntimeException(e); } } } @Test//(expectedExceptions = SketchesArgumentException.class) public void checkConstructorKtooSmall() { int k = 8; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch.builder().setNominalEntries(k).build(mem); } catch (final Exception e) { if (e instanceof SketchesArgumentException) {} @@ -97,8 +88,7 @@ public class DirectQuickSelectSketchTest { @Test//(expectedExceptions = SketchesArgumentException.class) public void checkConstructorMemTooSmall() { int k = 16; - try (WritableHandle h = makeNativeMemory(k/2)) { - WritableMemory mem = h.getWritable(); + try (WritableMemory mem = makeNativeMemory(k/2)) { UpdateSketch.builder().setNominalEntries(k).build(mem); } catch (final Exception e) { if (e instanceof SketchesArgumentException) {} @@ -124,9 +114,7 @@ public class DirectQuickSelectSketchTest { int k = 512; int u = 2*k; //thus estimating - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch sk1 = UpdateSketch.builder().setNominalEntries(k).build(mem); for (int i=0; i<u; i++) { sk1.update(i); } @@ -158,8 +146,6 @@ public class DirectQuickSelectSketchTest { assertFalse(sk2.isDirect()); assertFalse(sk2.hasMemory()); assertFalse(sk2.isDirty()); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -168,7 +154,6 @@ public class DirectQuickSelectSketchTest { int k = 512; int maxBytes = (k << 4) + (Family.QUICKSELECT.getMinPreLongs() << 3); WritableMemory mem = WritableMemory.writableWrap(new byte[maxBytes]); - UpdateSketch.builder().setNominalEntries(k).build(mem); mem.putByte(FAMILY_BYTE, (byte) 0); //corrupt the Sketch ID byte @@ -182,7 +167,6 @@ public class DirectQuickSelectSketchTest { int k = 512; int maxBytes = (k << 4) + (Family.QUICKSELECT.getMinPreLongs() << 3); WritableMemory mem = WritableMemory.writableWrap(new byte[maxBytes]); - UpdateSketch.builder().setNominalEntries(k).build(mem); mem.putByte(FAMILY_BYTE, (byte) 0); //corrupt the Sketch ID byte @@ -191,44 +175,33 @@ public class DirectQuickSelectSketchTest { DirectQuickSelectSketch.writableWrap(mem, ThetaUtil.DEFAULT_UPDATE_SEED); } - @Test //(expectedExceptions = SketchesArgumentException.class) + @Test (expectedExceptions = SketchesArgumentException.class) public void checkHeapifySeedConflict() { int k = 512; long seed1 = 1021; long seed2 = ThetaUtil.DEFAULT_UPDATE_SEED; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setSeed(seed1).setNominalEntries(k).build(mem); byte[] byteArray = usk.toByteArray(); Memory srcMem = Memory.wrap(byteArray); Sketch.heapify(srcMem, seed2); - } catch (final Exception e) { - if (e instanceof SketchesArgumentException) {} - else { throw new RuntimeException(e); } } } - @Test//(expectedExceptions = SketchesArgumentException.class) + @Test(expectedExceptions = SketchesArgumentException.class) public void checkCorruptLgNomLongs() { int k = 16; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch.builder().setNominalEntries(k).build(mem); mem.putByte(LG_NOM_LONGS_BYTE, (byte)2); //corrupt Sketch.heapify(mem, ThetaUtil.DEFAULT_UPDATE_SEED); - } catch (final Exception e) { - if (e instanceof SketchesArgumentException) {} - else { throw new RuntimeException(e); } } } @Test public void checkHeapifyByteArrayExact() { int k = 512; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); for (int i=0; i< k; i++) { usk.update(i); } @@ -250,8 +223,6 @@ public class DirectQuickSelectSketchTest { // That is, this is being run for its side-effect of accessing things. // If something is wonky, it will generate an exception and fail the test. usk2.toString(true, true, 8, true); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -259,8 +230,7 @@ public class DirectQuickSelectSketchTest { public void checkHeapifyByteArrayEstimating() { int k = 4096; int u = 2*k; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); for (int i=0; i<u; i++) { usk.update(i); } @@ -279,8 +249,6 @@ public class DirectQuickSelectSketchTest { assertEquals(usk2.isEmpty(), false); assertEquals(usk2.isEstimationMode(), true); assertEquals(usk2.getClass().getSimpleName(), "HeapQuickSelectSketch"); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -288,9 +256,7 @@ public class DirectQuickSelectSketchTest { public void checkWrapMemoryEst() { int k = 512; int u = 2*k; //thus estimating - - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch sk1 = UpdateSketch.builder().setNominalEntries(k).build(mem); for (int i=0; i<u; i++) { sk1.update(i); } @@ -306,8 +272,6 @@ public class DirectQuickSelectSketchTest { assertEquals(sk2.getUpperBound(2), sk1ub); assertEquals(sk2.isEmpty(), false); assertTrue(sk2.isEstimationMode()); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -315,9 +279,7 @@ public class DirectQuickSelectSketchTest { public void checkDQStoCompactForms() { int k = 512; int u = 4*k; //thus estimating - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks @@ -377,17 +339,13 @@ public class DirectQuickSelectSketchTest { assertTrue(csk.isEstimationMode()); assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch"); csk.toString(false, true, 0, false); - } catch (final Exception e) { - throw new RuntimeException(e); } } @Test public void checkDQStoCompactEmptyForms() { int k = 512; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); //empty @@ -420,9 +378,6 @@ public class DirectQuickSelectSketchTest { assertEquals(csk3.isEmpty(), true); assertEquals(csk3.isEstimationMode(), false); assertEquals(csk3.getClass().getSimpleName(), "DirectCompactSketch"); - } catch (final Exception e) { - //if (e instanceof SketchesArgumentException) {} - throw new RuntimeException(e); } } @@ -431,9 +386,7 @@ public class DirectQuickSelectSketchTest { int k = 4096; int u = 2*k; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks @@ -442,8 +395,6 @@ public class DirectQuickSelectSketchTest { for (int i = 0; i< u; i++) { usk.update(i); } assertTrue(sk1.getRetainedEntries(false) > k); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -452,9 +403,7 @@ public class DirectQuickSelectSketchTest { int k = 4096; float p = (float)0.5; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setP(p).setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks @@ -470,17 +419,13 @@ public class DirectQuickSelectSketchTest { assertTrue(ub > est); double lb = usk.getLowerBound(1); assertTrue(lb < est); - } catch (final Exception e) { - throw new RuntimeException(e); } } @Test public void checkErrorBounds() { int k = 512; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); //Exact mode @@ -503,8 +448,6 @@ public class DirectQuickSelectSketchTest { ub = usk.getUpperBound(2); assertTrue(est <= ub); assertTrue(est >= lb); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -514,9 +457,7 @@ public class DirectQuickSelectSketchTest { //virgin, p = 1.0 int k = 1024; float p = (float)1.0; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setP(p).setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks @@ -545,8 +486,6 @@ public class DirectQuickSelectSketchTest { double lb = usk2.getLowerBound(2); assertTrue(lb <= est); //println("LB: "+lb); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -554,9 +493,7 @@ public class DirectQuickSelectSketchTest { public void checkUpperAndLowerBounds() { int k = 512; int u = 2*k; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); for (int i = 0; i < u; i++ ) { usk.update(i); } @@ -566,8 +503,6 @@ public class DirectQuickSelectSketchTest { double lb = usk.getLowerBound(1); assertTrue(ub > est); assertTrue(lb < est); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -575,9 +510,7 @@ public class DirectQuickSelectSketchTest { public void checkRebuild() { int k = 512; int u = 4*k; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks @@ -595,8 +528,6 @@ public class DirectQuickSelectSketchTest { sk1.rebuild(); assertEquals(sk1.getRetainedEntries(false), k); assertEquals(sk1.getRetainedEntries(true), k); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -604,9 +535,7 @@ public class DirectQuickSelectSketchTest { public void checkResetAndStartingSubMultiple() { int k = 512; int u = 4*k; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks @@ -626,8 +555,6 @@ public class DirectQuickSelectSketchTest { assertNotNull(sk1.getMemory()); assertFalse(sk1.isOrdered()); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -635,9 +562,7 @@ public class DirectQuickSelectSketchTest { public void checkExactModeMemoryArr() { int k = 4096; int u = 4096; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks assertTrue(usk.isEmpty()); @@ -646,8 +571,6 @@ public class DirectQuickSelectSketchTest { assertEquals(usk.getEstimate(), u, 0.0); assertEquals(sk1.getRetainedEntries(false), u); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -656,9 +579,7 @@ public class DirectQuickSelectSketchTest { int k = 4096; int u = 2*k; - try (WritableHandle h = makeNativeMemory(k)) { - WritableMemory mem = h.getWritable(); - + try (WritableMemory mem = makeNativeMemory(k)) { UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks assertTrue(usk.isEmpty()); @@ -667,8 +588,6 @@ public class DirectQuickSelectSketchTest { assertEquals(usk.getEstimate(), u, u*.05); assertTrue(sk1.getRetainedEntries(false) > k); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -678,9 +597,8 @@ public class DirectQuickSelectSketchTest { int u = 2*k; int memCapacity = (k << 4) + (Family.QUICKSELECT.getMinPreLongs() << 3); - try(WritableHandle memHandler = WritableMemory.allocateDirect(memCapacity)) { - - UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(memHandler.getWritable()); + try(WritableMemory mem = WritableMemory.allocateDirect(memCapacity)) { + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks assertTrue(usk.isEmpty()); @@ -689,8 +607,6 @@ public class DirectQuickSelectSketchTest { println(""+est); assertEquals(usk.getEstimate(), u, u*.05); assertTrue(sk1.getRetainedEntries(false) > k); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -699,8 +615,8 @@ public class DirectQuickSelectSketchTest { int k = 4096; int u = 2*k; - try (WritableHandle h = makeNativeMemory(k)) { - UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(h.getWritable()); + try (WritableMemory mem = makeNativeMemory(k)) { + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem); assertTrue(usk.isEmpty()); for (int i = 0; i< u; i++) { usk.update(i); } //force estimation @@ -726,8 +642,6 @@ public class DirectQuickSelectSketchTest { assertEquals(count2, count1); assertEquals(est2, est1, 0.0); - } catch (final Exception e) { - throw new RuntimeException(e); } } @@ -868,15 +782,12 @@ public class DirectQuickSelectSketchTest { int k = 1 << 12; int u = 2 * k; int bytes = Sketches.getMaxUpdateSketchBytes(k); - try (WritableHandle wdh = WritableMemory.allocateDirect(bytes/2)) { //will request - WritableMemory wmem = wdh.getWritable(); - UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem); - assertTrue(sketch.isSameResource(wmem)); - for (int i = 0; i < u; i++) { sketch.update(i); } - assertFalse(sketch.isSameResource(wmem)); - } catch (final Exception e) { - throw new RuntimeException(e); - } + WritableMemory wmem = WritableMemory.allocateDirect(bytes/2); //will request + UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem); + assertTrue(sketch.isSameResource(wmem)); + for (int i = 0; i < u; i++) { sketch.update(i); } + assertTrue(sketch.getMemory().isAlive()); + assertFalse(wmem.isAlive()); } @Test @@ -884,35 +795,29 @@ public class DirectQuickSelectSketchTest { int k = 1 << 12; int u = 2 * k; int bytes = Sketches.getMaxUpdateSketchBytes(k); - try (WritableHandle wdh = WritableMemory.allocateDirect(bytes/2)) { //will request - WritableMemory wmem = wdh.getWritable(); - UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem); - for (int i = 0; i < u; i++) { sketch.update(i); } - double est1 = sketch.getEstimate(); - byte[] ser = sketch.toByteArray(); - Memory mem = Memory.wrap(ser); - UpdateSketch roSketch = (UpdateSketch) Sketches.wrapSketch(mem); - double est2 = roSketch.getEstimate(); - assertEquals(est2, est1); - try { - roSketch.rebuild(); - fail(); - } catch (SketchesReadOnlyException e) { - //expected - } - try { - roSketch.reset(); - fail(); - } catch (SketchesReadOnlyException e) { - //expected - } - } catch (final Exception e) { - throw new RuntimeException(e); + WritableMemory wmem = WritableMemory.allocateDirect(bytes/2); //will request + UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem); + for (int i = 0; i < u; i++) { sketch.update(i); } + double est1 = sketch.getEstimate(); + byte[] ser = sketch.toByteArray(); + Memory mem = Memory.wrap(ser); + UpdateSketch roSketch = (UpdateSketch) Sketches.wrapSketch(mem); + double est2 = roSketch.getEstimate(); + assertEquals(est2, est1); + try { + roSketch.rebuild(); + fail(); + } catch (SketchesReadOnlyException e) { + //expected + } + try { + roSketch.reset(); + fail(); + } catch (SketchesReadOnlyException e) { + //expected } - } - @Test public void printlnTest() { println("PRINTING: "+this.getClass().getName()); @@ -929,7 +834,7 @@ public class DirectQuickSelectSketchTest { return (k << 4) + (Family.QUICKSELECT.getMinPreLongs() << 3); } - private static WritableHandle makeNativeMemory(int k) { + private static WritableMemory makeNativeMemory(int k) { return WritableMemory.allocateDirect(getMaxBytes(k)); } diff --git a/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java b/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java index bd7652bd..0e88c455 100644 --- a/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java +++ b/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java @@ -24,7 +24,6 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; import org.apache.datasketches.thetacommon.ThetaUtil; import org.apache.datasketches.tuple.Util; @@ -39,29 +38,29 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = ThetaUtil.DEFAULT_UPDATE_SEED; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - - CompactSketch sv3csk = sv3usk.compact(); - Memory sv3cskMem = Memory.wrap(sv3csk.toByteArray()); - CompactSketch sv3cskResult; - - //SV3 test - sv3cskResult = Sketches.heapifyCompactSketch(sv3cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV2 test - Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed); - sv3cskResult = Sketches.heapifyCompactSketch(sv2cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV1 test - Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(sv3csk); - sv3cskResult = Sketches.heapifyCompactSketch(sv1cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + + CompactSketch csk = usk.compact(); + Memory cskMem = Memory.wrap(csk.toByteArray()); + CompactSketch cskResult; + + //SerialVersion3 test + cskResult = Sketches.heapifyCompactSketch(cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion2 test + Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(csk, seed); + cskResult = Sketches.heapifyCompactSketch(sv2cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion1 test + Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(csk); + cskResult = Sketches.heapifyCompactSketch(sv1cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); } @Test @@ -69,29 +68,29 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = 128L; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - - CompactSketch sv3csk = sv3usk.compact(); - Memory sv3cskMem = Memory.wrap(sv3csk.toByteArray()); - CompactSketch sv3cskResult; - - //SV3 test - sv3cskResult = Sketches.heapifyCompactSketch(sv3cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV2 test - Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed); - sv3cskResult = Sketches.heapifyCompactSketch(sv2cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV1 test - Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(sv3csk); - sv3cskResult = Sketches.heapifyCompactSketch(sv1cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), defaultSeedHash); + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + + CompactSketch csk = usk.compact(); + Memory cskMem = Memory.wrap(csk.toByteArray()); + CompactSketch cskResult; + + //SerialVersion3 test + cskResult = Sketches.heapifyCompactSketch(cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion2 test + Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(csk, seed); + cskResult = Sketches.heapifyCompactSketch(sv2cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion1 test + Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(csk); + cskResult = Sketches.heapifyCompactSketch(sv1cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), defaultSeedHash); } @Test @@ -99,29 +98,29 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = ThetaUtil.DEFAULT_UPDATE_SEED; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - - CompactSketch sv3csk = sv3usk.compact(); - Memory sv3cskMem = Memory.wrap(sv3csk.toByteArray()); - CompactSketch sv3cskResult; - - //SV3 test - sv3cskResult = Sketches.heapifyCompactSketch(sv3cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV2 test - Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed); - sv3cskResult = Sketches.heapifyCompactSketch(sv2cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV1 test - Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(sv3csk); - sv3cskResult = Sketches.heapifyCompactSketch(sv1cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + + CompactSketch csk = usk.compact(); + Memory cskMem = Memory.wrap(csk.toByteArray()); + CompactSketch cskResult; + + //SerialVersion3 test + cskResult = Sketches.heapifyCompactSketch(cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion2 test + Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(csk, seed); + cskResult = Sketches.heapifyCompactSketch(sv2cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion1 test + Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(csk); + cskResult = Sketches.heapifyCompactSketch(sv1cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); } @Test @@ -129,29 +128,29 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = 128L; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - - CompactSketch sv3csk = sv3usk.compact(); - Memory sv3cskMem = Memory.wrap(sv3csk.toByteArray()); - CompactSketch sv3cskResult; - - //SV3 test - sv3cskResult = Sketches.heapifyCompactSketch(sv3cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV2 test - Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed); - sv3cskResult = Sketches.heapifyCompactSketch(sv2cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV1 test - Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(sv3csk); - sv3cskResult = Sketches.heapifyCompactSketch(sv1cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + + CompactSketch csk = usk.compact(); + Memory cskMem = Memory.wrap(csk.toByteArray()); + CompactSketch cskResult; + + //SerialVersion3 test + cskResult = Sketches.heapifyCompactSketch(cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion2 test + Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(csk, seed); + cskResult = Sketches.heapifyCompactSketch(sv2cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion1 test + Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(csk); + cskResult = Sketches.heapifyCompactSketch(sv1cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); } @Test @@ -159,29 +158,29 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = ThetaUtil.DEFAULT_UPDATE_SEED; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - - CompactSketch sv3csk = sv3usk.compact(); - Memory sv3cskMem = Memory.wrap(sv3csk.toByteArray()); - CompactSketch sv3cskResult; - - //SV3 test - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv3cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV2 test - Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed); - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv2cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV1 test - Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(sv3csk); - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv1cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + + CompactSketch csk = usk.compact(); + Memory cskMem = Memory.wrap(csk.toByteArray()); + CompactSketch cskResult; + + //SerialVersion3 test + cskResult = (CompactSketch) Sketches.heapifySketch(cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion2 test + Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(csk, seed); + cskResult = (CompactSketch) Sketches.heapifySketch(sv2cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion1 test + Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(csk); + cskResult = (CompactSketch) Sketches.heapifySketch(sv1cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); } @Test @@ -189,29 +188,29 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = 128L; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - - CompactSketch sv3csk = sv3usk.compact(); - Memory sv3cskMem = Memory.wrap(sv3csk.toByteArray()); - CompactSketch sv3cskResult; - - //SV3 test - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv3cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV2 test - Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed); - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv2cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV1 test - Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(sv3csk); - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv1cskMem); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), defaultSeedHash); + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + + CompactSketch csk = usk.compact(); + Memory cskMem = Memory.wrap(csk.toByteArray()); + CompactSketch cskResult; + + //SerialVersion3 test + cskResult = (CompactSketch) Sketches.heapifySketch(cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion2 test + Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(csk, seed); + cskResult = (CompactSketch) Sketches.heapifySketch(sv2cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion1 test + Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(csk); + cskResult = (CompactSketch) Sketches.heapifySketch(sv1cskMem); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), defaultSeedHash); } @Test @@ -219,29 +218,29 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = ThetaUtil.DEFAULT_UPDATE_SEED; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - - CompactSketch sv3csk = sv3usk.compact(); - Memory sv3cskMem = Memory.wrap(sv3csk.toByteArray()); - CompactSketch sv3cskResult; - - //SV3 test - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv3cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV2 test - Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed); - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv2cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV1 test - Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(sv3csk); - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv1cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + + CompactSketch csk = usk.compact(); + Memory cskMem = Memory.wrap(csk.toByteArray()); + CompactSketch cskResult; + + //SerialVersion3 test + cskResult = (CompactSketch) Sketches.heapifySketch(cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion2 test + Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(csk, seed); + cskResult = (CompactSketch) Sketches.heapifySketch(sv2cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion1 test + Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(csk); + cskResult = (CompactSketch) Sketches.heapifySketch(sv1cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); } @Test @@ -249,29 +248,29 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = 128L; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - - CompactSketch sv3csk = sv3usk.compact(); - Memory sv3cskMem = Memory.wrap(sv3csk.toByteArray()); - CompactSketch sv3cskResult; - - //SV3 test - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv3cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV2 test - Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed); - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv2cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - - //SV1 test - Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(sv3csk); - sv3cskResult = (CompactSketch) Sketches.heapifySketch(sv1cskMem, seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + + CompactSketch csk = usk.compact(); + Memory cskMem = Memory.wrap(csk.toByteArray()); + CompactSketch cskResult; + + //SerialVersion3 test + cskResult = (CompactSketch) Sketches.heapifySketch(cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion2 test + Memory sv2cskMem = BackwardConversions.convertSerVer3toSerVer2(csk, seed); + cskResult = (CompactSketch) Sketches.heapifySketch(sv2cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + + //SerialVersion1 test + Memory sv1cskMem = BackwardConversions.convertSerVer3toSerVer1(csk); + cskResult = (CompactSketch) Sketches.heapifySketch(sv1cskMem, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); } @Test @@ -279,35 +278,35 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = ThetaUtil.DEFAULT_UPDATE_SEED; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - CompactSketch sv3cskResult; - WritableHandle wh; - CompactSketch sv3csk = sv3usk.compact(); - - //SV3 test - wh = putOffHeap(Memory.wrap(sv3csk.toByteArray())); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertTrue(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV2 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed)); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV1 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk)); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + CompactSketch cskResult; + WritableMemory offHeap; + CompactSketch csk = usk.compact(); + + //SerialVersion3 test + offHeap = putOffHeap(Memory.wrap(csk.toByteArray())); + cskResult = Sketches.wrapCompactSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertTrue(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion2 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(csk, seed)); + cskResult = Sketches.wrapCompactSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion1 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(csk)); + cskResult = Sketches.wrapCompactSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } } @Test @@ -315,35 +314,35 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = 128L; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - CompactSketch sv3cskResult; - WritableHandle wh; - CompactSketch sv3csk = sv3usk.compact(); - - //SV3 test - wh = putOffHeap(Memory.wrap(sv3csk.toByteArray())); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertTrue(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV2 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed)); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV1 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk)); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), defaultSeedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + CompactSketch cskResult; + WritableMemory offHeap; + CompactSketch csk = usk.compact(); + + //SerialVersion3 test + offHeap = putOffHeap(Memory.wrap(csk.toByteArray())); + cskResult = Sketches.wrapCompactSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertTrue(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion2 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(csk, seed)); + cskResult = Sketches.wrapCompactSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion1 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(csk)); + cskResult = Sketches.wrapCompactSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), defaultSeedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } } @Test @@ -351,35 +350,35 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = ThetaUtil.DEFAULT_UPDATE_SEED; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - CompactSketch sv3cskResult; - WritableHandle wh; - CompactSketch sv3csk = sv3usk.compact(); - - //SV3 test - wh = putOffHeap(Memory.wrap(sv3csk.toByteArray())); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertTrue(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV2 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed)); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV1 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk)); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {/* ignore */} + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + CompactSketch cskResult; + WritableMemory offHeap; + CompactSketch csk = usk.compact(); + + //SerialVersion3 test + offHeap = putOffHeap(Memory.wrap(csk.toByteArray())); + cskResult = Sketches.wrapCompactSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertTrue(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion2 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(csk, seed)); + cskResult = Sketches.wrapCompactSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion1 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(csk)); + cskResult = Sketches.wrapCompactSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } } @Test @@ -387,35 +386,35 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = 128L; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - CompactSketch sv3cskResult; - WritableHandle wh; - CompactSketch sv3csk = sv3usk.compact(); - - //SV3 test - wh = putOffHeap(Memory.wrap(sv3csk.toByteArray())); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertTrue(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV2 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed)); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV1 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk)); - sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + CompactSketch cskResult; + WritableMemory offHeap; + CompactSketch csk = usk.compact(); + + //SerialVersion3 test + offHeap = putOffHeap(Memory.wrap(csk.toByteArray())); + cskResult = Sketches.wrapCompactSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertTrue(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion2 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(csk, seed)); + cskResult = Sketches.wrapCompactSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion1 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(csk)); + cskResult = Sketches.wrapCompactSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } } @Test @@ -423,35 +422,35 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = ThetaUtil.DEFAULT_UPDATE_SEED; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - CompactSketch sv3cskResult; - WritableHandle wh; - CompactSketch sv3csk = sv3usk.compact(); - - //SV3 test - wh = putOffHeap(Memory.wrap(sv3csk.toByteArray())); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertTrue(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV2 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed)); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV1 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk)); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + CompactSketch cskResult; + WritableMemory offHeap; + CompactSketch csk = usk.compact(); + + //SerialVersion3 test + offHeap = putOffHeap(Memory.wrap(csk.toByteArray())); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertTrue(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion2 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(csk, seed)); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion1 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(csk)); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } } @Test @@ -459,35 +458,35 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = 128L; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - CompactSketch sv3cskResult; - WritableHandle wh; - CompactSketch sv3csk = sv3usk.compact(); - - //SV3 test - wh = putOffHeap(Memory.wrap(sv3csk.toByteArray())); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertTrue(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV2 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed)); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV1 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk)); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable()); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), defaultSeedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + CompactSketch cskResult; + WritableMemory offHeap; + CompactSketch csk = usk.compact(); + + //SerialVersion3 test + offHeap = putOffHeap(Memory.wrap(csk.toByteArray())); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertTrue(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion2 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(csk, seed)); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion1 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(csk)); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), defaultSeedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } } @Test @@ -495,35 +494,35 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = ThetaUtil.DEFAULT_UPDATE_SEED; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - CompactSketch sv3cskResult; - WritableHandle wh; - CompactSketch sv3csk = sv3usk.compact(); - - //SV3 test - wh = putOffHeap(Memory.wrap(sv3csk.toByteArray())); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertTrue(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV2 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed)); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV1 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk)); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i=0; i<k; i++) { usk.update(i); } + CompactSketch cskResult; + WritableMemory offHeap; + CompactSketch csk = usk.compact(); + + //SerialVersion3 test + offHeap = putOffHeap(Memory.wrap(csk.toByteArray())); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertTrue(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion2 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(csk, seed)); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion1 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(csk)); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } } @Test @@ -531,43 +530,42 @@ public class HeapifyWrapSerVer1and2Test { final int k = 64; final long seed = 128L; final short seedHash = Util.computeSeedHash(seed); - UpdateSketch sv3usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); - for (int i=0; i<k; i++) { sv3usk.update(i); } - CompactSketch sv3cskResult; - WritableHandle wh; - CompactSketch sv3csk = sv3usk.compact(); - - //SV3 test - wh = putOffHeap(Memory.wrap(sv3csk.toByteArray())); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertTrue(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV2 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed)); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} - - //SV1 test - wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk)); - sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed); - assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate()); - assertEquals(sv3cskResult.getSeedHash(), seedHash); - assertFalse(sv3cskResult.isDirect()); - try { wh.close(); } catch (Exception e) {} + UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build(); + for (int i = 0; i < k; i++) { usk.update(i); } + CompactSketch cskResult; + WritableMemory offHeap; + CompactSketch csk = usk.compact(); + + //SerialVersion3 test + offHeap = putOffHeap(Memory.wrap(csk.toByteArray())); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertTrue(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion2 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(csk, seed)); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } + + //SerialVersion1 test + offHeap = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(csk)); + cskResult = (CompactSketch) Sketches.wrapSketch(offHeap, seed); + assertEquals(cskResult.getEstimate(), usk.getEstimate()); + assertEquals(cskResult.getSeedHash(), seedHash); + assertFalse(cskResult.isDirect()); + try { offHeap.close(); } catch (Exception e) { throw new RuntimeException(e); } } - private static WritableHandle putOffHeap(Memory heapMem) { + private static WritableMemory putOffHeap(Memory heapMem) { final long cap = heapMem.getCapacity(); - WritableHandle wh = WritableMemory.allocateDirect(cap); - WritableMemory wmem = wh.getWritable(); + WritableMemory wmem = WritableMemory.allocateDirect(cap); heapMem.copyTo(0, wmem, 0, cap); - return wh; + return wmem; } @Test diff --git a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java index 4a3de896..2883b4e1 100644 --- a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java +++ b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java @@ -27,7 +27,6 @@ import static org.testng.Assert.assertTrue; import org.apache.datasketches.common.SketchesArgumentException; import org.apache.datasketches.memory.Memory; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; import org.apache.datasketches.thetacommon.ThetaUtil; import org.testng.annotations.Test; @@ -192,24 +191,19 @@ public class UnionImplTest { final int k = 1 << 12; final int u = 2 * k; final int bytes = Sketches.getMaxUpdateSketchBytes(k); - try (WritableHandle wh = WritableMemory.allocateDirect(bytes/2); - WritableHandle wh2 = WritableMemory.allocateDirect(bytes/2) ) { - final WritableMemory wmem = wh.getWritable(); - final UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem); - assertTrue(sketch.isSameResource(wmem)); - - final WritableMemory wmem2 = wh2.getWritable(); - final Union union = SetOperation.builder().buildUnion(wmem2); - assertTrue(union.isSameResource(wmem2)); - - for (int i = 0; i < u; i++) { union.update(i); } - assertFalse(union.isSameResource(wmem)); - - final Union union2 = SetOperation.builder().buildUnion(); //on-heap union - assertFalse(union2.isSameResource(wmem2)); //obviously not - } catch (final Exception e) { - throw new RuntimeException(e); - } + WritableMemory wmem = WritableMemory.allocateDirect(bytes / 2); + WritableMemory wmem2 = WritableMemory.allocateDirect(bytes / 2); + final UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem); + assertTrue(sketch.isSameResource(wmem)); + + final Union union = SetOperation.builder().buildUnion(wmem2); + assertTrue(union.isSameResource(wmem2)); + + for (int i = 0; i < u; i++) { union.update(i); } + assertFalse(union.isSameResource(wmem)); + + final Union union2 = SetOperation.builder().buildUnion(); //on-heap union + assertFalse(union2.isSameResource(wmem2)); //obviously not } @Test @@ -230,15 +224,12 @@ public class UnionImplTest { final double est1 = sk.getEstimate(); final int bytes = Sketches.getMaxCompactSketchBytes(sk.getRetainedEntries(true)); - try (WritableHandle h = WritableMemory.allocateDirect(bytes)) { - final WritableMemory wmem = h.getWritable(); + try (WritableMemory wmem = WritableMemory.allocateDirect(bytes)) { final CompactSketch csk = sk.compact(true, wmem); //ordered, direct final Union union = Sketches.setOperationBuilder().buildUnion(); union.union(csk); final double est2 = union.getResult().getEstimate(); assertEquals(est2, est1); - } catch (final Exception e) { - throw new RuntimeException(e); } } diff --git a/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java b/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java index 76f4707a..ca30f47f 100644 --- a/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java +++ b/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java @@ -213,8 +213,8 @@ public class UpdateSketchTest { UpdateSketch sk = Sketches.updateSketchBuilder().setLogNominalEntries(lgK).build(); int n = 1 << (lgK + 1); for (int i = 2; i < n; i++) { sk.update(i); } - int cbytes = sk.getCompactBytes(); - byte[] byteArr = sk.toByteArray(); + int cbytes = sk.getCompactBytes(); //560 + byte[] byteArr = sk.toByteArray(); //1048 skwmem = WritableMemory.writableWrap(byteArr); cskwmem1 = WritableMemory.allocate(cbytes); cskwmem2 = WritableMemory.allocate(cbytes); @@ -222,8 +222,8 @@ public class UpdateSketchTest { csk1 = sk.compact(true, cskwmem1); csk2 = CompactOperations.memoryToCompact(skwmem, true, cskwmem2); csk3 = CompactOperations.memoryToCompact(cskwmem1, true, cskwmem3); - assertTrue(cskwmem1.equals(cskwmem2)); - assertTrue(cskwmem1.equals(cskwmem3)); + assertTrue(cskwmem1.equalTo(cskwmem2)); //both 560 + assertTrue(cskwmem1.equalTo(cskwmem3)); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
