diff --git a/src/main/java/org/apache/datasketches/common/Util.java b/src/main/java/org/apache/datasketches/common/Util.java index 187380fbf..0d867bc44 100644 --- a/src/main/java/org/apache/datasketches/common/Util.java +++ b/src/main/java/org/apache/datasketches/common/Util.java @@ -175,22 +175,33 @@ public static byte[] longToBytes(final long v, final byte[] arr) { /** Byte array conversions *******************/ - static long[] convertToLongArray(final byte[] byteArr, final boolean littleEndian) { + /** + * Converts a byte array to an array of longs, taking the bytes in groups of 8. + * + *

Each group of 8 bytes becomes one long. If bigEndian is false, the first byte of a group + * is the least significant byte of its long (Little-Endian). If true, the first byte of a group is the + * most significant byte (Big-Endian).

+ * + *

If the length of the byte array is not a multiple of 8, the final group has fewer than 8 bytes. + * Those bytes are converted in the same byte order and are flush right in the final long; its unused + * high-order bytes are zero. For example, the final group {9, 10, 11, 12} becomes + * 0x000000000C0B0A09 if Little-Endian and 0x00000000090A0B0C if Big-Endian.

+ * + * @param byteArr the given byte array + * @param bigEndian if true, the bytes of each group are in Big-Endian order, otherwise Little-Endian. + * @return an array of ceiling(byteArr.length / 8) longs. + */ + static long[] convertToLongArray(final byte[] byteArr, final boolean bigEndian) { final int len = byteArr.length; final long[] longArr = new long[(len / 8) + ((len % 8) != 0 ? 1 : 0)]; int off = 0; int longArrIdx = 0; while (off < len) { - final int rem = Math.min(len - 1 - off, 7); + final int end = Math.min(off + 8, len); //exclusive long tgt = 0; - if (littleEndian) { - for (int j = off + rem, k = 0; j >= off; --j, k++) { - tgt |= (byteArr[j] & 0XFFL) << (k * 8); - } - } else { //BE - for (int j = off + rem, k = rem; j >= off; --j, k--) { - tgt |= (byteArr[j] & 0XFFL) << (k * 8); - } + for (int j = off; j < end; j++) { + final int shift = bigEndian ? (end - 1 - j) * 8 : (j - off) * 8; + tgt |= (byteArr[j] & 0XFFL) << shift; } off += 8; longArr[longArrIdx++] = tgt; diff --git a/src/main/java/org/apache/datasketches/kll/KllPreambleUtil.java b/src/main/java/org/apache/datasketches/kll/KllPreambleUtil.java index 27a6372bb..dc658626d 100644 --- a/src/main/java/org/apache/datasketches/kll/KllPreambleUtil.java +++ b/src/main/java/org/apache/datasketches/kll/KllPreambleUtil.java @@ -139,6 +139,8 @@ final class KllPreambleUtil { private KllPreambleUtil() {} + private static final String ITEMS_SERDE_MSG = "SerDe parameter must not be null for ITEMS_SKETCH."; + // Preamble byte addresses static final int PREAMBLE_INTS_BYTE_ADR = 0; static final int SER_VER_BYTE_ADR = 1; @@ -224,7 +226,7 @@ static String toString(final MemorySegment seg, final SketchType sketchType, fin static String toString(final MemorySegment seg, final SketchType sketchType, final boolean includeData, final ArrayOfItemsSerDe serDe) { if (sketchType == KLL_ITEMS_SKETCH) { - Objects.requireNonNull(serDe, "SerDe parameter must not be null for ITEMS_SKETCH."); + Objects.requireNonNull(serDe, ITEMS_SERDE_MSG); } final KllMemorySegmentValidate segVal = new KllMemorySegmentValidate(seg, sketchType, serDe); final SketchStructure myStructure = segVal.sketchStructure; @@ -359,10 +361,11 @@ static String toString(final MemorySegment seg, final SketchType sketchType, sb.append(seg.get(JAVA_LONG_UNALIGNED, offsetBytes)).append(LS); offsetBytes += typeBytes; } else { //ITEMS_SKETCH - sb.append(serDe.deserializeFromMemorySegment(seg, offsetBytes, 1)[0]).append(LS); - offsetBytes += serDe.sizeOf(seg, offsetBytes, 1); - sb.append(serDe.deserializeFromMemorySegment(seg, offsetBytes, 1)[0]).append(LS); - offsetBytes += serDe.sizeOf(seg, offsetBytes, 1); + final ArrayOfItemsSerDe itemsSerDe = Objects.requireNonNull(serDe, ITEMS_SERDE_MSG); + sb.append(itemsSerDe.deserializeFromMemorySegment(seg, offsetBytes, 1)[0]).append(LS); + offsetBytes += itemsSerDe.sizeOf(seg, offsetBytes, 1); + sb.append(itemsSerDe.deserializeFromMemorySegment(seg, offsetBytes, 1)[0]).append(LS); + offsetBytes += itemsSerDe.sizeOf(seg, offsetBytes, 1); } sb.append("RETAINED DATA").append(LS); @@ -383,9 +386,10 @@ static String toString(final MemorySegment seg, final SketchType sketchType, offsetBytes += typeBytes; } } else { //ITEMS_SKETCH - final T[] itemsArr = serDe.deserializeFromMemorySegment(seg, offsetBytes, retainedItems); + final ArrayOfItemsSerDe itemsSerDe = Objects.requireNonNull(serDe, ITEMS_SERDE_MSG); + final T[] itemsArr = itemsSerDe.deserializeFromMemorySegment(seg, offsetBytes, retainedItems); for (int i = 0; i < itemsArr.length; i++) { - sb.append(i + ", " + serDe.toString(itemsArr[i])).append(LS); + sb.append(i + ", " + itemsSerDe.toString(itemsArr[i])).append(LS); } } @@ -399,7 +403,8 @@ static String toString(final MemorySegment seg, final SketchType sketchType, } else if (sketchType == KLL_LONGS_SKETCH) { sb.append(seg.get(JAVA_LONG_UNALIGNED, DATA_START_ADR_SINGLE_ITEM)).append(LS); } else { //ITEMS_SKETCH - sb.append(serDe.deserializeFromMemorySegment(seg, DATA_START_ADR_SINGLE_ITEM, 1)[0]).append(LS); + final ArrayOfItemsSerDe itemsSerDe = Objects.requireNonNull(serDe, ITEMS_SERDE_MSG); + sb.append(itemsSerDe.deserializeFromMemorySegment(seg, DATA_START_ADR_SINGLE_ITEM, 1)[0]).append(LS); } } else { //COMPACT_EMPTY diff --git a/src/main/java/org/apache/datasketches/sampling/ReservoirItemsUnion.java b/src/main/java/org/apache/datasketches/sampling/ReservoirItemsUnion.java index 424388581..3905cb368 100644 --- a/src/main/java/org/apache/datasketches/sampling/ReservoirItemsUnion.java +++ b/src/main/java/org/apache/datasketches/sampling/ReservoirItemsUnion.java @@ -288,8 +288,8 @@ public String toString() { // gadgetBytes will be null only if gadget_ == null AND empty == true public byte[] toByteArray(final ArrayOfItemsSerDe serDe, final Class clazz) { final int preLongs, outBytes; - final boolean empty = gadget_ == null; - final byte[] gadgetBytes = (gadget_ != null ? gadget_.toByteArray(serDe, clazz) : null); + final byte[] gadgetBytes = (gadget_ == null) ? null : gadget_.toByteArray(serDe, clazz); + final boolean empty = gadgetBytes == null; if (empty) { preLongs = Family.RESERVOIR_UNION.getMinPreLongs(); diff --git a/src/main/java/org/apache/datasketches/sampling/ReservoirLongsUnion.java b/src/main/java/org/apache/datasketches/sampling/ReservoirLongsUnion.java index 37129a299..9c4d03233 100644 --- a/src/main/java/org/apache/datasketches/sampling/ReservoirLongsUnion.java +++ b/src/main/java/org/apache/datasketches/sampling/ReservoirLongsUnion.java @@ -241,8 +241,8 @@ public String toString() { // gadgetBytes will be null only if gadget_ == null AND empty == true public byte[] toByteArray() { final int preLongs, outBytes; - final boolean empty = gadget_ == null; - final byte[] gadgetBytes = (gadget_ != null ? gadget_.toByteArray() : null); + final byte[] gadgetBytes = (gadget_ == null) ? null : gadget_.toByteArray(); + final boolean empty = gadgetBytes == null; if (empty) { preLongs = Family.RESERVOIR_UNION.getMinPreLongs(); diff --git a/src/test/java/org/apache/datasketches/common/UtilTest.java b/src/test/java/org/apache/datasketches/common/UtilTest.java index f8a5096fb..950ef7565 100644 --- a/src/test/java/org/apache/datasketches/common/UtilTest.java +++ b/src/test/java/org/apache/datasketches/common/UtilTest.java @@ -58,6 +58,9 @@ import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + import org.testng.Assert; import org.testng.annotations.Test; @@ -431,22 +434,39 @@ public void checkExactLog2OfIntWithArg() { static void checkConvertToLongArray() { final byte[] arr = {1,2,3,4,5,6,7,8,9,10,11,12}; + //Little-Endian; the 4-byte tail is flush right long[] out = convertToLongArray(arr, false); + assertEquals(out.length, 2); String s = zeroPad(Long.toHexString(out[0]), 16); assertEquals(s, "0807060504030201"); s = zeroPad(Long.toHexString(out[1]), 16); assertEquals(s, "000000000c0b0a09"); + //Big-Endian; the 4-byte tail is flush right out = convertToLongArray(arr, true); + assertEquals(out.length, 2); s = zeroPad(Long.toHexString(out[0]), 16); assertEquals(s, "0102030405060708"); s = zeroPad(Long.toHexString(out[1]), 16); assertEquals(s, "00000000090a0b0c"); + + //full groups agree with ByteBuffer in both byte orders + final byte[] arr16 = new byte[16]; + for (int i = 0; i < 16; i++) { arr16[i] = (byte) (0xF0 + i); } //high bit set, to check sign handling + for (final boolean bigEndian : new boolean[] {false, true}) { + final ByteBuffer bb = ByteBuffer.wrap(arr16).order(bigEndian ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN); + out = convertToLongArray(arr16, bigEndian); + assertEquals(out.length, 2); + assertEquals(out[0], bb.getLong(0)); + assertEquals(out[1], bb.getLong(8)); + } + + assertEquals(convertToLongArray(new byte[0], true).length, 0); } @Test static void checkCeilingMultiple2expK() { - final long n = (1 << 36) - 1L; + final long n = (1L << 36) - 1L; final int k = 6; final long v = ceilingMultiple2expK(n, k); final long v2 = (long)Math.ceil(n / (double)(1 << k)); diff --git a/src/test/java/org/apache/datasketches/common/positional/PositionalSegmentTest.java b/src/test/java/org/apache/datasketches/common/positional/PositionalSegmentTest.java index f3bf385dc..4e66878a0 100644 --- a/src/test/java/org/apache/datasketches/common/positional/PositionalSegmentTest.java +++ b/src/test/java/org/apache/datasketches/common/positional/PositionalSegmentTest.java @@ -40,10 +40,10 @@ public void checkBytes() { final MemorySegment seg = MemorySegment.ofArray(new byte[n * Byte.BYTES]); final PositionalSegment posSeg = PositionalSegment.wrap(seg); for (int i = 0; i < (n/2); i++) { posSeg.setByte((byte)i); } - for (int i = n/2; i < n; i++) { posSeg.setByte(i * Byte.BYTES, (byte)i); } + for (int i = n/2; i < n; i++) { posSeg.setByte((long) i * Byte.BYTES, (byte)i); } posSeg.resetPosition(); for (int i = 0; i < n; i++) { - final byte v1 = posSeg.getByte(i * Byte.BYTES); + final byte v1 = posSeg.getByte((long) i * Byte.BYTES); final byte v2 = posSeg.getByte(); assertEquals(v1, v2); assertEquals(v2, i); @@ -57,7 +57,7 @@ public void checkBytes() { final MemorySegment seg2 = posSeg.getMemorySegment(); for (int i = 0; i < n; i++) { - assertEquals(seg2.get(JAVA_BYTE, i * Byte.BYTES), (byte)i); + assertEquals(seg2.get(JAVA_BYTE, (long) i * Byte.BYTES), (byte)i); } } @@ -67,10 +67,10 @@ public void checkChars() { final MemorySegment seg = MemorySegment.ofArray(new byte[n * Character.BYTES]); final PositionalSegment posSeg = PositionalSegment.wrap(seg); for (int i = 0; i < (n/2); i++) { posSeg.setChar((char)i); } - for (int i = n/2; i < n; i++) { posSeg.setChar(i * Character.BYTES, (char)i); } + for (int i = n/2; i < n; i++) { posSeg.setChar((long) i * Character.BYTES, (char)i); } posSeg.resetPosition(); for (int i = 0; i < n; i++) { - final int v1 = posSeg.getChar(i *Character.BYTES); + final int v1 = posSeg.getChar((long) i * Character.BYTES); final int v2 = posSeg.getChar(); assertEquals(v1, v2); assertEquals(v2, i); @@ -84,7 +84,7 @@ public void checkChars() { final MemorySegment seg2 = posSeg.getMemorySegment(); for (int i = 0; i < n; i++) { - assertEquals(seg2.get(JAVA_CHAR_UNALIGNED, i * Character.BYTES), (char)i); + assertEquals(seg2.get(JAVA_CHAR_UNALIGNED, (long) i * Character.BYTES), (char)i); } } @@ -94,10 +94,10 @@ public void checkShorts() { final MemorySegment seg = MemorySegment.ofArray(new byte[n * Short.BYTES]); final PositionalSegment posSeg = PositionalSegment.wrap(seg); for (int i = 0; i < (n/2); i++) { posSeg.setShort((short)i); } - for (int i = n/2; i < n; i++) { posSeg.setShort(i * Short.BYTES, (short)i); } + for (int i = n/2; i < n; i++) { posSeg.setShort((long) i * Short.BYTES, (short)i); } posSeg.resetPosition(); for (int i = 0; i < n; i++) { - final int v1 = posSeg.getShort(i *Short.BYTES); + final int v1 = posSeg.getShort((long) i * Short.BYTES); final int v2 = posSeg.getShort(); assertEquals(v1, v2); assertEquals(v2, i); @@ -111,7 +111,7 @@ public void checkShorts() { final MemorySegment seg2 = posSeg.getMemorySegment(); for (int i = 0; i < n; i++) { - assertEquals(seg2.get(JAVA_SHORT_UNALIGNED, i * Short.BYTES), (short)i); + assertEquals(seg2.get(JAVA_SHORT_UNALIGNED, (long) i * Short.BYTES), (short)i); } } @@ -121,10 +121,10 @@ public void checkInts() { final MemorySegment seg = MemorySegment.ofArray(new byte[n * Integer.BYTES]); final PositionalSegment posSeg = PositionalSegment.wrap(seg); for (int i = 0; i < (n/2); i++) { posSeg.setInt((int)i); } - for (int i = n/2; i < n; i++) { posSeg.setInt(i * Integer.BYTES, (int)i); } + for (int i = n/2; i < n; i++) { posSeg.setInt((long) i * Integer.BYTES, (int)i); } posSeg.resetPosition(); for (int i = 0; i < n; i++) { - final int v1 = posSeg.getInt(i * Integer.BYTES); + final int v1 = posSeg.getInt((long) i * Integer.BYTES); final int v2 = posSeg.getInt(); assertEquals(v1, v2); assertEquals(v2, i); @@ -138,7 +138,7 @@ public void checkInts() { final MemorySegment seg2 = posSeg.getMemorySegment(); for (int i = 0; i < n; i++) { - assertEquals(seg2.get(JAVA_INT_UNALIGNED, i * Integer.BYTES), (int)i); + assertEquals(seg2.get(JAVA_INT_UNALIGNED, (long) i * Integer.BYTES), (int)i); } } @@ -149,10 +149,10 @@ public void checkLongs() { final MemorySegment seg = MemorySegment.ofArray(new byte[n * Long.BYTES]); final PositionalSegment posSeg = PositionalSegment.wrap(seg); for (int i = 0; i < (n/2); i++) { posSeg.setLong(i); } - for (int i = n/2; i < n; i++) { posSeg.setLong(i * Long.BYTES, i); } + for (int i = n/2; i < n; i++) { posSeg.setLong((long) i * Long.BYTES, i); } posSeg.resetPosition(); for (int i = 0; i < n; i++) { - final long v1 = posSeg.getLong(i * Long.BYTES); + final long v1 = posSeg.getLong((long) i * Long.BYTES); final long v2 = posSeg.getLong(); assertEquals(v1, v2); assertEquals(v2, i); @@ -166,7 +166,7 @@ public void checkLongs() { final MemorySegment seg2 = posSeg.getMemorySegment(); for (int i = 0; i < n; i++) { - assertEquals(seg2.get(JAVA_LONG_UNALIGNED, i * Long.BYTES), i); + assertEquals(seg2.get(JAVA_LONG_UNALIGNED, (long) i * Long.BYTES), i); } } @@ -176,10 +176,10 @@ public void checkFloats() { final MemorySegment seg = MemorySegment.ofArray(new byte[n * Float.BYTES]); final PositionalSegment posSeg = PositionalSegment.wrap(seg); for (int i = 0; i < (n/2); i++) { posSeg.setFloat(i); } - for (int i = n/2; i < n; i++) { posSeg.setFloat(i * Float.BYTES, i); } + for (int i = n/2; i < n; i++) { posSeg.setFloat((long) i * Float.BYTES, i); } posSeg.resetPosition(); for (int i = 0; i < n; i++) { - final float v1 = posSeg.getFloat(i * Float.BYTES); + final float v1 = posSeg.getFloat((long) i * Float.BYTES); final float v2 = posSeg.getFloat(); assertEquals(v1, v2); assertEquals(v2, i); @@ -193,7 +193,7 @@ public void checkFloats() { final MemorySegment seg2 = posSeg.getMemorySegment(); for (int i = 0; i < n; i++) { - assertEquals(seg2.get(JAVA_FLOAT_UNALIGNED, i * Float.BYTES), i); + assertEquals(seg2.get(JAVA_FLOAT_UNALIGNED, (long) i * Float.BYTES), i); } } @@ -203,10 +203,10 @@ public void checkDoubles() { final MemorySegment seg = MemorySegment.ofArray(new byte[n * Double.BYTES]); final PositionalSegment posSeg = PositionalSegment.wrap(seg); for (int i = 0; i < (n/2); i++) { posSeg.setDouble(i); } - for (int i = n/2; i < n; i++) { posSeg.setDouble(i * Double.BYTES, i); } + for (int i = n/2; i < n; i++) { posSeg.setDouble((long) i * Double.BYTES, i); } posSeg.resetPosition(); for (int i = 0; i < n; i++) { - final double v1 = posSeg.getDouble(i * Double.BYTES); + final double v1 = posSeg.getDouble((long) i * Double.BYTES); final double v2 = posSeg.getDouble(); assertEquals(v1, v2); assertEquals(v2, i); @@ -220,7 +220,7 @@ public void checkDoubles() { final MemorySegment seg2 = posSeg.getMemorySegment(); for (int i = 0; i < n; i++) { - assertEquals(seg2.get(JAVA_DOUBLE_UNALIGNED, i * Double.BYTES), i); + assertEquals(seg2.get(JAVA_DOUBLE_UNALIGNED, (long) i * Double.BYTES), i); } } diff --git a/src/test/java/org/apache/datasketches/cpc/CpcWrapperTest.java b/src/test/java/org/apache/datasketches/cpc/CpcWrapperTest.java index 81f35f63c..4e184fa57 100644 --- a/src/test/java/org/apache/datasketches/cpc/CpcWrapperTest.java +++ b/src/test/java/org/apache/datasketches/cpc/CpcWrapperTest.java @@ -41,9 +41,9 @@ public void check() { final CpcSketch sk1 = new CpcSketch(lgK); final CpcSketch sk2 = new CpcSketch(lgK); final CpcSketch skD = new CpcSketch(lgK); - final double dEst = skD.getEstimate(); - final double dlb = skD.getLowerBound(2); - final double dub = skD.getUpperBound(2); + assertEquals(skD.getEstimate(), 0.0); + assertEquals(skD.getLowerBound(2), 0.0); + assertEquals(skD.getUpperBound(2), 0.0); final int n = 100000; for (int i = 0; i < n; i++) { @@ -56,9 +56,9 @@ public void check() { final CpcUnion union = new CpcUnion(lgK); final CpcSketch result = union.getResult(); - final double uEst = result.getEstimate(); - final double ulb = result.getLowerBound(2); - final double uub = result.getUpperBound(2); + assertEquals(result.getEstimate(), 0.0); + assertEquals(result.getLowerBound(2), 0.0); + assertEquals(result.getUpperBound(2), 0.0); union.update(sk1); union.update(sk2); final CpcSketch merged = union.getResult(); @@ -90,7 +90,7 @@ public void checkIsCompressed() { final byte[] byteArr = sk.toByteArray(); byteArr[5] &= (byte) -3; try { - final CpcWrapper wrapper = new CpcWrapper(MemorySegment.ofArray(byteArr)); + new CpcWrapper(MemorySegment.ofArray(byteArr)); fail(); } catch (final AssertionError e) {} } diff --git a/src/test/java/org/apache/datasketches/hll/HllSketchTest.java b/src/test/java/org/apache/datasketches/hll/HllSketchTest.java index 672d69601..5b9e239e1 100644 --- a/src/test/java/org/apache/datasketches/hll/HllSketchTest.java +++ b/src/test/java/org/apache/datasketches/hll/HllSketchTest.java @@ -268,13 +268,13 @@ private static void checkSerSizes(final int lgConfigK, final TgtHllType tgtHllTy @Test public void checkConfigKLimits() { try { - final HllSketch sk = new HllSketch(HllUtil.MIN_LOG_K - 1); + new HllSketch(HllUtil.MIN_LOG_K - 1); fail(); } catch (final SketchesArgumentException e) { //expected } try { - final HllSketch sk = new HllSketch(HllUtil.MAX_LOG_K + 1); + new HllSketch(HllUtil.MAX_LOG_K + 1); fail(); } catch (final SketchesArgumentException e) { //expected @@ -303,7 +303,7 @@ public void checkMemorySegmentNotLargeEnough() { final int bytes = getMaxUpdatableSerializationBytes(8, TgtHllType.HLL_8); final MemorySegment wseg = MemorySegment.ofArray(new byte[bytes -1]); try { - final HllSketch sk = new HllSketch(8, TgtHllType.HLL_8, wseg); + new HllSketch(8, TgtHllType.HLL_8, wseg); fail(); } catch (final SketchesArgumentException e) { //OK @@ -415,7 +415,7 @@ public void checkWritableWrapOfCompact() { final HllSketch sk = new HllSketch(); final byte[] byteArr = sk.toCompactByteArray(); final MemorySegment wseg = MemorySegment.ofArray(byteArr); - final HllSketch sk2 = HllSketch.writableWrap(wseg); + HllSketch.writableWrap(wseg); } @SuppressWarnings("unused") diff --git a/src/test/java/org/apache/datasketches/hll/IsomorphicTest.java b/src/test/java/org/apache/datasketches/hll/IsomorphicTest.java index d895246a8..6665350f1 100644 --- a/src/test/java/org/apache/datasketches/hll/IsomorphicTest.java +++ b/src/test/java/org/apache/datasketches/hll/IsomorphicTest.java @@ -158,7 +158,6 @@ public void isomorphicHllMerges() { private static void innerLoop(final int uLgK, final int skLgK, final TgtHllType tgtHllType) { HllUnion u; HllSketch sk; - final HllSketch skOut; //CASE 1 Heap HllUnion, Heap HllSketch u = buildHeapUnionHllMode(uLgK, 0); diff --git a/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java b/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java index 94d675dc4..dfd5899d8 100644 --- a/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java +++ b/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java @@ -110,12 +110,11 @@ public void checkCorruptMemorySegmentInput() { final HllSketch sk = new HllSketch(12); byte[] segObj = sk.toCompactByteArray(); MemorySegment wseg = MemorySegment.ofArray(segObj); - HllSketch bad; //checkFamily try { wseg.set(JAVA_BYTE, FAMILY_BYTE, (byte) 0); //corrupt, should be 7 - bad = HllSketch.heapify(wseg); + HllSketch.heapify(wseg); fail(); } catch (final SketchesArgumentException e) { /* OK */ } insertFamilyId(wseg); //corrected @@ -123,7 +122,7 @@ public void checkCorruptMemorySegmentInput() { //check SerVer try { wseg.set(JAVA_BYTE, SER_VER_BYTE, (byte) 0); //corrupt, should be 1 - bad = HllSketch.heapify(wseg); + HllSketch.heapify(wseg); fail(); } catch (final SketchesArgumentException e) { /* OK */ } insertSerVer(wseg); //corrected @@ -131,7 +130,7 @@ public void checkCorruptMemorySegmentInput() { //check bad PreInts try { insertPreInts(wseg, 0); //corrupt, should be 2 - bad = HllSketch.heapify(wseg); + HllSketch.heapify(wseg); fail(); } catch (final SketchesArgumentException e) { /* OK */ } insertPreInts(wseg, 2); //corrected @@ -139,7 +138,7 @@ public void checkCorruptMemorySegmentInput() { //check wrong PreInts and LIST try { insertPreInts(wseg, 3); //corrupt, should be 2 - bad = HllSketch.heapify(wseg); + HllSketch.heapify(wseg); fail(); } catch (final SketchesArgumentException e) { /* OK */ } insertPreInts(wseg, 2); //corrected @@ -152,7 +151,7 @@ public void checkCorruptMemorySegmentInput() { //check wrong PreInts and SET try { insertPreInts(wseg, 2); //corrupt, should be 3 - bad = HllSketch.heapify(wseg); + HllSketch.heapify(wseg); fail(); } catch (final SketchesArgumentException e) { /* OK */ } insertPreInts(wseg, 3); //corrected @@ -165,7 +164,7 @@ public void checkCorruptMemorySegmentInput() { //check wrong PreInts and HLL try { insertPreInts(wseg, 2); //corrupt, should be 10 - bad = HllSketch.heapify(wseg); + HllSketch.heapify(wseg); fail(); } catch (final SketchesArgumentException e) { /* OK */ } insertPreInts(wseg, 10); //corrected @@ -176,8 +175,7 @@ public void checkCorruptMemorySegmentInput() { public void checkExtractFlags() { final int bytes = HllSketch.getMaxUpdatableSerializationBytes(4, TgtHllType.HLL_4); final MemorySegment wseg = MemorySegment.ofArray(new byte[bytes]); - final Object segObj = wseg.toArray(JAVA_BYTE); - final HllSketch sk = new HllSketch(4, TgtHllType.HLL_4, wseg); + new HllSketch(4, TgtHllType.HLL_4, wseg); final int flags = extractFlags(wseg); assertEquals(flags, EMPTY_FLAG_MASK); } diff --git a/src/test/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchTest.java b/src/test/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchTest.java index 088b4462c..6470c5351 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchTest.java @@ -167,9 +167,7 @@ public void checkMisc() { @SuppressWarnings("unused") @Test public void variousExceptions() { - final MemorySegment seg = MemorySegment.ofArray(new byte[8]); try { - final int flags = PreambleUtil.COMPACT_FLAG_MASK; DirectUpdateDoublesSketch.checkCompact(2, 0); fail(); } catch (final SketchesArgumentException e) {} //OK diff --git a/src/test/java/org/apache/datasketches/quantilescommon/PartitionBoundariesTest.java b/src/test/java/org/apache/datasketches/quantilescommon/PartitionBoundariesTest.java index 7ff4596d5..278502041 100644 --- a/src/test/java/org/apache/datasketches/quantilescommon/PartitionBoundariesTest.java +++ b/src/test/java/org/apache/datasketches/quantilescommon/PartitionBoundariesTest.java @@ -250,7 +250,7 @@ public void checkSketchPartitionLimits2() { //this should pass final long goodPartSizeRequest= sk.getMinPartitionSizeItems(); println("Good partSizeRequest " + goodPartSizeRequest); - final GenericPartitionBoundaries gpb = sk.getPartitionBoundariesFromPartSize(goodPartSizeRequest); + sk.getPartitionBoundariesFromPartSize(goodPartSizeRequest); //this should fail try { final long badPartSizeRequest = goodPartSizeRequest - 1; diff --git a/src/test/java/org/apache/datasketches/req/ReqSketchTest.java b/src/test/java/org/apache/datasketches/req/ReqSketchTest.java index 0499f865a..afd2d0c3e 100644 --- a/src/test/java/org/apache/datasketches/req/ReqSketchTest.java +++ b/src/test/java/org/apache/datasketches/req/ReqSketchTest.java @@ -125,8 +125,6 @@ private static void checkGetRank(final ReqSketch sk, final int min, final int ma final String dfmt = "%10.2f%10.6f" + LS; final String sfmt = "%10s%10s" + LS; if (iDebug > 0) { printf(sfmt, "Value", "Rank"); } - final float va = 0; - final double ranka = 0; for (int i = 0; i < spArr.length; i++) { final float v = spArr[i]; final double trueRank = trueRanks[i]; diff --git a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java index 65c6c0a46..b01a996be 100644 --- a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java +++ b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java @@ -763,11 +763,9 @@ public void checkConstructorSrcSegCorruptions() { final UpdatableThetaSketch usk1 = UpdatableThetaSketch.builder().setNominalEntries(k).setResizeFactor(rf).build(seg1); for (int i=0; i>> 1); //corrupt theta and seg1.set(JAVA_BYTE, LG_ARR_LONGS_BYTE, (byte) 10); //corrupt lgArrLongs try { - usk2 = DirectQuickSelectSketch.writableWrap(seg1, null, Util.DEFAULT_UPDATE_SEED); + DirectQuickSelectSketch.writableWrap(seg1, null, Util.DEFAULT_UPDATE_SEED); fail("Expected SketchesArgumentException"); } catch (final SketchesArgumentException e) { //pass @@ -803,7 +801,7 @@ public void checkConstructorSrcSegCorruptions() { final byte badFlags = (byte) (COMPACT_FLAG_MASK | READ_ONLY_FLAG_MASK | ORDERED_FLAG_MASK); seg1.set(JAVA_BYTE, FLAGS_BYTE, badFlags); try { - usk2 = DirectQuickSelectSketch.writableWrap(seg1, null, Util.DEFAULT_UPDATE_SEED); + DirectQuickSelectSketch.writableWrap(seg1, null, Util.DEFAULT_UPDATE_SEED); fail("Expected SketchesArgumentException"); } catch (final SketchesArgumentException e) { //pass @@ -812,7 +810,7 @@ public void checkConstructorSrcSegCorruptions() { final byte[] arr2 = Arrays.copyOfRange(arr1, 0, bytes-1); //corrupt length final MemorySegment seg2 = MemorySegment.ofArray(arr2); try { - usk2 = DirectQuickSelectSketch.writableWrap(seg2, null, Util.DEFAULT_UPDATE_SEED); + DirectQuickSelectSketch.writableWrap(seg2, null, Util.DEFAULT_UPDATE_SEED); fail("Expected SketchesArgumentException"); } catch (final SketchesArgumentException e) { //pass diff --git a/src/test/java/org/apache/datasketches/tuple/arrayofdoubles/ArrayOfDoublesCompactSketchTest.java b/src/test/java/org/apache/datasketches/tuple/arrayofdoubles/ArrayOfDoublesCompactSketchTest.java index dbf5fc026..bfde5099b 100644 --- a/src/test/java/org/apache/datasketches/tuple/arrayofdoubles/ArrayOfDoublesCompactSketchTest.java +++ b/src/test/java/org/apache/datasketches/tuple/arrayofdoubles/ArrayOfDoublesCompactSketchTest.java @@ -126,8 +126,7 @@ public void checkGetValuesAndKeysMethods() { MemorySegment hcskSeg = MemorySegment.ofArray(hcsk.toByteArray()); - DirectArrayOfDoublesCompactSketch dcsk2 = - (DirectArrayOfDoublesCompactSketch)ArrayOfDoublesSketch.wrap(hcskSeg, Util.DEFAULT_UPDATE_SEED); + Assert.assertTrue(ArrayOfDoublesSketch.wrap(hcskSeg, Util.DEFAULT_UPDATE_SEED) instanceof DirectArrayOfDoublesCompactSketch); final double[][] values4 = dqssk.getValues(); final double[] values1d4 = dqssk.getValuesAsOneDimension(); final long[] keys4 = dqssk.getKeys();