use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class ReservoirItemsSketchTest method checkFullReservoir.
@Test
public void checkFullReservoir() {
final int k = 1000;
final int n = 2000;
// specify smaller ResizeFactor to ensure multiple resizes
final ReservoirItemsSketch<Long> ris = ReservoirItemsSketch.newInstance(k, ResizeFactor.X2);
for (int i = 0; i < n; ++i) {
ris.update((long) i);
}
assertEquals(ris.getNumSamples(), ris.getK());
validateSerializeAndDeserialize(ris);
println("Full reservoir:");
println(" Preamble:");
println(PreambleUtil.preambleToString(ris.toByteArray(new ArrayOfLongsSerDe())));
println(" Sketch:");
println(ris.toString());
}
use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class ReservoirItemsUnionTest method checkStandardMergeNoCopy.
@Test
public void checkStandardMergeNoCopy() {
final int k = 1024;
final int n1 = 256;
final int n2 = 256;
final ReservoirItemsSketch<Long> sketch1 = getBasicSketch(n1, k);
final ReservoirItemsSketch<Long> sketch2 = getBasicSketch(n2, k);
final ReservoirItemsUnion<Long> riu = ReservoirItemsUnion.newInstance(k);
riu.update(sketch1);
riu.update(sketch2);
assertNotNull(riu.getResult());
assertEquals(riu.getResult().getK(), k);
assertEquals(riu.getResult().getN(), n1 + n2);
assertEquals(riu.getResult().getNumSamples(), n1 + n2);
// creating from Memory should avoid a copy
final int n3 = 2048;
final ArrayOfLongsSerDe serDe = new ArrayOfLongsSerDe();
final ReservoirItemsSketch<Long> sketch3 = getBasicSketch(n3, k);
final byte[] sketch3Bytes = sketch3.toByteArray(serDe);
final Memory mem = Memory.wrap(sketch3Bytes);
riu.update(mem, serDe);
assertEquals(riu.getResult().getK(), k);
assertEquals(riu.getResult().getN(), n1 + n2 + n3);
assertEquals(riu.getResult().getNumSamples(), k);
}
use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class ReservoirItemsUnionTest method checkEmptyUnion.
@Test
public void checkEmptyUnion() {
final ReservoirItemsUnion<Long> riu = ReservoirItemsUnion.newInstance(1024);
final byte[] unionBytes = riu.toByteArray(new ArrayOfLongsSerDe());
// will intentionally break if changing empty union serialization
assertEquals(unionBytes.length, 8);
println(riu.toString());
}
use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class VarOptItemsUnionTest method checkBadPreLongs.
@Test(expectedExceptions = SketchesArgumentException.class)
public void checkBadPreLongs() {
final int k = 25;
final int n = 30;
final VarOptItemsUnion<Long> union = VarOptItemsUnion.newInstance(k);
union.update(getUnweightedLongsVIS(k, n));
final byte[] bytes = union.toByteArray(new ArrayOfLongsSerDe());
final WritableMemory mem = WritableMemory.wrap(bytes);
// corrupt the preLongs count to 0
mem.putByte(PREAMBLE_LONGS_BYTE, (byte) (Family.VAROPT.getMinPreLongs() - 1));
VarOptItemsUnion.heapify(mem, new ArrayOfLongsSerDe());
fail();
}
use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class VarOptItemsUnionTest method serializeExactUnion.
@Test
public void serializeExactUnion() {
final int n1 = 32;
final int n2 = 64;
final int k = 128;
final VarOptItemsSketch<Long> sketch1 = getUnweightedLongsVIS(k, n1);
final VarOptItemsSketch<Long> sketch2 = getUnweightedLongsVIS(k, n2);
final VarOptItemsUnion<Long> union = VarOptItemsUnion.newInstance(k);
union.update(sketch1);
union.update(sketch2);
final ArrayOfLongsSerDe serDe = new ArrayOfLongsSerDe();
final byte[] unionBytes = union.toByteArray(serDe);
final Memory mem = Memory.wrap(unionBytes);
final VarOptItemsUnion<Long> rebuilt = VarOptItemsUnion.heapify(mem, serDe);
compareUnions(rebuilt, union);
assertEquals(rebuilt.toString(), union.toString());
}
Aggregations