This is an automated email from the ASF dual-hosted git repository.
leerho pushed a commit to branch move_to_17_using_FFM
in repository https://gitbox.apache.org/repos/asf/datasketches-java.git
The following commit(s) were added to refs/heads/move_to_17_using_FFM by this
push:
new 5c7f5abf Changes in ds-java required to move to java 17 as ds-java 7.x
5c7f5abf is described below
commit 5c7f5abf9f58bebb9af0732bcec09dd7688d3dbf
Author: Lee Rhodes <[email protected]>
AuthorDate: Fri May 31 17:53:39 2024 -0700
Changes in ds-java required to move to java 17 as ds-java 7.x
and compatible with the new ds-memory branch integrateJava17_v3 ->
ds-memory 3.X
---
pom.xml | 10 +-
.../org/apache/datasketches/cpc/CpcSketch.java | 2 +-
.../apache/datasketches/hll/DirectHllArray.java | 8 +-
.../java/org/apache/datasketches/theta/Sketch.java | 6 +-
.../org/apache/datasketches/theta/Sketches.java | 12 +-
.../filters/bloomfilter/BloomFilterTest.java | 13 +-
.../filters/bloomfilter/DirectBitArrayRTest.java | 4 +-
.../filters/bloomfilter/DirectBitArrayTest.java | 12 +-
...rmurHash3v2Test.java => MurmurHash3v3Test.java} | 75 +++++----
.../datasketches/hll/DirectAuxHashMapTest.java | 14 +-
.../datasketches/hll/DirectCouponListTest.java | 11 +-
.../apache/datasketches/hll/PreambleUtilTest.java | 8 +-
.../datasketches/quantiles/DebugUnionTest.java | 12 +-
.../DirectQuantilesMemoryRequestTest.java | 58 +++----
.../datasketches/quantiles/DoublesSketchTest.java | 39 +++--
.../datasketches/quantiles/PreambleUtilTest.java | 13 +-
.../datasketches/theta/CompactSketchTest.java | 12 +-
.../theta/DirectQuickSelectSketchTest.java | 166 ++++++++++----------
.../theta/HeapifyWrapSerVer1and2Test.java | 171 +++++++++++----------
.../apache/datasketches/theta/SketchesTest.java | 2 +-
.../apache/datasketches/theta/UnionImplTest.java | 26 ++--
.../datasketches/theta/UpdateSketchTest.java | 4 +-
22 files changed, 364 insertions(+), 314 deletions(-)
diff --git a/pom.xml b/pom.xml
index 35107f24..e43a426b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,7 +88,7 @@ under the License.
<!-- END:UNIQUE FOR THIS JAVA COMPONENT -->
<!-- Test -->
- <testng.version>7.5.1</testng.version>
+ <testng.version>7.10.0</testng.version>
<!-- these are TestNG groups used for excluding / including groups of
tests. See profiles section. -->
<testng.generate-java-files>generate_java_files</testng.generate-java-files>
<testng.check-cpp-files>check_cpp_files</testng.check-cpp-files>
@@ -96,7 +96,7 @@ under the License.
<!-- System-wide properties -->
<maven.version>3.6.3</maven.version> <!-- may override parent, used in
enforcer plugin -->
- <java.version>1.8</java.version>
+ <java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<argLine>-Xmx4g -Duser.language=en -Duser.country=US
-Dfile.encoding=UTF-8</argLine>
@@ -134,12 +134,12 @@ under the License.
</properties>
<dependencies>
- <!-- UNIQUE FOR THIS JAVA COMPONENT -->
+ <!-- UNIQUE FOR THIS JAVA COMPONENT
<dependency>
<groupId>org.apache.datasketches</groupId>
<artifactId>datasketches-memory</artifactId>
<version>${datasketches-memory.version}</version>
- </dependency>
+ </dependency> -->
<!-- END: UNIQUE FOR THIS JAVA COMPONENT -->
<!-- Test Scope -->
<dependency>
@@ -193,7 +193,7 @@ under the License.
<configuration>
<rules>
<requireJavaVersion>
- <version>[1.8.0,9.0),[11.0,12.0)</version>
+ <version>[1.8.0,9.0),[11.0,12.0), [17,18)</version>
</requireJavaVersion>
<requireMavenVersion>
<version>[${maven.version},)</version>
diff --git a/src/main/java/org/apache/datasketches/cpc/CpcSketch.java
b/src/main/java/org/apache/datasketches/cpc/CpcSketch.java
index a374b574..4ed89dd1 100644
--- a/src/main/java/org/apache/datasketches/cpc/CpcSketch.java
+++ b/src/main/java/org/apache/datasketches/cpc/CpcSketch.java
@@ -300,7 +300,7 @@ public final class CpcSketch {
final long cap = state.getRequiredSerializedBytes();
final WritableMemory wmem = WritableMemory.allocate((int) cap);
state.exportToMemory(wmem);
- return (byte[]) wmem.getArray();
+ return wmem.getArray();
}
/**
diff --git a/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
b/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
index 5b3e1a4f..07835da6 100644
--- a/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
+++ b/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
@@ -56,7 +56,7 @@ abstract class DirectHllArray extends AbstractHllArray {
WritableMemory wmem;
Memory mem;
Object memObj;
- long memAdd;
+ //long memAdd;
final boolean compact;
private static int checkMemCompactFlag(final WritableMemory wmem, final int
lgConfigK) {
@@ -70,7 +70,7 @@ abstract class DirectHllArray extends AbstractHllArray {
this.wmem = wmem;
mem = wmem;
memObj = wmem.getArray();
- memAdd = wmem.getCumulativeOffset(0L);
+ //memAdd = wmem.getCumulativeOffset(0L);
compact = extractCompactFlag(mem);
insertEmptyFlag(wmem, false);
}
@@ -81,7 +81,7 @@ abstract class DirectHllArray extends AbstractHllArray {
wmem = null;
this.mem = mem;
memObj = ((WritableMemory) mem).getArray();
- memAdd = mem.getCumulativeOffset(0L);
+ //memAdd = mem.getCumulativeOffset(0L);
compact = extractCompactFlag(mem);
}
@@ -90,7 +90,7 @@ abstract class DirectHllArray extends AbstractHllArray {
wmem = newWmem;
mem = newWmem;
memObj = wmem.getArray();
- memAdd = wmem.getCumulativeOffset(0L);
+ //memAdd = wmem.getCumulativeOffset(0L);
}
@Override
diff --git a/src/main/java/org/apache/datasketches/theta/Sketch.java
b/src/main/java/org/apache/datasketches/theta/Sketch.java
index cc1fd4d2..d13fe9b8 100644
--- a/src/main/java/org/apache/datasketches/theta/Sketch.java
+++ b/src/main/java/org/apache/datasketches/theta/Sketch.java
@@ -311,11 +311,11 @@ public abstract class Sketch {
* log_base2 of the number of nominal entries, which is a power of 2.
* @param lgNomEntries <a
href="{@docRoot}/resources/dictionary.html#nomEntries">Nominal Entries</a>
* @return the maximum number of storage bytes required for a CompactSketch
with the given
- * nomEntries.
+ * lgNomEntries.
*/
public static int getCompactSketchMaxBytes(final int lgNomEntries) {
- return (int)((2 << lgNomEntries) * ThetaUtil.REBUILD_THRESHOLD)
- + Family.QUICKSELECT.getMaxPreLongs() * Long.BYTES;
+ return (int)((2 << lgNomEntries) * ThetaUtil.REBUILD_THRESHOLD
+ + Family.QUICKSELECT.getMaxPreLongs()) * Long.BYTES;
}
/**
diff --git a/src/main/java/org/apache/datasketches/theta/Sketches.java
b/src/main/java/org/apache/datasketches/theta/Sketches.java
index 4b146187..077d9d5a 100644
--- a/src/main/java/org/apache/datasketches/theta/Sketches.java
+++ b/src/main/java/org/apache/datasketches/theta/Sketches.java
@@ -86,7 +86,7 @@ public final class Sketches {
* @return the maximum number of storage bytes required for a CompactSketch
with the given number
* of entries.
* @see Sketch#getMaxCompactSketchBytes(int)
- * @deprecated as a public method. Use {@link #getCompactSketchMaxBytes(int)
instead}
+ * @deprecated as a public method. Use {@link #getCompactSketchMaxBytes(int)
getCompactSketchMaxBytes(int)} instead.
*/
@Deprecated
public static int getMaxCompactSketchBytes(final int numberOfEntries) {
@@ -95,14 +95,14 @@ public final class Sketches {
/**
* Returns the maximum number of storage bytes required for a CompactSketch
given the configured
- * number of nominal entries (power of 2).
- * @param nomEntries <a
href="{@docRoot}/resources/dictionary.html#nomEntries">Nominal Entries</a>
+ * log_base2 of the number of nominal entries, which is a power of 2.
+ * @param lgNomEntries <a
href="{@docRoot}/resources/dictionary.html#nomEntries">Nominal Entries</a>
* @return the maximum number of storage bytes required for a CompactSketch
with the given
- * nomEntries.
+ * lgNomEntries.
* @see Sketch#getCompactSketchMaxBytes(int)
*/
- public static int getCompactSketchMaxBytes(final int nomEntries) {
- return Sketch.getCompactSketchMaxBytes(nomEntries);
+ public static int getCompactSketchMaxBytes(final int lgNomEntries) {
+ return Sketch.getCompactSketchMaxBytes(lgNomEntries);
}
/**
diff --git
a/src/test/java/org/apache/datasketches/filters/bloomfilter/BloomFilterTest.java
b/src/test/java/org/apache/datasketches/filters/bloomfilter/BloomFilterTest.java
index dedaf9db..7a0fbb7f 100644
---
a/src/test/java/org/apache/datasketches/filters/bloomfilter/BloomFilterTest.java
+++
b/src/test/java/org/apache/datasketches/filters/bloomfilter/BloomFilterTest.java
@@ -24,14 +24,19 @@ import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertThrows;
import static org.testng.Assert.assertTrue;
+import java.nio.ByteOrder;
+
import org.apache.datasketches.common.Family;
import org.apache.datasketches.common.SketchesArgumentException;
import org.apache.datasketches.common.SketchesReadOnlyException;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+//import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
public class BloomFilterTest {
@Test
@@ -51,8 +56,10 @@ public class BloomFilterTest {
assertFalse(bf1.isDirect());
assertFalse(bf1.isReadOnly());
- try (WritableHandle wh = WritableMemory.allocateDirect(sizeBytes)) {
- final WritableMemory wmem = wh.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(sizeBytes,
+ new DefaultMemoryRequestServer())).scope()) {
+
final BloomFilter bf2 = new BloomFilter(numBits, numHashes, seed, wmem);
assertTrue(bf2.isEmpty());
assertTrue(bf2.hasMemory());
diff --git
a/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayRTest.java
b/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayRTest.java
index 521019e6..bbedd2fb 100644
---
a/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayRTest.java
+++
b/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayRTest.java
@@ -142,8 +142,8 @@ public class DirectBitArrayRTest {
final Memory mem = bitArrayToMemory(hba);
DirectBitArrayR dba = DirectBitArrayR.wrap(mem, hba.isEmpty());
- assertThrows(AssertionError.class, () -> dba.getBit(-10));
- assertThrows(AssertionError.class, () -> dba.getBit(2048));
+ assertThrows(IndexOutOfBoundsException.class, () -> dba.getBit(-10));
+ assertThrows(IndexOutOfBoundsException.class, () -> dba.getBit(2048));
}
@Test
diff --git
a/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayTest.java
b/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayTest.java
index a45bcbb8..1df6cc9d 100644
---
a/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayTest.java
+++
b/src/test/java/org/apache/datasketches/filters/bloomfilter/DirectBitArrayTest.java
@@ -172,12 +172,12 @@ public class DirectBitArrayTest {
dba.getAndSetBit(i);
}
- assertThrows(AssertionError.class, () -> dba.getBit(-10));
- assertThrows(AssertionError.class, () -> dba.getBit(2048));
- assertThrows(AssertionError.class, () -> dba.setBit(-20));
- assertThrows(AssertionError.class, () -> dba.setBit(4096));
- assertThrows(AssertionError.class, () -> dba.getAndSetBit(-30));
- assertThrows(AssertionError.class, () -> dba.getAndSetBit(8192));
+ assertThrows(IndexOutOfBoundsException.class, () -> dba.getBit(-10));
+ assertThrows(IndexOutOfBoundsException.class, () -> dba.getBit(2048));
+ assertThrows(IndexOutOfBoundsException.class, () -> dba.setBit(-20));
+ assertThrows(IndexOutOfBoundsException.class, () -> dba.setBit(4096));
+ assertThrows(IndexOutOfBoundsException.class, () -> dba.getAndSetBit(-30));
+ assertThrows(IndexOutOfBoundsException.class, () ->
dba.getAndSetBit(8192));
}
@Test
diff --git a/src/test/java/org/apache/datasketches/hash/MurmurHash3v2Test.java
b/src/test/java/org/apache/datasketches/hash/MurmurHash3v3Test.java
similarity index 82%
rename from src/test/java/org/apache/datasketches/hash/MurmurHash3v2Test.java
rename to src/test/java/org/apache/datasketches/hash/MurmurHash3v3Test.java
index 23f369e6..8699a091 100644
--- a/src/test/java/org/apache/datasketches/hash/MurmurHash3v2Test.java
+++ b/src/test/java/org/apache/datasketches/hash/MurmurHash3v3Test.java
@@ -28,13 +28,13 @@ import static org.testng.Assert.fail;
import org.testng.annotations.Test;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.MurmurHash3v2;
+import org.apache.datasketches.memory.internal.MurmurHash3v3;
import org.apache.datasketches.memory.WritableMemory;
/**
* @author Lee Rhodes
*/
-public class MurmurHash3v2Test {
+public class MurmurHash3v3Test {
private Random rand = new Random();
private static final int trials = 1 << 20;
@@ -154,33 +154,33 @@ public class MurmurHash3v2Test {
}
private static final long[] hashV2(long[] key, long seed) {
- return MurmurHash3v2.hash(key, seed);
+ return MurmurHash3v3.hash(key, seed);
}
private static final long[] hashV2(int[] key2, long seed) {
- return MurmurHash3v2.hash(key2, seed);
+ return MurmurHash3v3.hash(key2, seed);
}
private static final long[] hashV2(char[] key, long seed) {
- return MurmurHash3v2.hash(key, seed);
+ return MurmurHash3v3.hash(key, seed);
}
private static final long[] hashV2(byte[] key, long seed) {
- return MurmurHash3v2.hash(key, seed);
+ return MurmurHash3v3.hash(key, seed);
}
//V2 single primitives
private static final long[] hashV2(long key, long seed, long[] out) {
- return MurmurHash3v2.hash(key, seed, out);
+ return MurmurHash3v3.hash(key, seed, out);
}
// private static final long[] hashV2(double key, long seed, long[] out) {
-// return MurmurHash3v2.hash(key, seed, out);
+// return MurmurHash3v3.hash(key, seed, out);
// }
// private static final long[] hashV2(String key, long seed, long[] out) {
-// return MurmurHash3v2.hash(key, seed, out);
+// return MurmurHash3v3.hash(key, seed, out);
// }
@@ -199,7 +199,7 @@ public class MurmurHash3v2Test {
for (int offset = 0; offset < 16; offset++) {
int arrLen = cap - offset;
- hash1 = MurmurHash3v2.hash(wmem, offset, arrLen, seed, hash1);
+ hash1 = MurmurHash3v3.hash(wmem, offset, arrLen, seed, hash1);
byte[] byteArr2 = new byte[arrLen];
wmem.getByteArray(offset, byteArr2, 0, arrLen);
hash2 = MurmurHash3.hash(byteArr2, seed);
@@ -222,8 +222,8 @@ public class MurmurHash3v2Test {
for (int i = 0; i < j; i++) { wmem.putByte(i, (byte) (-128 + i)); }
long[] hash1 = MurmurHash3.hash(in, 0);
- hash2 = MurmurHash3v2.hash(wmem, offset, bytes, seed, hash2);
- long[] hash3 = MurmurHash3v2.hash(in, seed);
+ hash2 = MurmurHash3v3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = MurmurHash3v3.hash(in, seed);
assertEquals(hash1, hash2);
assertEquals(hash1, hash3);
@@ -246,8 +246,8 @@ public class MurmurHash3v2Test {
for (int i = 0; i < j; i++) { wmem.putInt(i, i); }
long[] hash1 = MurmurHash3.hash(in, 0);
- hash2 = MurmurHash3v2.hash(wmem, offset, bytes, seed, hash2);
- long[] hash3 = MurmurHash3v2.hash(in, seed);
+ hash2 = MurmurHash3v3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = MurmurHash3v3.hash(in, seed);
assertEquals(hash1, hash2);
assertEquals(hash1, hash3);
@@ -270,8 +270,8 @@ public class MurmurHash3v2Test {
for (int i = 0; i < j; i++) { wmem.putInt(i, i); }
long[] hash1 = MurmurHash3.hash(in, 0);
- hash2 = MurmurHash3v2.hash(wmem, offset, bytes, seed, hash2);
- long[] hash3 = MurmurHash3v2.hash(in, seed);
+ hash2 = MurmurHash3v3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = MurmurHash3v3.hash(in, seed);
assertEquals(hash1, hash2);
assertEquals(hash1, hash3);
@@ -294,8 +294,8 @@ public class MurmurHash3v2Test {
for (int i = 0; i < j; i++) { wmem.putLong(i, i); }
long[] hash1 = MurmurHash3.hash(in, 0);
- hash2 = MurmurHash3v2.hash(wmem, offset, bytes, seed, hash2);
- long[] hash3 = MurmurHash3v2.hash(in, seed);
+ hash2 = MurmurHash3v3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = MurmurHash3v3.hash(in, seed);
assertEquals(hash1, hash2);
assertEquals(hash1, hash3);
@@ -313,8 +313,8 @@ public class MurmurHash3v2Test {
WritableMemory wmem = WritableMemory.writableWrap(in);
long[] hash1 = MurmurHash3.hash(in, 0);
- hash2 = MurmurHash3v2.hash(wmem, offset, bytes, seed, hash2);
- long[] hash3 = MurmurHash3v2.hash(in, seed);
+ hash2 = MurmurHash3v3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = MurmurHash3v3.hash(in, seed);
assertEquals(hash1, hash2);
assertEquals(hash1, hash3);
@@ -325,62 +325,57 @@ public class MurmurHash3v2Test {
long seed = 123;
long[] hashOut = new long[2];
try {
- MurmurHash3v2.hash(Memory.wrap(new long[0]), 0, 0, seed, hashOut);
//mem empty
- fail();
- } catch (final IllegalArgumentException e) { } //OK
- try {
- Memory mem = null;
- MurmurHash3v2.hash(mem, 0, 0, seed, hashOut); //mem null
+ MurmurHash3v3.hash(Memory.wrap(new long[0]), 0, 0, seed, hashOut);
//mem empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
String s = "";
- MurmurHash3v2.hash(s, seed, hashOut); //string empty
+ MurmurHash3v3.hash(s, seed, hashOut); //string empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
String s = null;
- MurmurHash3v2.hash(s, seed, hashOut); //string null
+ MurmurHash3v3.hash(s, seed, hashOut); //string null
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
byte[] barr = new byte[0];
- MurmurHash3v2.hash(barr, seed); //byte[] empty
+ MurmurHash3v3.hash(barr, seed); //byte[] empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
byte[] barr = null;
- MurmurHash3v2.hash(barr, seed); //byte[] null
+ MurmurHash3v3.hash(barr, seed); //byte[] null
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
char[] carr = new char[0];
- MurmurHash3v2.hash(carr, seed); //char[] empty
+ MurmurHash3v3.hash(carr, seed); //char[] empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
char[] carr = null;
- MurmurHash3v2.hash(carr, seed); //char[] null
+ MurmurHash3v3.hash(carr, seed); //char[] null
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
int[] iarr = new int[0];
- MurmurHash3v2.hash(iarr, seed); //int[] empty
+ MurmurHash3v3.hash(iarr, seed); //int[] empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
int[] iarr = null;
- MurmurHash3v2.hash(iarr, seed); //int[] null
+ MurmurHash3v3.hash(iarr, seed); //int[] null
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
long[] larr = new long[0];
- MurmurHash3v2.hash(larr, seed); //long[] empty
+ MurmurHash3v3.hash(larr, seed); //long[] empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
long[] larr = null;
- MurmurHash3v2.hash(larr, seed); //long[] null
+ MurmurHash3v3.hash(larr, seed); //long[] null
fail();
} catch (final IllegalArgumentException e) { } //OK
}
@@ -390,9 +385,9 @@ public class MurmurHash3v2Test {
long seed = 123;
long[] hashOut = new long[2];
String s = "123";
- assertTrue(MurmurHash3v2.hash(s, seed, hashOut)[0] != 0);
+ assertTrue(MurmurHash3v3.hash(s, seed, hashOut)[0] != 0);
long v = 123;
- assertTrue(MurmurHash3v2.hash(v, seed, hashOut)[0] != 0);
+ assertTrue(MurmurHash3v3.hash(v, seed, hashOut)[0] != 0);
}
@Test
@@ -420,8 +415,8 @@ public class MurmurHash3v2Test {
WritableMemory wmem = WritableMemory.writableWrap(dataArr);
long[] hash1 = MurmurHash3.hash(dataArr, 0);
- hash2 = MurmurHash3v2.hash(wmem, offset, bytes, seed, hash2);
- long[] hash3 = MurmurHash3v2.hash(dbl, seed, hash2);
+ hash2 = MurmurHash3v3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = MurmurHash3v3.hash(dbl, seed, hash2);
assertEquals(hash1, hash2);
assertEquals(hash1, hash3);
diff --git
a/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java
b/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java
index 78b18c1c..7b3cd5c6 100644
--- a/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java
+++ b/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java
@@ -31,12 +31,11 @@ import java.util.HashMap;
import org.apache.datasketches.common.SketchesStateException;
import org.apache.datasketches.memory.DefaultMemoryRequestServer;
-import org.testng.annotations.Test;
-
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
+import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
/**
* @author Lee Rhodes
@@ -48,11 +47,12 @@ public class DirectAuxHashMapTest {
int lgConfigK = 4;
TgtHllType tgtHllType = TgtHllType.HLL_4;
int n = 8; //put lgConfigK == 4 into HLL mode
- int bytes = HllSketch.getMaxUpdatableSerializationBytes(lgConfigK,
tgtHllType);
+ long bytes = HllSketch.getMaxUpdatableSerializationBytes(lgConfigK,
tgtHllType);
HllSketch hllSketch;
- try (WritableHandle handle = WritableMemory.allocateDirect(bytes,
- ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) {
- WritableMemory wmem = handle.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(bytes, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
hllSketch = new HllSketch(lgConfigK, tgtHllType, wmem);
for (int i = 0; i < n; i++) {
hllSketch.update(i);
diff --git
a/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java
b/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java
index 38cbc497..c6c006f2 100644
--- a/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java
+++ b/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java
@@ -27,8 +27,11 @@ import static org.testng.Assert.assertTrue;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+//import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
/**
@@ -69,9 +72,9 @@ public class DirectCouponListTest {
//println("DIRECT");
byte[] barr1;
- WritableMemory wmem = null;
- try (WritableHandle hand = WritableMemory.allocateDirect(bytes)) {
- wmem = hand.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(bytes,
+ new DefaultMemoryRequestServer())).scope()) {
//byte[] byteArr = new byte[bytes];
//WritableMemory wmem = WritableMemory.wrap(byteArr);
hllSketch = new HllSketch(lgConfigK, tgtHllType, wmem);
diff --git a/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java
b/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java
index cd1e0cbc..deb8c5be 100644
--- a/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java
+++ b/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java
@@ -109,7 +109,7 @@ public class PreambleUtilTest {
HllSketch sk = new HllSketch(12);
byte[] memObj = sk.toCompactByteArray();
WritableMemory wmem = WritableMemory.writableWrap(memObj);
- long memAdd = wmem.getCumulativeOffset(0);
+ //long memAdd = wmem.getCumulativeOffset(0);
HllSketch bad;
//checkFamily
@@ -148,7 +148,7 @@ public class PreambleUtilTest {
for (int i = 1; i <= 15; i++) { sk.update(i); }
memObj = sk.toCompactByteArray();
wmem = WritableMemory.writableWrap(memObj);
- memAdd = wmem.getCumulativeOffset(0);
+ //memAdd = wmem.getCumulativeOffset(0);
//check wrong PreInts and SET
try {
@@ -162,7 +162,7 @@ public class PreambleUtilTest {
for (int i = 15; i <= 1000; i++) { sk.update(i); }
memObj = sk.toCompactByteArray();
wmem = WritableMemory.writableWrap(memObj);
- memAdd = wmem.getCumulativeOffset(0);
+ //memAdd = wmem.getCumulativeOffset(0);
//check wrong PreInts and HLL
try {
@@ -179,7 +179,7 @@ public class PreambleUtilTest {
int bytes = HllSketch.getMaxUpdatableSerializationBytes(4,
TgtHllType.HLL_4);
WritableMemory wmem = WritableMemory.allocate(bytes);
Object memObj = wmem.getArray();
- long memAdd = wmem.getCumulativeOffset(0L);
+ //long memAdd = wmem.getCumulativeOffset(0L);
HllSketch sk = new HllSketch(4, TgtHllType.HLL_4, wmem);
int flags = extractFlags(wmem);
assertEquals(flags, EMPTY_FLAG_MASK);
diff --git
a/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java
b/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java
index bbf89f33..d19d3b47 100644
--- a/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java
+++ b/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java
@@ -23,10 +23,15 @@ import static org.apache.datasketches.common.Util.LS;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
+import java.nio.ByteOrder;
import java.util.HashSet;
import org.testng.annotations.Test;
-import org.apache.datasketches.memory.WritableHandle;
+
+import jdk.incubator.foreign.ResourceScope;
+
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+//import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
import org.apache.datasketches.quantilescommon.QuantilesDoublesSketchIterator;
@@ -61,8 +66,9 @@ public class DebugUnionTest {
DoublesSketch.setRandom(1); //make deterministic for test
DoublesUnion dUnion;
DoublesSketch dSketch;
- try ( WritableHandle wdh = WritableMemory.allocateDirect(10_000_000) ) {
- WritableMemory wmem = wdh.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem =
WritableMemory.allocateDirect(10_000_000,
+ new DefaultMemoryRequestServer())).scope()) {
dUnion = DoublesUnion.builder().setMaxK(8).build(wmem);
for (int s = 0; s < numSketches; s++) { dUnion.union(sketchArr[s]); }
dSketch = dUnion.getResult(); //result is on heap
diff --git
a/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java
b/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java
index 5c2882c5..84145239 100644
---
a/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java
+++
b/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java
@@ -30,9 +30,11 @@ import
org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.testng.annotations.Test;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+//import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
+import jdk.incubator.foreign.ResourceScope;
+
/**
* The concept for these tests is that the "MemoryManager" classes below are
proxies for the
* implementation that <i>owns</i> the native memory allocations, thus is
responsible for
@@ -47,10 +49,11 @@ public class DirectQuantilesMemoryRequestTest {
final int initBytes = ((2 * k) + 4) << 3; //just the BB
//########## Owning Implementation
- // This part would actually be part of the Memory owning implemention so
it is faked here
- try (WritableHandle wdh = WritableMemory.allocateDirect(initBytes,
- ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) {
- final WritableMemory wmem = wdh.getWritable();
+ // This part would actually be part of the Memory owning implementation so
it is faked here
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem =
WritableMemory.allocateDirect(initBytes, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
println("Initial mem size: " + wmem.getCapacity());
//########## Receiving Application
@@ -84,13 +87,12 @@ public class DirectQuantilesMemoryRequestTest {
final int u = 32; // don't need the BB to fill here
final int initBytes = (4 + (u / 2)) << 3; // not enough to hold everything
- try (WritableHandle memHandler = WritableMemory.allocateDirect(initBytes,
- ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) {
- //final MemoryManager memMgr = new MemoryManager();
- //final WritableMemory mem1 = memMgr.request(initBytes);
- final WritableMemory mem1 = memHandler.getWritable();
- println("Initial mem size: " + mem1.getCapacity());
- final UpdateDoublesSketch usk1 =
DoublesSketch.builder().setK(k).build(mem1);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem =
WritableMemory.allocateDirect(initBytes, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
+ println("Initial mem size: " + wmem.getCapacity());
+ final UpdateDoublesSketch usk1 =
DoublesSketch.builder().setK(k).build(wmem);
for (int i = 1; i <= u; i++) {
usk1.update(i);
}
@@ -108,13 +110,12 @@ public class DirectQuantilesMemoryRequestTest {
final int u = (2 * k) - 1; //just to fill the BB
final int initBytes = ((2 * k) + 4) << 3; //just room for BB
- try (WritableHandle memHandler = WritableMemory.allocateDirect(initBytes,
- ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) {
- //final MemoryManager memMgr = new MemoryManager();
- //final WritableMemory mem1 = memMgr.request(initBytes);
- final WritableMemory mem1 = memHandler.getWritable();
- println("Initial mem size: " + mem1.getCapacity());
- final UpdateDoublesSketch usk1 =
DoublesSketch.builder().setK(k).build(mem1);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem =
WritableMemory.allocateDirect(initBytes, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
+ println("Initial mem size: " + wmem.getCapacity());
+ final UpdateDoublesSketch usk1 =
DoublesSketch.builder().setK(k).build(wmem);
for (int i = 1; i <= u; i++) {
usk1.update(i);
}
@@ -138,21 +139,22 @@ public class DirectQuantilesMemoryRequestTest {
final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build();
final Memory origSketchMem = Memory.wrap(usk1.toByteArray());
- try (WritableHandle memHandle = WritableMemory.allocateDirect(initBytes,
- ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) {
- WritableMemory mem = memHandle.getWritable();
- origSketchMem.copyTo(0, mem, 0, initBytes);
- UpdateDoublesSketch usk2 = DirectUpdateDoublesSketch.wrapInstance(mem);
- assertTrue(mem.isSameResource(usk2.getMemory()));
- assertEquals(mem.getCapacity(), initBytes);
- assertTrue(mem.isDirect());
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem =
WritableMemory.allocateDirect(initBytes, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
+ origSketchMem.copyTo(0, wmem, 0, initBytes);
+ UpdateDoublesSketch usk2 = DirectUpdateDoublesSketch.wrapInstance(wmem);
+ assertTrue(wmem.isSameResource(usk2.getMemory()));
+ assertEquals(wmem.getCapacity(), initBytes);
+ assertTrue(wmem.isDirect());
assertTrue(usk2.isEmpty());
//update the sketch forcing it to grow on-heap
for (int i = 1; i <= 5; i++) { usk2.update(i); }
assertEquals(usk2.getN(), 5);
WritableMemory mem2 = usk2.getMemory();
- assertFalse(mem.isSameResource(mem2));
+ assertFalse(wmem.isSameResource(mem2));
assertFalse(mem2.isDirect()); //should now be on-heap
final int expectedSize = COMBINED_BUFFER + ((2 * k) << 3);
diff --git
a/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java
b/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java
index 5bc5b4ea..fbac2af1 100644
--- a/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java
+++ b/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java
@@ -28,13 +28,15 @@ import static org.testng.Assert.fail;
import java.nio.ByteOrder;
import org.apache.datasketches.memory.DefaultMemoryRequestServer;
-import org.apache.datasketches.memory.WritableHandle;
+//import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
import org.apache.datasketches.quantilescommon.DoublesSortedView;
import org.apache.datasketches.quantilescommon.DoublesSortedViewIterator;
import org.testng.Assert;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
public class DoublesSketchTest {
@Test
@@ -140,15 +142,17 @@ public class DoublesSketchTest {
@Test
public void directSketchShouldMoveOntoHeapEventually() {
- try (WritableHandle wdh = WritableMemory.allocateDirect(1000,
- ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) {
- WritableMemory mem = wdh.getWritable();
- UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem);
- Assert.assertTrue(sketch.isSameResource(mem));
+
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(1000, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
+ UpdateDoublesSketch sketch = DoublesSketch.builder().build(wmem);
+ Assert.assertTrue(sketch.isSameResource(wmem));
for (int i = 0; i < 1000; i++) {
sketch.update(i);
}
- Assert.assertFalse(sketch.isSameResource(mem));
+ Assert.assertFalse(sketch.isSameResource(wmem));
} catch (final Exception e) {
throw new RuntimeException(e);
}
@@ -157,13 +161,14 @@ public class DoublesSketchTest {
@Test
public void directSketchShouldMoveOntoHeapEventually2() {
int i = 0;
- try (WritableHandle wdh =
- WritableMemory.allocateDirect(50, ByteOrder.LITTLE_ENDIAN, new
DefaultMemoryRequestServer())) {
- WritableMemory mem = wdh.getWritable();
- UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem);
- Assert.assertTrue(sketch.isSameResource(mem));
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(50, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
+ UpdateDoublesSketch sketch = DoublesSketch.builder().build(wmem);
+ Assert.assertTrue(sketch.isSameResource(wmem));
for (; i < 1000; i++) {
- if (sketch.isSameResource(mem)) {
+ if (sketch.isSameResource(wmem)) {
sketch.update(i);
} else {
//println("MOVED OUT at i = " + i);
@@ -177,9 +182,11 @@ public class DoublesSketchTest {
@Test
public void checkEmptyDirect() {
- try (WritableHandle wdh = WritableMemory.allocateDirect(1000)) {
- WritableMemory mem = wdh.getWritable();
- UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(1000, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
+ UpdateDoublesSketch sketch = DoublesSketch.builder().build(wmem);
sketch.toByteArray(); //exercises a specific path
} catch (final Exception e) {
throw new RuntimeException(e);
diff --git
a/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java
b/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java
index be2f328b..adf916ef 100644
--- a/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java
+++ b/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java
@@ -37,19 +37,24 @@ import static
org.apache.datasketches.quantiles.PreambleUtil.insertPreLongs;
import static org.apache.datasketches.quantiles.PreambleUtil.insertSerVer;
import static org.testng.Assert.assertEquals;
-import org.testng.annotations.Test;
+import java.nio.ByteOrder;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
+import org.testng.annotations.Test;
+
+import jdk.incubator.foreign.ResourceScope;
public class PreambleUtilTest {
@Test
public void checkInsertsAndExtracts() {
final int bytes = 32;
- try (WritableHandle offHeapMemHandler =
WritableMemory.allocateDirect(bytes)) {
- final WritableMemory offHeapMem = offHeapMemHandler.getWritable();
+ WritableMemory offHeapMem;
+ try (ResourceScope scope = (offHeapMem =
WritableMemory.allocateDirect(bytes, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
+
final WritableMemory onHeapMem = WritableMemory.writableWrap(new
byte[bytes]);
onHeapMem.clear();
diff --git a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
index 42b6069d..1ad55696 100644
--- a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
@@ -26,13 +26,18 @@ import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
+import java.nio.ByteOrder;
+
import org.apache.datasketches.common.Family;
import org.apache.datasketches.common.SketchesArgumentException;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+//import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
/**
* @author Lee Rhodes
*/
@@ -78,8 +83,9 @@ public class CompactSketchTest {
//Prepare Memory for direct
int bytes = usk.getCompactBytes(); //for Compact
- try (WritableHandle wdh = WritableMemory.allocateDirect(bytes)) {
- WritableMemory directMem = wdh.getWritable();
+ WritableMemory directMem;
+ try (ResourceScope scope = (directMem =
WritableMemory.allocateDirect(bytes,
+ new DefaultMemoryRequestServer())).scope()) {
/**Via CompactSketch.compact**/
refSk = usk.compact(ordered, directMem);
diff --git
a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
index 5191c7c6..1f1bfa9e 100644
---
a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
+++
b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
@@ -38,19 +38,23 @@ import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
+import java.nio.ByteOrder;
import java.util.Arrays;
import org.apache.datasketches.common.Family;
import org.apache.datasketches.common.ResizeFactor;
import org.apache.datasketches.common.SketchesArgumentException;
import org.apache.datasketches.common.SketchesReadOnlyException;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+//import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
import org.apache.datasketches.thetacommon.HashOperations;
import org.apache.datasketches.thetacommon.ThetaUtil;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
/**
* @author Lee Rhodes
*/
@@ -59,10 +63,10 @@ public class DirectQuickSelectSketchTest {
@Test//(expectedExceptions = SketchesArgumentException.class)
public void checkBadSerVer() {
int k = 512;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertTrue(usk.isEmpty());
@@ -73,9 +77,9 @@ public class DirectQuickSelectSketchTest {
assertEquals(usk.getEstimate(), k, 0.0);
assertEquals(sk1.getRetainedEntries(false), k);
- mem.putByte(SER_VER_BYTE, (byte) 0); //corrupt the SerVer byte
+ wmem.putByte(SER_VER_BYTE, (byte) 0); //corrupt the SerVer byte
- Sketch.wrap(mem);
+ Sketch.wrap(wmem);
} catch (final Exception e) {
if (e instanceof SketchesArgumentException) {}
else { throw new RuntimeException(e); }
@@ -85,9 +89,9 @@ public class DirectQuickSelectSketchTest {
@Test//(expectedExceptions = SketchesArgumentException.class)
public void checkConstructorKtooSmall() {
int k = 8;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
- UpdateSketch.builder().setNominalEntries(k).build(mem);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
+ UpdateSketch.builder().setNominalEntries(k).build(wmem);
} catch (final Exception e) {
if (e instanceof SketchesArgumentException) {}
else { throw new RuntimeException(e); }
@@ -97,9 +101,9 @@ public class DirectQuickSelectSketchTest {
@Test//(expectedExceptions = SketchesArgumentException.class)
public void checkConstructorMemTooSmall() {
int k = 16;
- try (WritableHandle h = makeNativeMemory(k/2)) {
- WritableMemory mem = h.getWritable();
- UpdateSketch.builder().setNominalEntries(k).build(mem);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k/2)).scope()) {
+ UpdateSketch.builder().setNominalEntries(k).build(wmem);
} catch (final Exception e) {
if (e instanceof SketchesArgumentException) {}
else { throw new RuntimeException(e); }
@@ -124,10 +128,10 @@ public class DirectQuickSelectSketchTest {
int k = 512;
int u = 2*k; //thus estimating
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch sk1 =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch sk1 =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
for (int i=0; i<u; i++) { sk1.update(i); }
double sk1est = sk1.getEstimate();
@@ -142,7 +146,7 @@ public class DirectQuickSelectSketchTest {
assertTrue(sk1.hasMemory());
assertEquals(sk1.getCurrentPreambleLongs(), 3);
- UpdateSketch sk2 = Sketches.heapifyUpdateSketch(mem);
+ UpdateSketch sk2 = Sketches.heapifyUpdateSketch(wmem);
assertEquals(sk2.getEstimate(), sk1est);
assertEquals(sk2.getLowerBound(2), sk1lb);
assertEquals(sk2.getUpperBound(2), sk1ub);
@@ -196,10 +200,10 @@ public class DirectQuickSelectSketchTest {
int k = 512;
long seed1 = 1021;
long seed2 = ThetaUtil.DEFAULT_UPDATE_SEED;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setSeed(seed1).setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setSeed(seed1).setNominalEntries(k).build(wmem);
byte[] byteArray = usk.toByteArray();
Memory srcMem = Memory.wrap(byteArray);
Sketch.heapify(srcMem, seed2);
@@ -212,11 +216,11 @@ public class DirectQuickSelectSketchTest {
@Test//(expectedExceptions = SketchesArgumentException.class)
public void checkCorruptLgNomLongs() {
int k = 16;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
- UpdateSketch.builder().setNominalEntries(k).build(mem);
- mem.putByte(LG_NOM_LONGS_BYTE, (byte)2); //corrupt
- Sketch.heapify(mem, ThetaUtil.DEFAULT_UPDATE_SEED);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
+ UpdateSketch.builder().setNominalEntries(k).build(wmem);
+ wmem.putByte(LG_NOM_LONGS_BYTE, (byte)2); //corrupt
+ Sketch.heapify(wmem, ThetaUtil.DEFAULT_UPDATE_SEED);
} catch (final Exception e) {
if (e instanceof SketchesArgumentException) {}
else { throw new RuntimeException(e); }
@@ -226,10 +230,10 @@ public class DirectQuickSelectSketchTest {
@Test
public void checkHeapifyByteArrayExact() {
int k = 512;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
for (int i=0; i< k; i++) { usk.update(i); }
@@ -259,9 +263,9 @@ public class DirectQuickSelectSketchTest {
public void checkHeapifyByteArrayEstimating() {
int k = 4096;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
for (int i=0; i<u; i++) { usk.update(i); }
@@ -289,9 +293,9 @@ public class DirectQuickSelectSketchTest {
int k = 512;
int u = 2*k; //thus estimating
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
- UpdateSketch sk1 =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
+ UpdateSketch sk1 =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
for (int i=0; i<u; i++) { sk1.update(i); }
double sk1est = sk1.getEstimate();
@@ -299,7 +303,7 @@ public class DirectQuickSelectSketchTest {
double sk1ub = sk1.getUpperBound(2);
assertTrue(sk1.isEstimationMode());
- Sketch sk2 = Sketch.wrap(mem);
+ Sketch sk2 = Sketch.wrap(wmem);
assertEquals(sk2.getEstimate(), sk1est);
assertEquals(sk2.getLowerBound(2), sk1lb);
@@ -315,10 +319,10 @@ public class DirectQuickSelectSketchTest {
public void checkDQStoCompactForms() {
int k = 512;
int u = 4*k; //thus estimating
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertEquals(usk.getClass().getSimpleName(), "DirectQuickSelectSketch");
@@ -385,10 +389,10 @@ public class DirectQuickSelectSketchTest {
@Test
public void checkDQStoCompactEmptyForms() {
int k = 512;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
//empty
usk.toString(false, true, 0, false); //exercise toString
@@ -431,10 +435,10 @@ public class DirectQuickSelectSketchTest {
int k = 4096;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertTrue(usk.isEmpty());
@@ -452,10 +456,10 @@ public class DirectQuickSelectSketchTest {
int k = 4096;
float p = (float)0.5;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setP(p).setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setP(p).setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
for (int i = 0; i < k; i++ ) { usk.update(i); }
@@ -478,10 +482,10 @@ public class DirectQuickSelectSketchTest {
@Test
public void checkErrorBounds() {
int k = 512;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
//Exact mode
for (int i = 0; i < k; i++ ) { usk.update(i); }
@@ -514,10 +518,10 @@ public class DirectQuickSelectSketchTest {
//virgin, p = 1.0
int k = 1024;
float p = (float)1.0;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setP(p).setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setP(p).setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertTrue(usk.isEmpty());
@@ -527,7 +531,7 @@ public class DirectQuickSelectSketchTest {
//virgin, p = .001
p = (float)0.001;
- byte[] memArr2 = new byte[(int) mem.getCapacity()];
+ byte[] memArr2 = new byte[(int) wmem.getCapacity()];
WritableMemory mem2 = WritableMemory.writableWrap(memArr2);
UpdateSketch usk2 =
UpdateSketch.builder().setP(p).setNominalEntries(k).build(mem2);
sk1 = (DirectQuickSelectSketch)usk2;
@@ -554,10 +558,10 @@ public class DirectQuickSelectSketchTest {
public void checkUpperAndLowerBounds() {
int k = 512;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
for (int i = 0; i < u; i++ ) { usk.update(i); }
@@ -575,10 +579,10 @@ public class DirectQuickSelectSketchTest {
public void checkRebuild() {
int k = 512;
int u = 4*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertTrue(usk.isEmpty());
@@ -604,10 +608,10 @@ public class DirectQuickSelectSketchTest {
public void checkResetAndStartingSubMultiple() {
int k = 512;
int u = 4*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertTrue(usk.isEmpty());
@@ -635,10 +639,10 @@ public class DirectQuickSelectSketchTest {
public void checkExactModeMemoryArr() {
int k = 4096;
int u = 4096;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertTrue(usk.isEmpty());
@@ -656,10 +660,10 @@ public class DirectQuickSelectSketchTest {
int k = 4096;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(mem);
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertTrue(usk.isEmpty());
@@ -678,9 +682,11 @@ public class DirectQuickSelectSketchTest {
int u = 2*k;
int memCapacity = (k << 4) + (Family.QUICKSELECT.getMinPreLongs() << 3);
- try(WritableHandle memHandler =
WritableMemory.allocateDirect(memCapacity)) {
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem =
WritableMemory.allocateDirect(memCapacity,
+ new DefaultMemoryRequestServer())).scope()) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(memHandler.getWritable());
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for
internal checks
assertTrue(usk.isEmpty());
@@ -698,9 +704,10 @@ public class DirectQuickSelectSketchTest {
public void checkConstructReconstructFromMemory() {
int k = 4096;
int u = 2*k;
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = makeNativeMemory(k)).scope()) {
- try (WritableHandle h = makeNativeMemory(k)) {
- UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(h.getWritable());
+ UpdateSketch usk =
UpdateSketch.builder().setNominalEntries(k).build(wmem);
assertTrue(usk.isEmpty());
for (int i = 0; i< u; i++) { usk.update(i); } //force estimation
@@ -868,8 +875,10 @@ public class DirectQuickSelectSketchTest {
int k = 1 << 12;
int u = 2 * k;
int bytes = Sketches.getMaxUpdateSketchBytes(k);
- try (WritableHandle wdh = WritableMemory.allocateDirect(bytes/2)) {
//will request
- WritableMemory wmem = wdh.getWritable();
+
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(bytes /
2, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
UpdateSketch sketch =
Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
assertTrue(sketch.isSameResource(wmem));
for (int i = 0; i < u; i++) { sketch.update(i); }
@@ -884,8 +893,9 @@ public class DirectQuickSelectSketchTest {
int k = 1 << 12;
int u = 2 * k;
int bytes = Sketches.getMaxUpdateSketchBytes(k);
- try (WritableHandle wdh = WritableMemory.allocateDirect(bytes/2)) { //will
request
- WritableMemory wmem = wdh.getWritable();
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(bytes /
2, 1,
+ ByteOrder.nativeOrder(), new
DefaultMemoryRequestServer())).scope()) {
UpdateSketch sketch =
Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
for (int i = 0; i < u; i++) { sketch.update(i); }
double est1 = sketch.getEstimate();
@@ -929,8 +939,8 @@ public class DirectQuickSelectSketchTest {
return (k << 4) + (Family.QUICKSELECT.getMinPreLongs() << 3);
}
- private static WritableHandle makeNativeMemory(int k) {
- return WritableMemory.allocateDirect(getMaxBytes(k));
+ private static WritableMemory makeNativeMemory(int k) {
+ return WritableMemory.allocateDirect(getMaxBytes(k), new
DefaultMemoryRequestServer());
}
}
diff --git
a/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java
b/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java
index bd7652bd..d3617c67 100644
---
a/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java
+++
b/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java
@@ -23,13 +23,15 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
import org.apache.datasketches.thetacommon.ThetaUtil;
import org.apache.datasketches.tuple.Util;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
@SuppressWarnings("resource")
public class HeapifyWrapSerVer1and2Test {
private static final short defaultSeedHash =
Util.computeSeedHash(ThetaUtil.DEFAULT_UPDATE_SEED);
@@ -282,32 +284,32 @@ public class HeapifyWrapSerVer1and2Test {
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();
+ WritableMemory wmem;
//SV3 test
- wh = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable());
+ wmem = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertTrue(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV2 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable());
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk,
seed));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV1 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable());
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
}
@Test
@@ -318,32 +320,32 @@ public class HeapifyWrapSerVer1and2Test {
UpdateSketch sv3usk =
UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build();
for (int i=0; i<k; i++) { sv3usk.update(i); }
CompactSketch sv3cskResult;
- WritableHandle wh;
+ WritableMemory wmem;
CompactSketch sv3csk = sv3usk.compact();
//SV3 test
- wh = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable());
+ wmem = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertTrue(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV2 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable());
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk,
seed));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV1 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable());
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), defaultSeedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
}
@Test
@@ -354,32 +356,32 @@ public class HeapifyWrapSerVer1and2Test {
UpdateSketch sv3usk =
UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build();
for (int i=0; i<k; i++) { sv3usk.update(i); }
CompactSketch sv3cskResult;
- WritableHandle wh;
+ WritableMemory wmem;
CompactSketch sv3csk = sv3usk.compact();
//SV3 test
- wh = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertTrue(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV2 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk,
seed));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV1 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {/* ignore */}
+ try { wmem.close(); } catch (Exception e) {/* ignore */}
}
@Test
@@ -390,32 +392,32 @@ public class HeapifyWrapSerVer1and2Test {
UpdateSketch sv3usk =
UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build();
for (int i=0; i<k; i++) { sv3usk.update(i); }
CompactSketch sv3cskResult;
- WritableHandle wh;
+ WritableMemory wmem;
CompactSketch sv3csk = sv3usk.compact();
//SV3 test
- wh = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertTrue(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV2 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk,
seed));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV1 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
- sv3cskResult = Sketches.wrapCompactSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
+ sv3cskResult = Sketches.wrapCompactSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
}
@Test
@@ -426,32 +428,32 @@ public class HeapifyWrapSerVer1and2Test {
UpdateSketch sv3usk =
UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build();
for (int i=0; i<k; i++) { sv3usk.update(i); }
CompactSketch sv3cskResult;
- WritableHandle wh;
+ WritableMemory wmem;
CompactSketch sv3csk = sv3usk.compact();
//SV3 test
- wh = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable());
+ wmem = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertTrue(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV2 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable());
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk,
seed));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV1 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable());
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
}
@Test
@@ -462,32 +464,32 @@ public class HeapifyWrapSerVer1and2Test {
UpdateSketch sv3usk =
UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build();
for (int i=0; i<k; i++) { sv3usk.update(i); }
CompactSketch sv3cskResult;
- WritableHandle wh;
+ WritableMemory wmem;
CompactSketch sv3csk = sv3usk.compact();
//SV3 test
- wh = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable());
+ wmem = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertTrue(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV2 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable());
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk,
seed));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV1 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable());
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), defaultSeedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
}
@Test
@@ -498,32 +500,32 @@ public class HeapifyWrapSerVer1and2Test {
UpdateSketch sv3usk =
UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build();
for (int i=0; i<k; i++) { sv3usk.update(i); }
CompactSketch sv3cskResult;
- WritableHandle wh;
+ WritableMemory wmem;
CompactSketch sv3csk = sv3usk.compact();
//SV3 test
- wh = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertTrue(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV2 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk,
seed));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV1 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
}
@Test
@@ -534,40 +536,39 @@ public class HeapifyWrapSerVer1and2Test {
UpdateSketch sv3usk =
UpdateSketch.builder().setNominalEntries(k).setSeed(seed).build();
for (int i=0; i<k; i++) { sv3usk.update(i); }
CompactSketch sv3cskResult;
- WritableHandle wh;
+ WritableMemory wmem;
CompactSketch sv3csk = sv3usk.compact();
//SV3 test
- wh = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(Memory.wrap(sv3csk.toByteArray()));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertTrue(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV2 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk, seed));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer2(sv3csk,
seed));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
//SV1 test
- wh = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
- sv3cskResult = (CompactSketch) Sketches.wrapSketch(wh.getWritable(), seed);
+ wmem = putOffHeap(BackwardConversions.convertSerVer3toSerVer1(sv3csk));
+ sv3cskResult = (CompactSketch) Sketches.wrapSketch(wmem, seed);
assertEquals(sv3cskResult.getEstimate(), sv3usk.getEstimate());
assertEquals(sv3cskResult.getSeedHash(), seedHash);
assertFalse(sv3cskResult.isDirect());
- try { wh.close(); } catch (Exception e) {}
+ try { wmem.close(); } catch (Exception e) {}
}
- private static WritableHandle putOffHeap(Memory heapMem) {
+ private static WritableMemory putOffHeap(Memory heapMem) {
final long cap = heapMem.getCapacity();
- WritableHandle wh = WritableMemory.allocateDirect(cap);
- WritableMemory wmem = wh.getWritable();
+ WritableMemory wmem = WritableMemory.allocateDirect(cap, new
DefaultMemoryRequestServer());
heapMem.copyTo(0, wmem, 0, cap);
- return wh;
+ return wmem;
}
@Test
diff --git a/src/test/java/org/apache/datasketches/theta/SketchesTest.java
b/src/test/java/org/apache/datasketches/theta/SketchesTest.java
index 84942fe2..3adf3211 100644
--- a/src/test/java/org/apache/datasketches/theta/SketchesTest.java
+++ b/src/test/java/org/apache/datasketches/theta/SketchesTest.java
@@ -145,7 +145,7 @@ public class SketchesTest {
assertEquals(24+(k+1)*8, maxCompSkBytes);
final int compSkMaxBytes = getCompactSketchMaxBytes(lgK); {
- assertEquals(compSkMaxBytes, ((2 << lgK) * 15) / 16 +
(Family.QUICKSELECT.getMaxPreLongs() << 3));
+ assertEquals(compSkMaxBytes, (((2 << lgK) * 15) / 16 +
Family.QUICKSELECT.getMaxPreLongs()) << 3);
}
final int maxSkBytes = getMaxUpdateSketchBytes(k);
diff --git a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
index 4a3de896..ee0fed44 100644
--- a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
+++ b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
@@ -25,13 +25,18 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
+import java.nio.ByteOrder;
+
import org.apache.datasketches.common.SketchesArgumentException;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+//import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
import org.apache.datasketches.thetacommon.ThetaUtil;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
public class UnionImplTest {
@Test
@@ -192,13 +197,13 @@ public class UnionImplTest {
final int k = 1 << 12;
final int u = 2 * k;
final int bytes = Sketches.getMaxUpdateSketchBytes(k);
- try (WritableHandle wh = WritableMemory.allocateDirect(bytes/2);
- WritableHandle wh2 = WritableMemory.allocateDirect(bytes/2) ) {
- final WritableMemory wmem = wh.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+
+ final WritableMemory wmem = WritableMemory.allocateDirect(bytes / 2, 1,
scope, ByteOrder.nativeOrder(), new DefaultMemoryRequestServer());
final UpdateSketch sketch =
Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
assertTrue(sketch.isSameResource(wmem));
- final WritableMemory wmem2 = wh2.getWritable();
+ final WritableMemory wmem2 = WritableMemory.allocateDirect(bytes / 2, 1,
scope, ByteOrder.nativeOrder(), new DefaultMemoryRequestServer());
final Union union = SetOperation.builder().buildUnion(wmem2);
assertTrue(union.isSameResource(wmem2));
@@ -224,14 +229,17 @@ public class UnionImplTest {
@Test
public void checkUnionCompactOrderedSource() {
- final int k = 1 << 12;
+ final int lgK = 12;
+ final int k = 1 << lgK;
final UpdateSketch sk = Sketches.updateSketchBuilder().build();
for (int i = 0; i < k; i++) { sk.update(i); }
final double est1 = sk.getEstimate();
- final int bytes =
Sketches.getMaxCompactSketchBytes(sk.getRetainedEntries(true));
- try (WritableHandle h = WritableMemory.allocateDirect(bytes)) {
- final WritableMemory wmem = h.getWritable();
+ final int bytes = Sketches.getCompactSketchMaxBytes(lgK);
+ WritableMemory wmem;
+ try (ResourceScope scope = (wmem = WritableMemory.allocateDirect(bytes,
+ new DefaultMemoryRequestServer())).scope()) {
+
final CompactSketch csk = sk.compact(true, wmem); //ordered, direct
final Union union = Sketches.setOperationBuilder().buildUnion();
union.union(csk);
diff --git a/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java
b/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java
index 76f4707a..90177027 100644
--- a/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java
@@ -222,8 +222,8 @@ public class UpdateSketchTest {
csk1 = sk.compact(true, cskwmem1);
csk2 = CompactOperations.memoryToCompact(skwmem, true, cskwmem2);
csk3 = CompactOperations.memoryToCompact(cskwmem1, true, cskwmem3);
- assertTrue(cskwmem1.equals(cskwmem2));
- assertTrue(cskwmem1.equals(cskwmem3));
+ assertTrue(cskwmem1.equalTo(cskwmem2));
+ assertTrue(cskwmem1.equalTo(cskwmem3));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]