use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class HeapifyWrapSerVer1and2Test method checkHeapifyCompactSketchAssumedDefaultSeed.
@Test
public void checkHeapifyCompactSketchAssumedDefaultSeed() {
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 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);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class SingleItemSketchTest method unionWrapped.
@Test
public void unionWrapped() {
Sketch sketch = SingleItemSketch.create(1);
Union union = Sketches.setOperationBuilder().buildUnion();
Memory mem = Memory.wrap(sketch.toByteArray());
union.union(mem);
assertEquals(union.getResult().getEstimate(), 1, 0);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class HeapUnionTest method checkEmptySerVer2and3.
@Test
public void checkEmptySerVer2and3() {
final UpdateSketch usk1 = UpdateSketch.builder().build();
final CompactSketch usk1c = usk1.compact(true, null);
final byte[] skArr = usk1c.toByteArray();
final byte[] skArr2 = Arrays.copyOf(skArr, skArr.length * 2);
final WritableMemory v3mem1 = WritableMemory.writableWrap(skArr2);
Union union = SetOperation.builder().buildUnion();
union.union(v3mem1);
final Memory v2mem1 = convertSerVer3toSerVer2(usk1c, Util.DEFAULT_UPDATE_SEED);
final WritableMemory v2mem2 = WritableMemory.writableWrap(new byte[16]);
v2mem1.copyTo(0, v2mem2, 0, 8);
union = SetOperation.builder().buildUnion();
union.union(v2mem2);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class HeapUnionTest method checkUpdateMemorySpecialCases.
@Test
public void checkUpdateMemorySpecialCases() {
// 4096
final int lgK = 12;
final int k = 1 << lgK;
final UpdateSketch usk1 = UpdateSketch.builder().setNominalEntries(k).build();
final CompactSketch usk1c = usk1.compact(true, null);
WritableMemory v3mem1 = WritableMemory.writableWrap(usk1c.toByteArray());
final Memory v1mem1 = convertSerVer3toSerVer1(usk1.compact(true, null));
Union union = SetOperation.builder().setNominalEntries(k).buildUnion();
union.union(v1mem1);
CompactSketch cOut = union.getResult(true, null);
assertEquals(cOut.getEstimate(), 0.0, 0.0);
final Memory v2mem1 = convertSerVer3toSerVer2(usk1.compact(true, null), Util.DEFAULT_UPDATE_SEED);
union = SetOperation.builder().setNominalEntries(k).buildUnion();
union.union(v2mem1);
cOut = union.getResult(true, null);
assertEquals(cOut.getEstimate(), 0.0, 0.0);
union = SetOperation.builder().setNominalEntries(k).buildUnion();
union.union(v3mem1);
cOut = union.getResult(true, null);
assertEquals(cOut.getEstimate(), 0.0, 0.0);
union = SetOperation.builder().setNominalEntries(k).buildUnion();
v3mem1 = null;
union.union(v3mem1);
cOut = union.getResult(true, null);
assertEquals(cOut.getEstimate(), 0.0, 0.0);
}
use of org.apache.datasketches.memory.Memory in project sketches-core by DataSketches.
the class HeapUnionTest method checkSerVer1Handling.
@Test
public void checkSerVer1Handling() {
// 4096
final int lgK = 12;
final int k = 1 << lgK;
final int u1 = 2 * k;
// smaller exact sketch forces early stop
final int u2 = 1024;
final int totU = u1 + u2;
final UpdateSketch usk1 = UpdateSketch.builder().setNominalEntries(k).build();
final UpdateSketch usk2 = UpdateSketch.builder().setNominalEntries(k).build();
for (int i = 0; i < u1; i++) {
// 2*k
usk1.update(i);
}
for (int i = u1; i < totU; i++) {
// 2*k + 1024 no overlap
usk2.update(i);
}
final Memory v1mem1 = convertSerVer3toSerVer1(usk1.compact(true, null));
final Memory v1mem2 = convertSerVer3toSerVer1(usk2.compact(true, null));
final Union union = SetOperation.builder().setNominalEntries(k).buildUnion();
union.union(v1mem1);
union.union(v1mem2);
final CompactSketch cOut = union.getResult(true, null);
assertEquals(cOut.getEstimate(), totU, .05 * k);
}
Aggregations