You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2022/06/12 21:50:23 UTC
[datasketches-java] 04/05: Java17 pases all tests with no errors!
This is an automated email from the ASF dual-hosted git repository.
leerho pushed a commit to branch checkMemoryWith17
in repository https://gitbox.apache.org/repos/asf/datasketches-java.git
commit 3eff4f29c3fbd543618dd72b73df9a904202747b
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Sat Jun 11 22:04:54 2022 -0700
Java17 pases all tests with no errors!
---
pom.xml | 4 +-
.../org/apache/datasketches/hll/BaseHllSketch.java | 27 ++--
.../org/apache/datasketches/hll/CouponList.java | 5 -
.../apache/datasketches/hll/DirectCouponList.java | 5 -
.../apache/datasketches/hll/DirectHllArray.java | 21 +--
.../java/org/apache/datasketches/hll/HllArray.java | 5 -
.../org/apache/datasketches/hll/HllSketch.java | 5 +-
.../org/apache/datasketches/hll/HllSketchImpl.java | 5 +-
.../java/org/apache/datasketches/hll/Union.java | 5 +-
.../org/apache/datasketches/kll/KllSketch.java | 19 +--
.../quantiles/DirectCompactDoublesSketch.java | 4 +-
.../quantiles/DirectUpdateDoublesSketchR.java | 4 +-
.../datasketches/quantiles/DoublesSketch.java | 19 +--
.../datasketches/quantiles/DoublesUnion.java | 17 +-
.../datasketches/quantiles/DoublesUnionImplR.java | 4 +-
.../org/apache/datasketches/theta/AnotBimpl.java | 4 +-
.../datasketches/theta/DirectCompactSketch.java | 4 +-
.../theta/DirectQuickSelectSketchR.java | 4 +-
.../datasketches/theta/IntersectionImpl.java | 4 +-
.../apache/datasketches/theta/SetOperation.java | 19 +--
.../java/org/apache/datasketches/theta/Sketch.java | 19 +--
.../org/apache/datasketches/theta/UnionImpl.java | 4 +-
.../apache/datasketches/cpc/CpcCBinariesTest.java | 48 +++---
.../apache/datasketches/cpc/PreambleUtilTest.java | 5 +-
.../datasketches/hash/MurmurHash3v2Test.java | 68 ++++----
.../datasketches/hll/DirectAuxHashMapTest.java | 13 +-
.../datasketches/hll/DirectCouponListTest.java | 11 +-
.../org/apache/datasketches/hll/HllArrayTest.java | 4 +-
.../apache/datasketches/hll/PreambleUtilTest.java | 5 -
.../org/apache/datasketches/hll/UnionTest.java | 2 +-
.../org/apache/datasketches/kll/KllSketchTest.java | 8 +-
.../datasketches/quantiles/DebugUnionTest.java | 10 +-
.../DirectQuantilesMemoryRequestTest.java | 36 ++---
.../datasketches/quantiles/DoublesSketchTest.java | 33 ++--
.../quantiles/DoublesUnionImplTest.java | 10 +-
.../datasketches/quantiles/PreambleUtilTest.java | 10 +-
.../datasketches/theta/CompactSketchTest.java | 10 +-
.../theta/DirectQuickSelectSketchTest.java | 114 +++++++-------
.../datasketches/theta/HeapIntersectionTest.java | 2 +-
.../theta/HeapifyWrapSerVer1and2Test.java | 175 +++++++++++----------
.../datasketches/theta/SetOperationTest.java | 10 +-
.../org/apache/datasketches/theta/SketchTest.java | 8 +-
.../apache/datasketches/theta/UnionImplTest.java | 27 ++--
.../datasketches/theta/UpdateSketchTest.java | 14 +-
44 files changed, 414 insertions(+), 416 deletions(-)
diff --git a/pom.xml b/pom.xml
index fe7bdfea..0f5c139c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -131,12 +131,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>
diff --git a/src/main/java/org/apache/datasketches/hll/BaseHllSketch.java b/src/main/java/org/apache/datasketches/hll/BaseHllSketch.java
index c53a8701..30513c9f 100644
--- a/src/main/java/org/apache/datasketches/hll/BaseHllSketch.java
+++ b/src/main/java/org/apache/datasketches/hll/BaseHllSketch.java
@@ -180,24 +180,15 @@ abstract class BaseHllSketch {
abstract boolean isOutOfOrder();
/**
- * Returns true if the given Memory refers to the same underlying resource as this sketch.
- * The capacities must be the same. If <i>this</i> is a region,
- * the region offset must also be the same.
- *
- * <p>This is only relevant for HLL_4 sketches that have been configured for off-heap
- * using WritableMemory or Memory. For on-heap sketches or unions this will return false.
- *
- * <p>It is rare, but possible, the the off-heap memory that has been allocated to an HLL_4
- * sketch may not be large enough. If this should happen, the sketch makes a request for more
- * memory from the owner of the resource and then moves itself to this new location. This all
- * happens transparently to the user. This method provides a means for the user to
- * inquire of the sketch if it has, in fact, moved itself.
- *
- * @param mem the given Memory
- * @return true if the given Memory refers to the same underlying resource as this sketch or
- * union.
- */
- public abstract boolean isSameResource(Memory mem);
+ * Returns a positive number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is ≤ <i>that</i>
+ * base address.
+ * Returns a negative number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is > <i>that</i>
+ * base address.
+ * Returns a zero if there is no overlap or if one or both objects are null, not active or on heap.
+ * @param that the other BaseState object
+ * @return a long value representing the ordering and size of overlap between <i>this</i> and <i>that</i>.
+ */
+ public abstract long nativeOverlap(final Memory that);
/**
* Resets to empty, but does not change the configured values of lgConfigK and tgtHllType.
diff --git a/src/main/java/org/apache/datasketches/hll/CouponList.java b/src/main/java/org/apache/datasketches/hll/CouponList.java
index ee3eeb9b..d7fbb76f 100644
--- a/src/main/java/org/apache/datasketches/hll/CouponList.java
+++ b/src/main/java/org/apache/datasketches/hll/CouponList.java
@@ -183,11 +183,6 @@ class CouponList extends AbstractCoupons {
return false;
}
- @Override
- boolean isSameResource(final Memory mem) {
- return false;
- }
-
@Override
PairIterator iterator() {
return new IntArrayPairIterator(couponIntArr, lgConfigK);
diff --git a/src/main/java/org/apache/datasketches/hll/DirectCouponList.java b/src/main/java/org/apache/datasketches/hll/DirectCouponList.java
index 3be65455..3d5224e9 100644
--- a/src/main/java/org/apache/datasketches/hll/DirectCouponList.java
+++ b/src/main/java/org/apache/datasketches/hll/DirectCouponList.java
@@ -197,11 +197,6 @@ class DirectCouponList extends AbstractCoupons {
return mem.isDirect();
}
- @Override
- boolean isSameResource(final Memory mem) {
- return this.mem.isSameResource(mem);
- }
-
@Override
PairIterator iterator() {
final long dataStart = getMemDataStart();
diff --git a/src/main/java/org/apache/datasketches/hll/DirectHllArray.java b/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
index d623b8c0..1527b91a 100644
--- a/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
+++ b/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
@@ -55,8 +55,8 @@ import org.apache.datasketches.memory.WritableMemory;
abstract class DirectHllArray extends AbstractHllArray {
WritableMemory wmem;
Memory mem;
- Object memObj;
- long memAdd;
+ //Object memObj;
+ //long memAdd;
final boolean compact;
//Memory must be already initialized and may have data
@@ -64,8 +64,8 @@ abstract class DirectHllArray extends AbstractHllArray {
super(lgConfigK, tgtHllType, CurMode.HLL);
this.wmem = wmem;
mem = wmem;
- memObj = wmem.getArray();
- memAdd = wmem.getCumulativeOffset(0L);
+ //memObj = wmem.getArray();
+ //memAdd = wmem.getCumulativeOffset(0L);
compact = extractCompactFlag(mem);
assert !compact;
insertEmptyFlag(wmem, false);
@@ -76,8 +76,8 @@ abstract class DirectHllArray extends AbstractHllArray {
super(lgConfigK, tgtHllType, CurMode.HLL);
wmem = null;
this.mem = mem;
- memObj = ((WritableMemory) mem).getArray();
- memAdd = mem.getCumulativeOffset(0L);
+ //memObj = ((WritableMemory) mem).getArray();
+ //memAdd = mem.getCumulativeOffset(0L);
compact = extractCompactFlag(mem);
}
@@ -85,8 +85,8 @@ abstract class DirectHllArray extends AbstractHllArray {
final void updateMemory(final WritableMemory newWmem) {
wmem = newWmem;
mem = newWmem;
- memObj = wmem.getArray();
- memAdd = wmem.getCumulativeOffset(0L);
+ //memObj = wmem.getArray();
+ //memAdd = wmem.getCumulativeOffset(0L);
}
@Override
@@ -183,11 +183,6 @@ abstract class DirectHllArray extends AbstractHllArray {
return extractOooFlag(mem);
}
- @Override
- boolean isSameResource(final Memory mem) {
- return this.mem.isSameResource(mem);
- }
-
@Override
boolean isRebuildCurMinNumKxQFlag() {
return extractRebuildCurMinNumKxQFlag(mem);
diff --git a/src/main/java/org/apache/datasketches/hll/HllArray.java b/src/main/java/org/apache/datasketches/hll/HllArray.java
index 63ab6b1f..f60025e1 100644
--- a/src/main/java/org/apache/datasketches/hll/HllArray.java
+++ b/src/main/java/org/apache/datasketches/hll/HllArray.java
@@ -184,11 +184,6 @@ abstract class HllArray extends AbstractHllArray {
return oooFlag;
}
- @Override
- boolean isSameResource(final Memory mem) {
- return false;
- }
-
@Override
boolean isRebuildCurMinNumKxQFlag() {
return rebuildCurMinNumKxQ;
diff --git a/src/main/java/org/apache/datasketches/hll/HllSketch.java b/src/main/java/org/apache/datasketches/hll/HllSketch.java
index e401c1e2..7c1bc4e6 100644
--- a/src/main/java/org/apache/datasketches/hll/HllSketch.java
+++ b/src/main/java/org/apache/datasketches/hll/HllSketch.java
@@ -390,8 +390,9 @@ public class HllSketch extends BaseHllSketch {
}
@Override
- public boolean isSameResource(final Memory mem) {
- return hllSketchImpl.isSameResource(mem);
+ public long nativeOverlap(final Memory that) {
+ WritableMemory wmem = getWritableMemory();
+ return (wmem != null) ? wmem.nativeOverlap(that) : 0;
}
void mergeTo(final HllSketch that) {
diff --git a/src/main/java/org/apache/datasketches/hll/HllSketchImpl.java b/src/main/java/org/apache/datasketches/hll/HllSketchImpl.java
index 63b78c6e..df9e5f2d 100644
--- a/src/main/java/org/apache/datasketches/hll/HllSketchImpl.java
+++ b/src/main/java/org/apache/datasketches/hll/HllSketchImpl.java
@@ -100,7 +100,10 @@ abstract class HllSketchImpl {
abstract boolean isRebuildCurMinNumKxQFlag();
- abstract boolean isSameResource(Memory mem);
+ long nativeOverlap(final Memory that) {
+ WritableMemory wmem = getWritableMemory();
+ return (wmem != null) ? wmem.nativeOverlap(that) : 0;
+ }
abstract PairIterator iterator();
diff --git a/src/main/java/org/apache/datasketches/hll/Union.java b/src/main/java/org/apache/datasketches/hll/Union.java
index 3693e894..3174ce74 100644
--- a/src/main/java/org/apache/datasketches/hll/Union.java
+++ b/src/main/java/org/apache/datasketches/hll/Union.java
@@ -248,8 +248,9 @@ public class Union extends BaseHllSketch {
}
@Override
- public boolean isSameResource(final Memory mem) {
- return gadget.isSameResource(mem);
+ public long nativeOverlap(final Memory that) {
+ WritableMemory wmem = gadget.hllSketchImpl.getWritableMemory();
+ return (wmem != null) ? wmem.nativeOverlap(that) : 0;
}
boolean isRebuildCurMinNumKxQFlag() {
diff --git a/src/main/java/org/apache/datasketches/kll/KllSketch.java b/src/main/java/org/apache/datasketches/kll/KllSketch.java
index 896cb1b9..437d6464 100644
--- a/src/main/java/org/apache/datasketches/kll/KllSketch.java
+++ b/src/main/java/org/apache/datasketches/kll/KllSketch.java
@@ -357,15 +357,16 @@ public abstract class KllSketch {
}
/**
- * Returns true if the backing resource of <i>this</i> is identical with the backing resource
- * of <i>that</i>. The capacities must be the same. If <i>this</i> is a region,
- * the region offset must also be the same.
- * @param that A different non-null object
- * @return true if the backing resource of <i>this</i> is the same as the backing resource
- * of <i>that</i>.
- */
- public final boolean isSameResource(final Memory that) {
- return (wmem != null) && wmem.isSameResource(that);
+ * Returns a positive number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is ≤ <i>that</i>
+ * base address.
+ * Returns a negative number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is > <i>that</i>
+ * base address.
+ * Returns a zero if there is no overlap or if one or both objects are null, not active or on heap.
+ * @param that the other BaseState object
+ * @return a long value representing the ordering and size of overlap between <i>this</i> and <i>that</i>.
+ */
+ public final long nativeOverlap(final Memory that) {
+ return (wmem != null) ? wmem.nativeOverlap(that) : 0;
}
/**
diff --git a/src/main/java/org/apache/datasketches/quantiles/DirectCompactDoublesSketch.java b/src/main/java/org/apache/datasketches/quantiles/DirectCompactDoublesSketch.java
index 3cba8ad0..6896711c 100644
--- a/src/main/java/org/apache/datasketches/quantiles/DirectCompactDoublesSketch.java
+++ b/src/main/java/org/apache/datasketches/quantiles/DirectCompactDoublesSketch.java
@@ -181,8 +181,8 @@ final class DirectCompactDoublesSketch extends CompactDoublesSketch {
}
@Override
- public boolean isSameResource(final Memory that) {
- return mem_.isSameResource(that);
+ public long nativeOverlap(final Memory that) {
+ return mem_.nativeOverlap(that);
}
//Restricted overrides
diff --git a/src/main/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchR.java b/src/main/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchR.java
index 161b0e7b..34aacf00 100644
--- a/src/main/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchR.java
+++ b/src/main/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchR.java
@@ -109,8 +109,8 @@ class DirectUpdateDoublesSketchR extends UpdateDoublesSketch {
}
@Override
- public boolean isSameResource(final Memory that) {
- return mem_.isSameResource(that);
+ public long nativeOverlap(final Memory that) {
+ return mem_.nativeOverlap(that);
}
@Override
diff --git a/src/main/java/org/apache/datasketches/quantiles/DoublesSketch.java b/src/main/java/org/apache/datasketches/quantiles/DoublesSketch.java
index 23f5bca0..313bd16e 100644
--- a/src/main/java/org/apache/datasketches/quantiles/DoublesSketch.java
+++ b/src/main/java/org/apache/datasketches/quantiles/DoublesSketch.java
@@ -483,15 +483,16 @@ public abstract class DoublesSketch {
}
/**
- * Returns true if the backing resource of <i>this</i> is identical with the backing resource
- * of <i>that</i>. The capacities must be the same. If <i>this</i> is a region,
- * the region offset must also be the same.
- * @param that A different non-null object
- * @return true if the backing resource of <i>this</i> is the same as the backing resource
- * of <i>that</i>.
- */
- public boolean isSameResource(final Memory that) { //Overridden by direct sketches
- return false;
+ * Returns a positive number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is ≤ <i>that</i>
+ * base address.
+ * Returns a negative number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is > <i>that</i>
+ * base address.
+ * Returns a zero if there is no overlap or if one or both objects are null, not active or on heap.
+ * @param that the other BaseState object
+ * @return a long value representing the ordering and size of overlap between <i>this</i> and <i>that</i>.
+ */
+ public long nativeOverlap(final Memory that) { //Overridden by direct sketches
+ return 0;
}
/**
diff --git a/src/main/java/org/apache/datasketches/quantiles/DoublesUnion.java b/src/main/java/org/apache/datasketches/quantiles/DoublesUnion.java
index 117e30e6..3b9d67d1 100644
--- a/src/main/java/org/apache/datasketches/quantiles/DoublesUnion.java
+++ b/src/main/java/org/apache/datasketches/quantiles/DoublesUnion.java
@@ -199,13 +199,14 @@ public abstract class DoublesUnion {
public abstract String toString(boolean sketchSummary, boolean dataDetail);
/**
- * Returns true if the backing resource of <i>this</i> is identical with the backing resource
- * of <i>that</i>. The capacities must be the same. If <i>this</i> is a region,
- * the region offset must also be the same.
- * @param that A different non-null object
- * @return true if the backing resource of <i>this</i> is the same as the backing resource
- * of <i>that</i>.
- */
- public abstract boolean isSameResource(final Memory that);
+ * Returns a positive number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is ≤ <i>that</i>
+ * base address.
+ * Returns a negative number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is > <i>that</i>
+ * base address.
+ * Returns a zero if there is no overlap or if one or both objects are null, not active or on heap.
+ * @param that the other BaseState object
+ * @return a long value representing the ordering and size of overlap between <i>this</i> and <i>that</i>.
+ */
+ public abstract long nativeOverlap(final Memory that);
}
diff --git a/src/main/java/org/apache/datasketches/quantiles/DoublesUnionImplR.java b/src/main/java/org/apache/datasketches/quantiles/DoublesUnionImplR.java
index 0614d1a6..c497387e 100644
--- a/src/main/java/org/apache/datasketches/quantiles/DoublesUnionImplR.java
+++ b/src/main/java/org/apache/datasketches/quantiles/DoublesUnionImplR.java
@@ -154,8 +154,8 @@ class DoublesUnionImplR extends DoublesUnion {
}
@Override
- public boolean isSameResource(final Memory that) {
- return (gadget_ == null) ? false : gadget_.isSameResource(that);
+ public long nativeOverlap(final Memory that) {
+ return (gadget_ == null) ? 0 : gadget_.nativeOverlap(that);
}
}
diff --git a/src/main/java/org/apache/datasketches/theta/AnotBimpl.java b/src/main/java/org/apache/datasketches/theta/AnotBimpl.java
index 06c6812f..779d89be 100644
--- a/src/main/java/org/apache/datasketches/theta/AnotBimpl.java
+++ b/src/main/java/org/apache/datasketches/theta/AnotBimpl.java
@@ -151,8 +151,8 @@ final class AnotBimpl extends AnotB {
}
@Override
- public boolean isSameResource(final Memory that) {
- return false;
+ public long nativeOverlap(final Memory that) {
+ return 0;
}
//restricted
diff --git a/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java b/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
index 09bcd1a1..986b88ff 100644
--- a/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
@@ -131,8 +131,8 @@ class DirectCompactSketch extends CompactSketch {
}
@Override
- public boolean isSameResource(final Memory that) {
- return mem_.isSameResource(that);
+ public long nativeOverlap(final Memory that) {
+ return mem_.nativeOverlap(that);
}
@Override
diff --git a/src/main/java/org/apache/datasketches/theta/DirectQuickSelectSketchR.java b/src/main/java/org/apache/datasketches/theta/DirectQuickSelectSketchR.java
index 580a5b29..1fc7bada 100644
--- a/src/main/java/org/apache/datasketches/theta/DirectQuickSelectSketchR.java
+++ b/src/main/java/org/apache/datasketches/theta/DirectQuickSelectSketchR.java
@@ -157,8 +157,8 @@ class DirectQuickSelectSketchR extends UpdateSketch {
}
@Override
- public boolean isSameResource(final Memory that) {
- return wmem_.isSameResource(that);
+ public long nativeOverlap(final Memory that) {
+ return wmem_.nativeOverlap(that);
}
@Override
diff --git a/src/main/java/org/apache/datasketches/theta/IntersectionImpl.java b/src/main/java/org/apache/datasketches/theta/IntersectionImpl.java
index 901ec42c..cf776f11 100644
--- a/src/main/java/org/apache/datasketches/theta/IntersectionImpl.java
+++ b/src/main/java/org/apache/datasketches/theta/IntersectionImpl.java
@@ -345,8 +345,8 @@ class IntersectionImpl extends Intersection {
}
@Override
- public boolean isSameResource(final Memory that) {
- return wmem_ != null ? wmem_.isSameResource(that) : false;
+ public long nativeOverlap(final Memory that) {
+ return wmem_ != null ? wmem_.nativeOverlap(that) : 0;
}
@Override
diff --git a/src/main/java/org/apache/datasketches/theta/SetOperation.java b/src/main/java/org/apache/datasketches/theta/SetOperation.java
index d406b005..3556d1b0 100644
--- a/src/main/java/org/apache/datasketches/theta/SetOperation.java
+++ b/src/main/java/org/apache/datasketches/theta/SetOperation.java
@@ -238,18 +238,15 @@ public abstract class SetOperation {
public abstract Family getFamily();
/**
- * Returns true if the backing resource of <i>this</i> is identical with the backing resource
- * of <i>that</i>. The capacities must be the same. If <i>this</i> is a region,
- * the region offset must also be the same.
- *
- * <p>Note: Only certain set operators during stateful operations can be serialized.
- * Only when they are stored into Memory will this be relevant.</p>
- *
- * @param that A different non-null object
- * @return true if the backing resource of <i>this</i> is the same as the backing resource
- * of <i>that</i>.
+ * Returns a positive number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is ≤ <i>that</i>
+ * base address.
+ * Returns a negative number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is > <i>that</i>
+ * base address.
+ * Returns a zero if there is no overlap or if one or both objects are null, not active or on heap.
+ * @param that the other BaseState object
+ * @return a long value representing the ordering and size of overlap between <i>this</i> and <i>that</i>.
*/
- public abstract boolean isSameResource(Memory that);
+ public abstract long nativeOverlap(Memory that);
//restricted
diff --git a/src/main/java/org/apache/datasketches/theta/Sketch.java b/src/main/java/org/apache/datasketches/theta/Sketch.java
index f55fbb4d..428a833d 100644
--- a/src/main/java/org/apache/datasketches/theta/Sketch.java
+++ b/src/main/java/org/apache/datasketches/theta/Sketch.java
@@ -407,15 +407,16 @@ public abstract class Sketch {
public abstract boolean isOrdered();
/**
- * Returns true if the backing resource of <i>this</i> is identical with the backing resource
- * of <i>that</i>. The capacities must be the same. If <i>this</i> is a region,
- * the region offset must also be the same.
- * @param that A different non-null object
- * @return true if the backing resource of <i>this</i> is the same as the backing resource
- * of <i>that</i>.
- */
- public boolean isSameResource(final Memory that) {
- return false;
+ * Returns a positive number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is ≤ <i>that</i>
+ * base address.
+ * Returns a negative number if <i>this</i> overlaps <i>that</i> and <i>this</i> base address is > <i>that</i>
+ * base address.
+ * Returns a zero if there is no overlap or if one or both objects are null, not active or on heap.
+ * @param that the other BaseState object
+ * @return a long value representing the ordering and size of overlap between <i>this</i> and <i>that</i>.
+ */
+ public long nativeOverlap(final Memory that) {
+ return 0;
}
/**
diff --git a/src/main/java/org/apache/datasketches/theta/UnionImpl.java b/src/main/java/org/apache/datasketches/theta/UnionImpl.java
index 2b2edee9..45d51ba6 100644
--- a/src/main/java/org/apache/datasketches/theta/UnionImpl.java
+++ b/src/main/java/org/apache/datasketches/theta/UnionImpl.java
@@ -262,9 +262,9 @@ final class UnionImpl extends Union {
}
@Override
- public boolean isSameResource(final Memory that) {
+ public long nativeOverlap(final Memory that) {
return gadget_ instanceof DirectQuickSelectSketchR
- ? gadget_.getMemory().isSameResource(that) : false;
+ ? gadget_.getMemory().nativeOverlap(that) : 0;
}
@Override
diff --git a/src/test/java/org/apache/datasketches/cpc/CpcCBinariesTest.java b/src/test/java/org/apache/datasketches/cpc/CpcCBinariesTest.java
index 4166045d..6542316a 100644
--- a/src/test/java/org/apache/datasketches/cpc/CpcCBinariesTest.java
+++ b/src/test/java/org/apache/datasketches/cpc/CpcCBinariesTest.java
@@ -19,16 +19,18 @@
package org.apache.datasketches.cpc;
+import static org.apache.datasketches.memory.Memory.map;
import static org.apache.datasketches.Util.getResourceFile;
import static org.testng.Assert.assertEquals;
import java.io.File;
import java.io.PrintStream;
-import org.apache.datasketches.memory.MapHandle;
import org.apache.datasketches.memory.Memory;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
/**
* Checks sketch images obtained from C++.
* @author Lee Rhodes
@@ -41,10 +43,10 @@ public class CpcCBinariesTest {
public void checkEmptyBin() {
final String fileName = "cpc-empty.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory wmem = mh.get();
- println(PreambleUtil.toString(wmem, true));
- final CpcSketch sk = CpcSketch.heapify(wmem);
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ Memory mem = map(file, scope);
+ println(PreambleUtil.toString(mem, true));
+ final CpcSketch sk = CpcSketch.heapify(mem);
assertEquals(sk.getFlavor(), Flavor.EMPTY);
} catch (final Exception e) {
e.printStackTrace();
@@ -55,8 +57,8 @@ public class CpcCBinariesTest {
public void checkSparseBin() {
final String fileName = "cpc-sparse.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
println("CPP GENERATED SKETCH FROM BINARY FILE LgK=11, U0 to U99");
println("PreambleUtil.toString(mem, true)" + LS);
println(PreambleUtil.toString(mem, true));
@@ -81,8 +83,8 @@ public class CpcCBinariesTest {
public void checkHybridBin() {
final String fileName = "cpc-hybrid.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
println("CPP GENERATED SKETCH FROM BINARY FILE LgK=11, U0 to U199");
println("PreambleUtil.toString(mem, true)" + LS);
println(PreambleUtil.toString(mem, true));
@@ -107,8 +109,8 @@ public class CpcCBinariesTest {
public void checkPinnedBin() {
final String fileName = "cpc-pinned.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
println("CPP GENERATED SKETCH FROM BINARY FILE LgK=11, U0 to U1999");
println("PreambleUtil.toString(mem, true)" + LS);
println(PreambleUtil.toString(mem, true));
@@ -133,8 +135,8 @@ public class CpcCBinariesTest {
public void checkSlidingBin() {
final String fileName = "cpc-sliding.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
println("CPP GENERATED SKETCH FROM BINARY FILE LgK=11, U0 to U19999");
println("PreambleUtil.toString(mem, true)" + LS);
println(PreambleUtil.toString(mem, true));
@@ -161,8 +163,8 @@ public class CpcCBinariesTest {
public void checkEmptyImages() {
final String fileName = "cpc-empty.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
final int cap = (int) mem.getCapacity();
final byte[] memByteArr = new byte[cap];
mem.getByteArray(0, memByteArr, 0, cap);
@@ -181,8 +183,8 @@ public class CpcCBinariesTest {
public void checkSparseImages() {
final String fileName = "cpc-sparse.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
final int cap = (int) mem.getCapacity();
final byte[] memByteArr = new byte[cap];
mem.getByteArray(0, memByteArr, 0, cap);
@@ -202,8 +204,8 @@ public class CpcCBinariesTest {
public void checkHybridImages() {
final String fileName = "cpc-hybrid.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
final int cap = (int) mem.getCapacity();
final byte[] memByteArr = new byte[cap];
mem.getByteArray(0, memByteArr, 0, cap);
@@ -223,8 +225,8 @@ public class CpcCBinariesTest {
public void checkPinnedImages() {
final String fileName = "cpc-pinned.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
final int cap = (int) mem.getCapacity();
final byte[] cppMemByteArr = new byte[cap];
mem.getByteArray(0, cppMemByteArr, 0, cap);
@@ -244,8 +246,8 @@ public class CpcCBinariesTest {
public void checkSlidingImages() {
final String fileName = "cpc-sliding.sk";
final File file = getResourceFile(fileName);
- try (MapHandle mh = Memory.map(file)) {
- final Memory mem = mh.get();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ final Memory mem = Memory.map(file, scope);
final int cap = (int) mem.getCapacity();
final byte[] memByteArr = new byte[cap];
mem.getByteArray(0, memByteArr, 0, cap);
diff --git a/src/test/java/org/apache/datasketches/cpc/PreambleUtilTest.java b/src/test/java/org/apache/datasketches/cpc/PreambleUtilTest.java
index 8e24c555..4f545861 100644
--- a/src/test/java/org/apache/datasketches/cpc/PreambleUtilTest.java
+++ b/src/test/java/org/apache/datasketches/cpc/PreambleUtilTest.java
@@ -98,7 +98,10 @@ public class PreambleUtilTest {
format = Format.EMPTY_MERGED;
putEmptyMerged(wmem, lgK, seedHash);
- println(CpcSketch.toString((byte[])wmem.getArray(), true));
+ int cap = (int)wmem.getCapacity();
+ byte[] byteArr = new byte[cap];
+ wmem.getByteArray(0, byteArr, 0, cap);
+ println(CpcSketch.toString((byteArr), true));
checkFirst8(wmem, format, lgK, (byte) 0);
assertFalse(hasHip(wmem));
diff --git a/src/test/java/org/apache/datasketches/hash/MurmurHash3v2Test.java b/src/test/java/org/apache/datasketches/hash/MurmurHash3v2Test.java
index 23f369e6..f8f1d1ce 100644
--- a/src/test/java/org/apache/datasketches/hash/MurmurHash3v2Test.java
+++ b/src/test/java/org/apache/datasketches/hash/MurmurHash3v2Test.java
@@ -28,7 +28,7 @@ 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.MurmurHash3;
import org.apache.datasketches.memory.WritableMemory;
/**
@@ -154,25 +154,25 @@ public class MurmurHash3v2Test {
}
private static final long[] hashV2(long[] key, long seed) {
- return MurmurHash3v2.hash(key, seed);
+ return org.apache.datasketches.memory.MurmurHash3.hash(key, seed);
}
private static final long[] hashV2(int[] key2, long seed) {
- return MurmurHash3v2.hash(key2, seed);
+ return org.apache.datasketches.memory.MurmurHash3.hash(key2, seed);
}
private static final long[] hashV2(char[] key, long seed) {
- return MurmurHash3v2.hash(key, seed);
+ return org.apache.datasketches.memory.MurmurHash3.hash(key, seed);
}
private static final long[] hashV2(byte[] key, long seed) {
- return MurmurHash3v2.hash(key, seed);
+ return org.apache.datasketches.memory.MurmurHash3.hash(key, seed);
}
//V2 single primitives
private static final long[] hashV2(long key, long seed, long[] out) {
- return MurmurHash3v2.hash(key, seed, out);
+ return org.apache.datasketches.memory.MurmurHash3.hash(key, seed, out);
}
// private static final long[] hashV2(double key, long seed, long[] 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 = org.apache.datasketches.memory.MurmurHash3.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 = org.apache.datasketches.memory.MurmurHash3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = org.apache.datasketches.memory.MurmurHash3.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 = org.apache.datasketches.memory.MurmurHash3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = org.apache.datasketches.memory.MurmurHash3.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 = org.apache.datasketches.memory.MurmurHash3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = org.apache.datasketches.memory.MurmurHash3.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 = org.apache.datasketches.memory.MurmurHash3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = org.apache.datasketches.memory.MurmurHash3.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 = org.apache.datasketches.memory.MurmurHash3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = org.apache.datasketches.memory.MurmurHash3.hash(in, seed);
assertEquals(hash1, hash2);
assertEquals(hash1, hash3);
@@ -325,62 +325,62 @@ 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
+ org.apache.datasketches.memory.MurmurHash3.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
+ org.apache.datasketches.memory.MurmurHash3.hash(mem, 0, 0, seed, hashOut); //mem null
fail();
- } catch (final IllegalArgumentException e) { } //OK
+ } catch (final NullPointerException e) { } //OK
try {
String s = "";
- MurmurHash3v2.hash(s, seed, hashOut); //string empty
+ org.apache.datasketches.memory.MurmurHash3.hash(s, seed, hashOut); //string empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
String s = null;
- MurmurHash3v2.hash(s, seed, hashOut); //string null
+ org.apache.datasketches.memory.MurmurHash3.hash(s, seed, hashOut); //string null
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
byte[] barr = new byte[0];
- MurmurHash3v2.hash(barr, seed); //byte[] empty
+ org.apache.datasketches.memory.MurmurHash3.hash(barr, seed); //byte[] empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
byte[] barr = null;
- MurmurHash3v2.hash(barr, seed); //byte[] null
+ org.apache.datasketches.memory.MurmurHash3.hash(barr, seed); //byte[] null
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
char[] carr = new char[0];
- MurmurHash3v2.hash(carr, seed); //char[] empty
+ org.apache.datasketches.memory.MurmurHash3.hash(carr, seed); //char[] empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
char[] carr = null;
- MurmurHash3v2.hash(carr, seed); //char[] null
+ org.apache.datasketches.memory.MurmurHash3.hash(carr, seed); //char[] null
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
int[] iarr = new int[0];
- MurmurHash3v2.hash(iarr, seed); //int[] empty
+ org.apache.datasketches.memory.MurmurHash3.hash(iarr, seed); //int[] empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
int[] iarr = null;
- MurmurHash3v2.hash(iarr, seed); //int[] null
+ org.apache.datasketches.memory.MurmurHash3.hash(iarr, seed); //int[] null
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
long[] larr = new long[0];
- MurmurHash3v2.hash(larr, seed); //long[] empty
+ org.apache.datasketches.memory.MurmurHash3.hash(larr, seed); //long[] empty
fail();
} catch (final IllegalArgumentException e) { } //OK
try {
long[] larr = null;
- MurmurHash3v2.hash(larr, seed); //long[] null
+ org.apache.datasketches.memory.MurmurHash3.hash(larr, seed); //long[] null
fail();
} catch (final IllegalArgumentException e) { } //OK
}
@@ -390,9 +390,9 @@ public class MurmurHash3v2Test {
long seed = 123;
long[] hashOut = new long[2];
String s = "123";
- assertTrue(MurmurHash3v2.hash(s, seed, hashOut)[0] != 0);
+ assertTrue(org.apache.datasketches.memory.MurmurHash3.hash(s, seed, hashOut)[0] != 0);
long v = 123;
- assertTrue(MurmurHash3v2.hash(v, seed, hashOut)[0] != 0);
+ assertTrue(org.apache.datasketches.memory.MurmurHash3.hash(v, seed, hashOut)[0] != 0);
}
@Test
@@ -420,8 +420,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 = org.apache.datasketches.memory.MurmurHash3.hash(wmem, offset, bytes, seed, hash2);
+ long[] hash3 = org.apache.datasketches.memory.MurmurHash3.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 f64ee56e..c5411b8d 100644
--- a/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java
+++ b/src/test/java/org/apache/datasketches/hll/DirectAuxHashMapTest.java
@@ -26,14 +26,14 @@ import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import java.nio.ByteOrder;
import java.util.HashMap;
import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
import org.apache.datasketches.SketchesStateException;
@@ -50,9 +50,8 @@ public class DirectAuxHashMapTest {
int n = 8; //put lgConfigK == 4 into HLL mode
int bytes = HllSketch.getMaxUpdatableSerializationBytes(lgConfigK, tgtHllType);
HllSketch hllSketch;
- try (WritableHandle handle = WritableMemory.allocateDirect(bytes,
- ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) {
- WritableMemory wmem = handle.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory wmem = WritableMemory.allocateDirect(bytes, scope, new DefaultMemoryRequestServer());
hllSketch = new HllSketch(lgConfigK, tgtHllType, wmem);
for (int i = 0; i < n; i++) {
hllSketch.update(i);
@@ -65,7 +64,7 @@ public class DirectAuxHashMapTest {
assertEquals(dha.getAuxHashMap().getLgAuxArrInts(), 2);
assertTrue(hllSketch.isMemory());
assertTrue(hllSketch.isOffHeap());
- assertTrue(hllSketch.isSameResource(wmem));
+ assertTrue(hllSketch.nativeOverlap(wmem) != 0);
//Check heapify
byte[] byteArray = hllSketch.toCompactByteArray();
@@ -91,7 +90,7 @@ public class DirectAuxHashMapTest {
assertEquals(dha.getAuxHashMap().getAuxCount(), 4);
assertTrue(hllSketch.isMemory());
assertFalse(hllSketch.isOffHeap());
- assertFalse(hllSketch.isSameResource(wmem));
+ //assertFalse(hllSketch.nativeOverlap(wmem) == 0);
} catch (final Exception e) {
throw new RuntimeException(e);
}
diff --git a/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java b/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java
index 38cbc497..92d42f7a 100644
--- a/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java
+++ b/src/test/java/org/apache/datasketches/hll/DirectCouponListTest.java
@@ -27,8 +27,9 @@ import static org.testng.Assert.assertTrue;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
import org.apache.datasketches.memory.WritableMemory;
/**
@@ -70,8 +71,8 @@ public class DirectCouponListTest {
//println("DIRECT");
byte[] barr1;
WritableMemory wmem = null;
- try (WritableHandle hand = WritableMemory.allocateDirect(bytes)) {
- wmem = hand.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ wmem = WritableMemory.allocateDirect(bytes, scope, null);
//byte[] byteArr = new byte[bytes];
//WritableMemory wmem = WritableMemory.wrap(byteArr);
hllSketch = new HllSketch(lgConfigK, tgtHllType, wmem);
@@ -85,7 +86,7 @@ public class DirectCouponListTest {
assertEquals(hllSketch.getCurMode(), tgtMode);
assertTrue(hllSketch.isMemory());
assertTrue(hllSketch.isOffHeap());
- assertTrue(hllSketch.isSameResource(wmem));
+ assertTrue(hllSketch.nativeOverlap(wmem) != 0);
//convert direct sketch to byte[]
barr1 = (compact) ? hllSketch.toCompactByteArray() : hllSketch.toUpdatableByteArray();
@@ -106,7 +107,7 @@ public class DirectCouponListTest {
assertEquals(hllSketch2.getCurMode(), tgtMode);
assertFalse(hllSketch2.isMemory());
assertFalse(hllSketch2.isOffHeap());
- assertFalse(hllSketch2.isSameResource(wmem));
+ assertFalse(hllSketch2.nativeOverlap(wmem) != 0); //out of scope
byte[] barr2 = (compact) ? hllSketch2.toCompactByteArray() : hllSketch2.toUpdatableByteArray();
assertEquals(barr1.length, barr2.length, barr1.length + ", " + barr2.length);
//printDiffs(barr1, barr2);
diff --git a/src/test/java/org/apache/datasketches/hll/HllArrayTest.java b/src/test/java/org/apache/datasketches/hll/HllArrayTest.java
index cd64cc4d..c3c6f4be 100644
--- a/src/test/java/org/apache/datasketches/hll/HllArrayTest.java
+++ b/src/test/java/org/apache/datasketches/hll/HllArrayTest.java
@@ -102,10 +102,10 @@ public class HllArrayTest {
assert sk1.hllSketchImpl instanceof AbstractHllArray;
if (sk1.hllSketchImpl instanceof HllArray) {
assertFalse(sk1.hllSketchImpl.isMemory());
- assertFalse(sk1.isSameResource(wmem));
+ assertFalse(sk1.nativeOverlap(wmem) != 0);
} else { //DirectHllArray
assertTrue(sk1.hllSketchImpl.isMemory());
- assertTrue(sk1.isSameResource(wmem));
+ assertTrue(sk1.nativeOverlap(wmem) != 0);
}
//sk1.update(u);
diff --git a/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java b/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java
index 6fbe287a..6b616e7e 100644
--- a/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java
+++ b/src/test/java/org/apache/datasketches/hll/PreambleUtilTest.java
@@ -110,7 +110,6 @@ public class PreambleUtilTest {
HllSketch sk = new HllSketch(12);
byte[] memObj = sk.toCompactByteArray();
WritableMemory wmem = WritableMemory.writableWrap(memObj);
- long memAdd = wmem.getCumulativeOffset(0);
HllSketch bad;
//checkFamily
@@ -149,7 +148,6 @@ public class PreambleUtilTest {
for (int i = 1; i <= 15; i++) { sk.update(i); }
memObj = sk.toCompactByteArray();
wmem = WritableMemory.writableWrap(memObj);
- memAdd = wmem.getCumulativeOffset(0);
//check wrong PreInts and SET
try {
@@ -163,7 +161,6 @@ public class PreambleUtilTest {
for (int i = 15; i <= 1000; i++) { sk.update(i); }
memObj = sk.toCompactByteArray();
wmem = WritableMemory.writableWrap(memObj);
- memAdd = wmem.getCumulativeOffset(0);
//check wrong PreInts and HLL
try {
@@ -179,8 +176,6 @@ public class PreambleUtilTest {
public void checkExtractFlags() {
int bytes = HllSketch.getMaxUpdatableSerializationBytes(4, TgtHllType.HLL_4);
WritableMemory wmem = WritableMemory.allocate(bytes);
- Object memObj = wmem.getArray();
- 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/hll/UnionTest.java b/src/test/java/org/apache/datasketches/hll/UnionTest.java
index ee58d902..ca201732 100644
--- a/src/test/java/org/apache/datasketches/hll/UnionTest.java
+++ b/src/test/java/org/apache/datasketches/hll/UnionTest.java
@@ -267,7 +267,7 @@ public class UnionTest {
byte[] byteArr = srcU.toCompactByteArray();
Memory mem = Memory.wrap(byteArr);
Union dstU = Union.heapify(mem);
- assertFalse(dstU.isSameResource(mem));
+ assertFalse(dstU.nativeOverlap(mem) != 0);
assertEquals(dstU.getEstimate(), srcU.getEstimate(), 0.0);
}
diff --git a/src/test/java/org/apache/datasketches/kll/KllSketchTest.java b/src/test/java/org/apache/datasketches/kll/KllSketchTest.java
index f99bf9cd..bb895387 100644
--- a/src/test/java/org/apache/datasketches/kll/KllSketchTest.java
+++ b/src/test/java/org/apache/datasketches/kll/KllSketchTest.java
@@ -133,11 +133,11 @@ public class KllSketchTest {
WritableMemory reg1 = wmem.writableRegion(0, 64);
WritableMemory reg2 = wmem.writableRegion(64, 64);
assertFalse(reg1 == reg2);
- assertFalse(reg1.isSameResource(reg2));
+ assertTrue(reg1.nativeOverlap(reg2) == 0); //on heap
WritableMemory reg3 = wmem.writableRegion(0, 64);
assertFalse(reg1 == reg3);
- assertTrue(reg1.isSameResource(reg3));
+ assertTrue(reg1.nativeOverlap(reg3) == 0); //on heap
byte[] byteArr1 = KllFloatsSketch.newHeapInstance(20).toByteArray();
reg1.putByteArray(0, byteArr1, 0, byteArr1.length);
@@ -145,13 +145,13 @@ public class KllSketchTest {
byte[] byteArr2 = KllFloatsSketch.newHeapInstance(20).toByteArray();
reg2.putByteArray(0, byteArr2, 0, byteArr2.length);
- if (!sk1.isSameResource(reg2)) {
+ if (sk1.nativeOverlap(reg2) == 0) { //on heap
KllFloatsSketch sk2 = KllFloatsSketch.wrap(reg2);
}
byte[] byteArr3 = KllFloatsSketch.newHeapInstance(20).toByteArray();
reg3.putByteArray(0, byteArr3, 0, byteArr3.length);
- if (!sk1.isSameResource(reg3)) {
+ if (sk1.nativeOverlap(reg3) != 0) { //on heap, so false
KllFloatsSketch sk3 = KllFloatsSketch.wrap(reg3);
fail();
}
diff --git a/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java b/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java
index f480d698..6218d90d 100644
--- a/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java
+++ b/src/test/java/org/apache/datasketches/quantiles/DebugUnionTest.java
@@ -27,13 +27,17 @@ 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.MemoryRequestServer;
import org.apache.datasketches.memory.WritableMemory;
/**
* @author Lee Rhodes
*/
public class DebugUnionTest {
+ private MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
@Test
public void test() {
@@ -61,8 +65,8 @@ 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();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory wmem = WritableMemory.allocateDirect(10_000_000, scope, memReqSvr);
dUnion = DoublesUnion.builder().setMaxK(8).build(wmem);
for (int s = 0; s < numSketches; s++) { dUnion.update(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..f4d921c3 100644
--- a/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java
+++ b/src/test/java/org/apache/datasketches/quantiles/DirectQuantilesMemoryRequestTest.java
@@ -29,8 +29,10 @@ import java.nio.ByteOrder;
import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+import org.apache.datasketches.memory.MemoryRequestServer;
import org.apache.datasketches.memory.WritableMemory;
/**
@@ -39,6 +41,7 @@ import org.apache.datasketches.memory.WritableMemory;
* allocating larger Memory when requested and the actual freeing of the old memory allocations.
*/
public class DirectQuantilesMemoryRequestTest {
+ private MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
@Test
public void checkLimitedMemoryScenarios() { //Requesting application
@@ -48,9 +51,8 @@ public class DirectQuantilesMemoryRequestTest {
//########## 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();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory wmem = WritableMemory.allocateDirect(initBytes, 8, scope, ByteOrder.nativeOrder(), memReqSvr);
println("Initial mem size: " + wmem.getCapacity());
//########## Receiving Application
@@ -84,11 +86,9 @@ 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();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem1 = WritableMemory.allocateDirect(initBytes, 8, scope,
+ ByteOrder.nativeOrder(), memReqSvr);
println("Initial mem size: " + mem1.getCapacity());
final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(mem1);
for (int i = 1; i <= u; i++) {
@@ -108,11 +108,9 @@ 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();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem1 = WritableMemory.allocateDirect(initBytes, 8, scope,
+ ByteOrder.nativeOrder(), memReqSvr);
println("Initial mem size: " + mem1.getCapacity());
final UpdateDoublesSketch usk1 = DoublesSketch.builder().setK(k).build(mem1);
for (int i = 1; i <= u; i++) {
@@ -138,12 +136,12 @@ 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();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = WritableMemory.allocateDirect(initBytes, 8, scope,
+ ByteOrder.nativeOrder(), memReqSvr);
origSketchMem.copyTo(0, mem, 0, initBytes);
UpdateDoublesSketch usk2 = DirectUpdateDoublesSketch.wrapInstance(mem);
- assertTrue(mem.isSameResource(usk2.getMemory()));
+ assertTrue(mem.nativeOverlap(usk2.getMemory()) != 0);
assertEquals(mem.getCapacity(), initBytes);
assertTrue(mem.isDirect());
assertTrue(usk2.isEmpty());
@@ -152,7 +150,7 @@ public class DirectQuantilesMemoryRequestTest {
for (int i = 1; i <= 5; i++) { usk2.update(i); }
assertEquals(usk2.getN(), 5);
WritableMemory mem2 = usk2.getMemory();
- assertFalse(mem.isSameResource(mem2));
+ assertFalse(mem.nativeOverlap(mem2) != 0);
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 b8c2cab5..301d61fc 100644
--- a/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java
+++ b/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java
@@ -27,12 +27,15 @@ import static org.testng.Assert.assertTrue;
import java.nio.ByteOrder;
import org.apache.datasketches.memory.DefaultMemoryRequestServer;
-import org.apache.datasketches.memory.WritableHandle;
+import org.apache.datasketches.memory.MemoryRequestServer;
import org.apache.datasketches.memory.WritableMemory;
import org.testng.Assert;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
public class DoublesSketchTest {
+ private MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
@Test
public void heapToDirect() {
@@ -116,12 +119,12 @@ public class DoublesSketchTest {
WritableMemory cmem = WritableMemory.writableWrap(new byte[8]);
DirectUpdateDoublesSketch duds =
(DirectUpdateDoublesSketch) DoublesSketch.builder().setK(k).build(mem);
- assertTrue(duds.isSameResource(mem));
+ assertTrue(duds.nativeOverlap(mem) != 0);
DirectCompactDoublesSketch dcds = (DirectCompactDoublesSketch) duds.compact(cmem);
- assertTrue(dcds.isSameResource(cmem));
+ assertTrue(dcds.nativeOverlap(cmem) != 0);
UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
- assertFalse(uds.isSameResource(mem));
+ assertFalse(uds.nativeOverlap(mem) != 0);
}
@Test
@@ -135,15 +138,14 @@ public class DoublesSketchTest {
@Test
public void directSketchShouldMoveOntoHeapEventually() {
- try (WritableHandle wdh = WritableMemory.allocateDirect(1000,
- ByteOrder.nativeOrder(), new DefaultMemoryRequestServer())) {
- WritableMemory mem = wdh.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = WritableMemory.allocateDirect(1000, 8, scope, ByteOrder.nativeOrder(), memReqSvr);
UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem);
- Assert.assertTrue(sketch.isSameResource(mem));
+ Assert.assertTrue(sketch.nativeOverlap(mem) != 0);
for (int i = 0; i < 1000; i++) {
sketch.update(i);
}
- Assert.assertFalse(sketch.isSameResource(mem));
+ Assert.assertFalse(sketch.nativeOverlap(mem) != 0);
} catch (final Exception e) {
throw new RuntimeException(e);
}
@@ -152,13 +154,12 @@ 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();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = WritableMemory.allocateDirect(50, 8, scope, ByteOrder.nativeOrder(), memReqSvr);
UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem);
- Assert.assertTrue(sketch.isSameResource(mem));
+ Assert.assertTrue(sketch.nativeOverlap(mem) != 0);
for (; i < 1000; i++) {
- if (sketch.isSameResource(mem)) {
+ if (sketch.nativeOverlap(mem) != 0) {
sketch.update(i);
} else {
//println("MOVED OUT at i = " + i);
@@ -172,8 +173,8 @@ public class DoublesSketchTest {
@Test
public void checkEmptyDirect() {
- try (WritableHandle wdh = WritableMemory.allocateDirect(1000)) {
- WritableMemory mem = wdh.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = WritableMemory.allocateDirect(1000, 8, scope, ByteOrder.nativeOrder(), memReqSvr);
UpdateDoublesSketch sketch = DoublesSketch.builder().build(mem);
sketch.toByteArray(); //exercises a specific path
} catch (final Exception e) {
diff --git a/src/test/java/org/apache/datasketches/quantiles/DoublesUnionImplTest.java b/src/test/java/org/apache/datasketches/quantiles/DoublesUnionImplTest.java
index 59f01078..529e2f05 100644
--- a/src/test/java/org/apache/datasketches/quantiles/DoublesUnionImplTest.java
+++ b/src/test/java/org/apache/datasketches/quantiles/DoublesUnionImplTest.java
@@ -692,19 +692,13 @@ public class DoublesUnionImplTest {
assertEquals(bytesOut, byteArr); // wrapped, so should be exact
}
- @Test
- public void isSameResourceHeap() {
- DoublesUnion union = DoublesUnion.builder().build();
- Assert.assertFalse(union.isSameResource(null));
- }
-
@Test
public void isSameResourceDirect() {
WritableMemory mem1 = WritableMemory.writableWrap(new byte[1000000]);
DoublesUnion union = DoublesUnion.builder().build(mem1);
- Assert.assertTrue(union.isSameResource(mem1));
+ Assert.assertTrue(union.nativeOverlap(mem1) != 0);
WritableMemory mem2 = WritableMemory.writableWrap(new byte[1000000]);
- Assert.assertFalse(union.isSameResource(mem2));
+ Assert.assertFalse(union.nativeOverlap(mem2) != 0);
}
@Test
diff --git a/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java b/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java
index be2f328b..80e326da 100644
--- a/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java
+++ b/src/test/java/org/apache/datasketches/quantiles/PreambleUtilTest.java
@@ -39,17 +39,21 @@ import static org.testng.Assert.assertEquals;
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.MemoryRequestServer;
import org.apache.datasketches.memory.WritableMemory;
public class PreambleUtilTest {
+ private MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
@Test
public void checkInsertsAndExtracts() {
final int bytes = 32;
- try (WritableHandle offHeapMemHandler = WritableMemory.allocateDirect(bytes)) {
- final WritableMemory offHeapMem = offHeapMemHandler.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory offHeapMem = WritableMemory.allocateDirect(bytes, scope, memReqSvr);
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 f4c7f0b4..2cce419d 100644
--- a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
@@ -27,15 +27,19 @@ import static org.testng.Assert.assertTrue;
import org.apache.datasketches.Family;
import org.apache.datasketches.SketchesArgumentException;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+import org.apache.datasketches.memory.MemoryRequestServer;
import org.apache.datasketches.memory.WritableMemory;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
/**
* @author Lee Rhodes
*/
public class CompactSketchTest {
+ private MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
@Test
public void checkHeapifyWrap() {
@@ -77,8 +81,8 @@ public class CompactSketchTest {
//Prepare Memory for direct
int bytes = usk.getCompactBytes(); //for Compact
- try (WritableHandle wdh = WritableMemory.allocateDirect(bytes)) {
- WritableMemory directMem = wdh.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory directMem = WritableMemory.allocateDirect(bytes, scope, memReqSvr);
/**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 266d7ef0..eff7a550 100644
--- a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
@@ -46,21 +46,25 @@ import org.apache.datasketches.HashOperations;
import org.apache.datasketches.ResizeFactor;
import org.apache.datasketches.SketchesArgumentException;
import org.apache.datasketches.SketchesReadOnlyException;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+import org.apache.datasketches.memory.MemoryRequestServer;
import org.apache.datasketches.memory.WritableMemory;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
/**
* @author Lee Rhodes
*/
public class DirectQuickSelectSketchTest {
+ private static MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
@Test//(expectedExceptions = SketchesArgumentException.class)
public void checkBadSerVer() {
int k = 512;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -85,8 +89,8 @@ public class DirectQuickSelectSketchTest {
@Test//(expectedExceptions = SketchesArgumentException.class)
public void checkConstructorKtooSmall() {
int k = 8;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch.builder().setNominalEntries(k).build(mem);
} catch (final Exception e) {
if (e instanceof SketchesArgumentException) {}
@@ -97,8 +101,8 @@ public class DirectQuickSelectSketchTest {
@Test//(expectedExceptions = SketchesArgumentException.class)
public void checkConstructorMemTooSmall() {
int k = 16;
- try (WritableHandle h = makeNativeMemory(k/2)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k/2, scope);
UpdateSketch.builder().setNominalEntries(k).build(mem);
} catch (final Exception e) {
if (e instanceof SketchesArgumentException) {}
@@ -125,8 +129,8 @@ public class DirectQuickSelectSketchTest {
int u = 2*k;
boolean estimating = (u > k);
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch sk1 = UpdateSketch.builder().setNominalEntries(k).build(mem);
for (int i=0; i<u; i++) { sk1.update(i); }
@@ -197,8 +201,8 @@ public class DirectQuickSelectSketchTest {
int k = 512;
long seed1 = 1021;
long seed2 = DEFAULT_UPDATE_SEED;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setSeed(seed1).setNominalEntries(k).build(mem);
byte[] byteArray = usk.toByteArray();
@@ -213,8 +217,8 @@ public class DirectQuickSelectSketchTest {
@Test//(expectedExceptions = SketchesArgumentException.class)
public void checkCorruptLgNomLongs() {
int k = 16;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch.builder().setNominalEntries(k).build(mem);
mem.putByte(LG_NOM_LONGS_BYTE, (byte)2); //corrupt
Sketch.heapify(mem, DEFAULT_UPDATE_SEED);
@@ -227,8 +231,8 @@ public class DirectQuickSelectSketchTest {
@Test
public void checkHeapifyByteArrayExact() {
int k = 512;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
@@ -260,8 +264,8 @@ public class DirectQuickSelectSketchTest {
public void checkHeapifyByteArrayEstimating() {
int k = 4096;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
for (int i=0; i<u; i++) { usk.update(i); }
@@ -291,8 +295,8 @@ public class DirectQuickSelectSketchTest {
int u = 2*k;
boolean estimating = (u > k);
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch sk1 = UpdateSketch.builder().setNominalEntries(k).build(mem);
for (int i=0; i<u; i++) { sk1.update(i); }
@@ -318,8 +322,8 @@ public class DirectQuickSelectSketchTest {
int k = 512;
int u = 4*k;
boolean estimating = (u > k);
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -388,8 +392,8 @@ public class DirectQuickSelectSketchTest {
@Test
public void checkDQStoCompactEmptyForms() {
int k = 512;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
@@ -434,8 +438,8 @@ public class DirectQuickSelectSketchTest {
int k = 4096;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -455,8 +459,8 @@ public class DirectQuickSelectSketchTest {
int k = 4096;
float p = (float)0.5;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setP(p).setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -481,8 +485,8 @@ public class DirectQuickSelectSketchTest {
@Test
public void checkErrorBounds() {
int k = 512;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
@@ -517,8 +521,8 @@ public class DirectQuickSelectSketchTest {
//virgin, p = 1.0
int k = 1024;
float p = (float)1.0;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setP(p).setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -557,8 +561,8 @@ public class DirectQuickSelectSketchTest {
public void checkUpperAndLowerBounds() {
int k = 512;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
@@ -578,8 +582,8 @@ public class DirectQuickSelectSketchTest {
public void checkRebuild() {
int k = 512;
int u = 4*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -607,8 +611,8 @@ public class DirectQuickSelectSketchTest {
public void checkResetAndStartingSubMultiple() {
int k = 512;
int u = 4*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -638,8 +642,8 @@ public class DirectQuickSelectSketchTest {
public void checkExactModeMemoryArr() {
int k = 4096;
int u = 4096;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -659,8 +663,8 @@ public class DirectQuickSelectSketchTest {
int k = 4096;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- WritableMemory mem = h.getWritable();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory mem = makeNativeMemory(k, scope);
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
@@ -680,10 +684,9 @@ public class DirectQuickSelectSketchTest {
int k = 4096;
int u = 2*k;
int memCapacity = (k << 4) + (Family.QUICKSELECT.getMinPreLongs() << 3);
-
- try(WritableHandle memHandler = WritableMemory.allocateDirect(memCapacity)) {
-
- UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(memHandler.getWritable());
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory wmem = WritableMemory.allocateDirect(memCapacity, scope, memReqSvr);
+ UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(wmem);
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
assertTrue(usk.isEmpty());
@@ -702,8 +705,9 @@ public class DirectQuickSelectSketchTest {
int k = 4096;
int u = 2*k;
- try (WritableHandle h = makeNativeMemory(k)) {
- UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(h.getWritable());
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory wmem = makeNativeMemory(k, scope);
+ UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(wmem);
assertTrue(usk.isEmpty());
for (int i = 0; i< u; i++) { usk.update(i); } //force estimation
@@ -871,12 +875,12 @@ 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();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory wmem = WritableMemory.allocateDirect(bytes/2, scope, memReqSvr); //will request
UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
- assertTrue(sketch.isSameResource(wmem));
+ assertTrue(sketch.nativeOverlap(wmem) != 0);
for (int i = 0; i < u; i++) { sketch.update(i); }
- assertFalse(sketch.isSameResource(wmem));
+ assertFalse(sketch.nativeOverlap(wmem) != 0);
} catch (final Exception e) {
throw new RuntimeException(e);
}
@@ -887,8 +891,8 @@ 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();
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory wmem = WritableMemory.allocateDirect(bytes/2, scope, memReqSvr); //will request
UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
for (int i = 0; i < u; i++) { sketch.update(i); }
double est1 = sketch.getEstimate();
@@ -932,8 +936,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, ResourceScope scope) {
+ return WritableMemory.allocateDirect(getMaxBytes(k), scope, memReqSvr);
}
}
diff --git a/src/test/java/org/apache/datasketches/theta/HeapIntersectionTest.java b/src/test/java/org/apache/datasketches/theta/HeapIntersectionTest.java
index eb8376ce..74483a74 100644
--- a/src/test/java/org/apache/datasketches/theta/HeapIntersectionTest.java
+++ b/src/test/java/org/apache/datasketches/theta/HeapIntersectionTest.java
@@ -81,7 +81,7 @@ public class HeapIntersectionTest {
rsk1 = inter.getResult(ordered, mem);
assertEquals(rsk1.getEstimate(), 0.0);
- assertFalse(inter.isSameResource(mem));
+ assertFalse(inter.nativeOverlap(mem) != 0);
}
@Test
diff --git a/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java b/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java
index 82b17d96..edd54ef2 100644
--- a/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java
+++ b/src/test/java/org/apache/datasketches/theta/HeapifyWrapSerVer1and2Test.java
@@ -24,14 +24,19 @@ 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.MemoryRequestServer;
import org.apache.datasketches.memory.WritableMemory;
import org.apache.datasketches.tuple.Util;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
public class HeapifyWrapSerVer1and2Test {
private static final short defaultSeedHash = Util.computeSeedHash(DEFAULT_UPDATE_SEED);
+ private static MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+ //private static ResourceScope scope = ResourceScope.newImplicitScope();
@Test
public void checkHeapifyCompactSketchAssumedDefaultSeed() {
@@ -281,32 +286,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
@@ -317,32 +322,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
@@ -353,32 +358,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
@@ -389,32 +394,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
@@ -425,32 +430,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
@@ -461,32 +466,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
@@ -497,32 +502,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
@@ -533,40 +538,40 @@ 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();
+ ResourceScope scope = ResourceScope.newConfinedScope();
+ WritableMemory wmem = WritableMemory.allocateDirect(cap, scope, memReqSvr);
heapMem.copyTo(0, wmem, 0, cap);
- return wh;
+ return wmem;
}
@Test
diff --git a/src/test/java/org/apache/datasketches/theta/SetOperationTest.java b/src/test/java/org/apache/datasketches/theta/SetOperationTest.java
index 8ddac37a..a974fa40 100644
--- a/src/test/java/org/apache/datasketches/theta/SetOperationTest.java
+++ b/src/test/java/org/apache/datasketches/theta/SetOperationTest.java
@@ -320,16 +320,16 @@ public class SetOperationTest {
final WritableMemory wmem = WritableMemory.writableWrap(new byte[k*16 + 32]);
final Memory roCompactMem = Memory.wrap(new byte[8]);
final Union union = Sketches.setOperationBuilder().setNominalEntries(k).buildUnion(wmem);
- assertTrue(union.isSameResource(wmem));
- assertFalse(union.isSameResource(roCompactMem));
+ assertTrue(union.nativeOverlap(wmem) != 0);
+ assertFalse(union.nativeOverlap(roCompactMem) != 0);
final Intersection inter = Sketches.setOperationBuilder().buildIntersection(wmem);
- assertTrue(inter.isSameResource(wmem));
- assertFalse(inter.isSameResource(roCompactMem));
+ assertTrue(inter.nativeOverlap(wmem) != 0);
+ assertFalse(inter.nativeOverlap(roCompactMem) != 0);
final AnotB aNotB = Sketches.setOperationBuilder().buildANotB();
- assertFalse(aNotB.isSameResource(roCompactMem));
+ assertFalse(aNotB.nativeOverlap(roCompactMem) != 0);
}
@Test
diff --git a/src/test/java/org/apache/datasketches/theta/SketchTest.java b/src/test/java/org/apache/datasketches/theta/SketchTest.java
index d57632d8..d725d545 100644
--- a/src/test/java/org/apache/datasketches/theta/SketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/SketchTest.java
@@ -325,17 +325,17 @@ public class SketchTest {
UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(mem);
sketch.update(1);
sketch.update(2);
- assertTrue(sketch.isSameResource(mem));
+ assertTrue(sketch.nativeOverlap(mem) != 0);
DirectCompactSketch dcos = (DirectCompactSketch) sketch.compact(true, cmem);
- assertTrue(dcos.isSameResource(cmem));
+ assertTrue(dcos.nativeOverlap(cmem) != 0);
assertTrue(dcos.isOrdered());
//never create 2 sketches with the same memory, so don't do as I do :)
DirectCompactSketch dcs = (DirectCompactSketch) sketch.compact(false, cmem);
- assertTrue(dcs.isSameResource(cmem));
+ assertTrue(dcs.nativeOverlap(cmem) != 0);
assertFalse(dcs.isOrdered());
Sketch sk = Sketches.updateSketchBuilder().setNominalEntries(k).build();
- assertFalse(sk.isSameResource(mem));
+ assertFalse(sk.nativeOverlap(mem) != 0);
}
@Test
diff --git a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
index ffedc310..d68f64e3 100644
--- a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
+++ b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
@@ -28,12 +28,17 @@ import static org.testng.Assert.assertTrue;
import org.apache.datasketches.SketchesArgumentException;
import org.apache.datasketches.Util;
+import org.apache.datasketches.memory.DefaultMemoryRequestServer;
import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableHandle;
+import org.apache.datasketches.memory.MemoryRequestServer;
import org.apache.datasketches.memory.WritableMemory;
import org.testng.annotations.Test;
+import jdk.incubator.foreign.ResourceScope;
+
public class UnionImplTest {
+ private static MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+
@Test
public void checkGetCurrentAndMaxBytes() {
@@ -176,21 +181,20 @@ 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()) {
+ WritableMemory wmem = WritableMemory.allocateDirect(bytes/2, scope, memReqSvr);
+ WritableMemory wmem2 = WritableMemory.allocateDirect(bytes/2, scope, memReqSvr);
final UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
- assertTrue(sketch.isSameResource(wmem));
+ assertTrue(sketch.nativeOverlap(wmem) != 0);
- final WritableMemory wmem2 = wh2.getWritable();
final Union union = SetOperation.builder().buildUnion(wmem2);
- assertTrue(union.isSameResource(wmem2));
+ assertTrue(union.nativeOverlap(wmem2) != 0);
for (int i = 0; i < u; i++) { union.update(i); }
- assertFalse(union.isSameResource(wmem));
+ assertFalse(union.nativeOverlap(wmem) != 0);
final Union union2 = SetOperation.builder().buildUnion(); //on-heap union
- assertFalse(union2.isSameResource(wmem2)); //obviously not
+ assertFalse(union2.nativeOverlap(wmem2) != 0); //obviously not
} catch (final Exception e) {
throw new RuntimeException(e);
}
@@ -214,8 +218,9 @@ public class UnionImplTest {
final double est1 = sk.getEstimate();
final int bytes = Sketches.getMaxCompactSketchBytes(sk.getRetainedEntries(true));
- try (WritableHandle h = WritableMemory.allocateDirect(bytes)) {
- final WritableMemory wmem = h.getWritable();
+
+ try (ResourceScope scope = ResourceScope.newConfinedScope()) {
+ WritableMemory wmem = WritableMemory.allocateDirect(bytes, scope, memReqSvr);
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 e1988a1a..bbc5ee92 100644
--- a/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/UpdateSketchTest.java
@@ -199,7 +199,6 @@ public class UpdateSketchTest {
}
}
-
@SuppressWarnings("unused")
@Test
public void checkCompactOpsMemoryToCompact() {
@@ -218,8 +217,11 @@ 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));
+ long mismatch = cskwmem1.mismatch(cskwmem2);
+ println(mismatch);
+ boolean eq = cskwmem1.equalTo(cskwmem2);
+ assertTrue(cskwmem1.equalTo(cskwmem2));
+ assertTrue(cskwmem1.equalTo(cskwmem3));
}
@Test
@@ -228,9 +230,9 @@ public class UpdateSketchTest {
}
/**
- * @param s value to print
+ * @param o value to print
*/
- static void println(String s) {
- //System.out.println(s); //disable here
+ static void println(Object o) {
+ //System.out.println(o.toString()); //disable here
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org