use of org.apache.datasketches.memory.WritableHandle in project sketches-core by DataSketches.
the class HeapifyWrapSerVer1and2Test method checkWrapCompactSketchGivenDifferentSeed.
@Test
public void checkWrapCompactSketchGivenDifferentSeed() {
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) {
}
}
use of org.apache.datasketches.memory.WritableHandle in project sketches-core by DataSketches.
the class HeapifyWrapSerVer1and2Test method checkWrapCompactSketchGivenDefaultSeed.
@Test
public void checkWrapCompactSketchGivenDefaultSeed() {
final int k = 64;
final long seed = 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 */
}
}
use of org.apache.datasketches.memory.WritableHandle in project sketches-core by DataSketches.
the class HeapifyWrapSerVer1and2Test method checkWrapSketchGivenDefaultSeed.
@Test
public void checkWrapSketchGivenDefaultSeed() {
final int k = 64;
final long seed = 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) {
}
}
use of org.apache.datasketches.memory.WritableHandle in project sketches-core by DataSketches.
the class HeapifyWrapSerVer1and2Test method putOffHeap.
private static WritableHandle putOffHeap(Memory heapMem) {
final long cap = heapMem.getCapacity();
WritableHandle wh = WritableMemory.allocateDirect(cap);
WritableMemory wmem = wh.getWritable();
heapMem.copyTo(0, wmem, 0, cap);
return wh;
}
use of org.apache.datasketches.memory.WritableHandle in project sketches-core by DataSketches.
the class CompactSketchTest method checkHeapifyWrap.
// test combinations of compact ordered/not ordered and heap/direct
public void checkHeapifyWrap(int k, int u, boolean ordered) {
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build();
for (int i = 0; i < u; i++) {
// populate update sketch
usk.update(i);
}
/**
**ON HEAP MEMORY -- HEAPIFY***
*/
CompactSketch refSk = usk.compact(ordered, null);
byte[] barr = refSk.toByteArray();
Memory srcMem = Memory.wrap(barr);
CompactSketch testSk = (CompactSketch) Sketch.heapify(srcMem);
checkByRange(refSk, testSk, u, ordered);
/**
*Via byte[]*
*/
byte[] byteArray = refSk.toByteArray();
Memory heapROMem = Memory.wrap(byteArray);
testSk = (CompactSketch) Sketch.heapify(heapROMem);
checkByRange(refSk, testSk, u, ordered);
/**
**OFF HEAP MEMORY -- WRAP***
*/
// Prepare Memory for direct
// for Compact
int bytes = usk.getCompactBytes();
try (WritableHandle wdh = WritableMemory.allocateDirect(bytes)) {
WritableMemory directMem = wdh.getWritable();
/**
*Via CompactSketch.compact*
*/
refSk = usk.compact(ordered, directMem);
testSk = (CompactSketch) Sketch.wrap(directMem);
checkByRange(refSk, testSk, u, ordered);
/**
*Via CompactSketch.compact*
*/
testSk = (CompactSketch) Sketch.wrap(directMem);
checkByRange(refSk, testSk, u, ordered);
} catch (final Exception e) {
throw new RuntimeException(e);
}
}
Aggregations