use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class VarOptItemsUnionTest method serializeSamplingUnion.
@Test
public void serializeSamplingUnion() {
final int n = 256;
final int k = 128;
final VarOptItemsSketch<Long> sketch = getUnweightedLongsVIS(k, n);
sketch.update(n + 1L, 1000.0);
sketch.update(n + 2L, 1001.0);
sketch.update(n + 3L, 1002.0);
sketch.update(n + 4L, 1003.0);
sketch.update(n + 5L, 1004.0);
sketch.update(n + 6L, 1005.0);
sketch.update(n + 7L, 1006.0);
sketch.update(n + 8L, 1007.0);
final VarOptItemsUnion<Long> union = VarOptItemsUnion.newInstance(k);
union.update(sketch);
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());
}
use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class ReservoirItemsSketchTest method checkBadFamily.
@Test(expectedExceptions = SketchesArgumentException.class)
public void checkBadFamily() {
final WritableMemory mem = getBasicSerializedLongsRIS();
// corrupt the family ID
mem.putByte(FAMILY_BYTE, (byte) Family.ALPHA.getID());
try {
PreambleUtil.preambleToString(mem);
} catch (final SketchesArgumentException e) {
assertTrue(e.getMessage().startsWith("Inspecting preamble with Sampling family"));
}
ReservoirItemsSketch.heapify(mem, new ArrayOfLongsSerDe());
fail();
}
use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class ReservoirItemsUnionTest method checkNewGadget.
@Test
public void checkNewGadget() {
final int maxK = 1024;
final int bigK = 1536;
final int smallK = 128;
// downsample input sketch, use as gadget (exact mode, but irrelevant here)
final ReservoirItemsSketch<Long> bigKSketch = getBasicSketch(maxK / 2, bigK);
final byte[] bigKBytes = bigKSketch.toByteArray(new ArrayOfLongsSerDe());
final Memory bigKMem = Memory.wrap(bigKBytes);
ReservoirItemsUnion<Long> riu = ReservoirItemsUnion.newInstance(maxK);
riu.update(bigKMem, new ArrayOfLongsSerDe());
assertNotNull(riu.getResult());
assertEquals(riu.getResult().getK(), maxK);
assertEquals(riu.getResult().getN(), maxK / 2);
// sketch k < maxK but in sampling mode
final ReservoirItemsSketch<Long> smallKSketch = getBasicSketch(maxK, smallK);
final byte[] smallKBytes = smallKSketch.toByteArray(new ArrayOfLongsSerDe());
final Memory smallKMem = Memory.wrap(smallKBytes);
riu = ReservoirItemsUnion.newInstance(maxK);
riu.update(smallKMem, new ArrayOfLongsSerDe());
assertNotNull(riu.getResult());
assertTrue(riu.getResult().getK() < maxK);
assertEquals(riu.getResult().getK(), smallK);
assertEquals(riu.getResult().getN(), maxK);
// sketch k < maxK and in exact mode
final ReservoirItemsSketch<Long> smallKExactSketch = getBasicSketch(smallK, smallK);
final byte[] smallKExactBytes = smallKExactSketch.toByteArray(new ArrayOfLongsSerDe());
final Memory smallKExactMem = Memory.wrap(smallKExactBytes);
riu = ReservoirItemsUnion.newInstance(maxK);
riu.update(smallKExactMem, new ArrayOfLongsSerDe());
assertNotNull(riu.getResult());
assertEquals(riu.getResult().getK(), maxK);
assertEquals(riu.getResult().getN(), smallK);
}
use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class ReservoirItemsSketchTest method validateSerializeAndDeserialize.
private static void validateSerializeAndDeserialize(final ReservoirItemsSketch<Long> ris) {
final byte[] sketchBytes = ris.toByteArray(new ArrayOfLongsSerDe());
assertEquals(sketchBytes.length, (Family.RESERVOIR.getMaxPreLongs() + ris.getNumSamples()) << 3);
// ensure full reservoir rebuilds correctly
final Memory mem = Memory.wrap(sketchBytes);
final ArrayOfLongsSerDe serDe = new ArrayOfLongsSerDe();
final ReservoirItemsSketch<Long> loadedRis = ReservoirItemsSketch.heapify(mem, serDe);
validateReservoirEquality(ris, loadedRis);
}
use of com.yahoo.sketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class ReservoirItemsSketchTest method checkBadSerVer.
@Test(expectedExceptions = SketchesArgumentException.class)
public void checkBadSerVer() {
final WritableMemory mem = getBasicSerializedLongsRIS();
// corrupt the serialization version
mem.putByte(SER_VER_BYTE, (byte) 0);
ReservoirItemsSketch.heapify(mem, new ArrayOfLongsSerDe());
fail();
}
Aggregations