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 2020/07/07 23:37:05 UTC
[incubator-datasketches-java] 02/10: Eliminated two Classes:
DirectCompactOrderedSketch and DirectCompactUnorderedSketch.
This is an automated email from the ASF dual-hosted git repository.
leerho pushed a commit to branch Refactor_Theta_Tuple
in repository https://gitbox.apache.org/repos/asf/incubator-datasketches-java.git
commit f421f793d89e7543ced55960fd89738e28dfa98e
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Fri Jun 26 17:41:59 2020 -0700
Eliminated two Classes: DirectCompactOrderedSketch and
DirectCompactUnorderedSketch.
Replaced with just DirectCompactSketch.
---
.../datasketches/theta/CompactOperations.java | 17 ++----
.../theta/DirectCompactOrderedSketch.java | 60 ----------------------
.../datasketches/theta/DirectCompactSketch.java | 36 ++++++++++++-
.../theta/DirectCompactUnorderedSketch.java | 60 ----------------------
.../datasketches/theta/EmptyCompactSketch.java | 2 +-
.../datasketches/theta/SingleItemSketch.java | 2 +-
.../java/org/apache/datasketches/theta/Sketch.java | 5 +-
.../apache/datasketches/theta/UpdateSketch.java | 3 +-
.../datasketches/theta/CompactSketchTest.java | 24 ++++-----
.../ConcurrentDirectQuickSelectSketchTest.java | 8 +--
.../theta/ConcurrentHeapQuickSelectSketchTest.java | 12 ++---
.../theta/DirectQuickSelectSketchTest.java | 8 +--
.../datasketches/theta/HeapAlphaSketchTest.java | 8 +--
.../theta/HeapQuickSelectSketchTest.java | 8 +--
.../datasketches/theta/SingleItemSketchTest.java | 6 +--
.../org/apache/datasketches/theta/SketchTest.java | 6 ++-
.../apache/datasketches/theta/UnionImplTest.java | 6 +--
17 files changed, 87 insertions(+), 184 deletions(-)
diff --git a/src/main/java/org/apache/datasketches/theta/CompactOperations.java b/src/main/java/org/apache/datasketches/theta/CompactOperations.java
index 6c7067e..882e0e8 100644
--- a/src/main/java/org/apache/datasketches/theta/CompactOperations.java
+++ b/src/main/java/org/apache/datasketches/theta/CompactOperations.java
@@ -91,11 +91,8 @@ final class CompactOperations {
final Memory mem =
loadCompactMemory(hashArrOut, seedHash, curCount, thetaLong, dstMem, (byte)flags, preLongs);
- if (dstOrderedOut) {
- return new DirectCompactOrderedSketch(mem);
- } else {
- return new DirectCompactUnorderedSketch(mem);
- }
+ return new DirectCompactSketch(mem);
+
} else { //Heap
if (empty) {
return EmptyCompactSketch.getInstance();
@@ -159,7 +156,7 @@ final class CompactOperations {
if (srcEmptyFlag) {
if (dstMem != null) {
dstMem.putByteArray(0, EmptyCompactSketch.EMPTY_COMPACT_SKETCH_ARR, 0, 8);
- return new DirectCompactOrderedSketch(dstMem);
+ return new DirectCompactSketch(dstMem);
} else {
return EmptyCompactSketch.getInstance();
}
@@ -169,7 +166,7 @@ final class CompactOperations {
final SingleItemSketch sis = new SingleItemSketch(hash, srcSeedHash);
if (dstMem != null) {
dstMem.putByteArray(0, sis.toByteArray(),0, 16);
- return new DirectCompactOrderedSketch(dstMem);
+ return new DirectCompactSketch(dstMem);
} else { //heap
return sis;
}
@@ -191,11 +188,7 @@ final class CompactOperations {
if (dstMem != null) {
final Memory tgtMem = loadCompactMemory(hashArr, srcSeedHash, curCount, thetaLong, dstMem,
(byte)srcFlags, srcPreLongs);
- if (dstOrderedOut) {
- return new DirectCompactOrderedSketch(tgtMem);
- } else {
- return new DirectCompactUnorderedSketch(tgtMem);
- }
+ return new DirectCompactSketch(tgtMem);
} else { //heap
if (dstOrderedOut) {
diff --git a/src/main/java/org/apache/datasketches/theta/DirectCompactOrderedSketch.java b/src/main/java/org/apache/datasketches/theta/DirectCompactOrderedSketch.java
deleted file mode 100644
index e2c9de5..0000000
--- a/src/main/java/org/apache/datasketches/theta/DirectCompactOrderedSketch.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.datasketches.theta;
-
-import static org.apache.datasketches.theta.PreambleUtil.checkMemorySeedHash;
-
-import org.apache.datasketches.memory.Memory;
-
-/**
- * An off-heap (Direct), compact, ordered, read-only sketch. This sketch can only be associated
- * with a Serialization Version 3 format binary image.
- *
- * <p>This implementation uses data in a given Memory that is owned and managed by the caller.
- * This Memory can be off-heap, which if managed properly will greatly reduce the need for
- * the JVM to perform garbage collection.</p>
- *
- * @author Lee Rhodes
- */
-final class DirectCompactOrderedSketch extends DirectCompactSketch {
-
- DirectCompactOrderedSketch(final Memory mem) {
- super(mem);
- }
-
- /**
- * Wraps the given Memory, which must be a SerVer 3, ordered, Compact Sketch image.
- * Must check the validity of the Memory before calling.
- * @param srcMem <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>
- * @param seed The update seed.
- * <a href="{@docRoot}/resources/dictionary.html#seed">See Update Hash Seed</a>.
- * @return this sketch
- */
- static DirectCompactOrderedSketch wrapInstance(final Memory srcMem, final long seed) {
- checkMemorySeedHash(srcMem, seed);
- return new DirectCompactOrderedSketch(srcMem);
- }
-
- @Override
- public boolean isOrdered() {
- return true;
- }
-
-}
diff --git a/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java b/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
index 6b65640..a695944 100644
--- a/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
@@ -19,7 +19,10 @@
package org.apache.datasketches.theta;
+import static org.apache.datasketches.theta.PreambleUtil.ORDERED_FLAG_MASK;
+import static org.apache.datasketches.theta.PreambleUtil.checkMemorySeedHash;
import static org.apache.datasketches.theta.PreambleUtil.extractCurCount;
+import static org.apache.datasketches.theta.PreambleUtil.extractFlags;
import static org.apache.datasketches.theta.PreambleUtil.extractPreLongs;
import static org.apache.datasketches.theta.PreambleUtil.extractSeedHash;
import static org.apache.datasketches.theta.PreambleUtil.extractThetaLong;
@@ -29,17 +32,41 @@ import org.apache.datasketches.memory.Memory;
import org.apache.datasketches.memory.WritableMemory;
/**
- * Parent class of the Direct Compact Sketches.
+ * An off-heap (Direct), compact, read-only sketch. The internal hash array can be either ordered
+ * or unordered.
+ *
+ * <p>This sketch can only be associated with a Serialization Version 3 format binary image.</p>
+ *
+ * <p>This implementation uses data in a given Memory that is owned and managed by the caller.
+ * This Memory can be off-heap, which if managed properly will greatly reduce the need for
+ * the JVM to perform garbage collection.</p>
*
* @author Lee Rhodes
*/
-abstract class DirectCompactSketch extends CompactSketch {
+class DirectCompactSketch extends CompactSketch {
final Memory mem_;
+ /**
+ * Construct this sketch with the given memory.
+ * @param mem Read-only Memory object with the order bit properly set.
+ */
DirectCompactSketch(final Memory mem) {
mem_ = mem;
}
+ /**
+ * Wraps the given Memory, which must be a SerVer 3, ordered, CompactSketch image.
+ * Must check the validity of the Memory before calling. The order bit must be set properly.
+ * @param srcMem <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>
+ * @param seed The update seed.
+ * <a href="{@docRoot}/resources/dictionary.html#seed">See Update Hash Seed</a>.
+ * @return this sketch
+ */
+ static DirectCompactSketch wrapInstance(final Memory srcMem, final long seed) {
+ checkMemorySeedHash(srcMem, seed);
+ return new DirectCompactSketch(srcMem);
+ }
+
//Sketch
@Override
@@ -102,6 +129,11 @@ abstract class DirectCompactSketch extends CompactSketch {
}
@Override
+ public boolean isOrdered() {
+ return (extractFlags(mem_) & ORDERED_FLAG_MASK) > 0;
+ }
+
+ @Override
public boolean isSameResource(final Memory that) {
return mem_.isSameResource(that);
}
diff --git a/src/main/java/org/apache/datasketches/theta/DirectCompactUnorderedSketch.java b/src/main/java/org/apache/datasketches/theta/DirectCompactUnorderedSketch.java
deleted file mode 100644
index 15b4433..0000000
--- a/src/main/java/org/apache/datasketches/theta/DirectCompactUnorderedSketch.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.datasketches.theta;
-
-import static org.apache.datasketches.theta.PreambleUtil.checkMemorySeedHash;
-
-import org.apache.datasketches.memory.Memory;
-
-/**
- * An off-heap (Direct), compact, unordered, read-only sketch. This sketch can only be associated
- * with a Serialization Version 3 format binary image.
- *
- * <p>This implementation uses data in a given Memory that is owned and managed by the caller.
- * This Memory can be off-heap, which if managed properly will greatly reduce the need for
- * the JVM to perform garbage collection.</p>
- *
- * @author Lee Rhodes
- */
-final class DirectCompactUnorderedSketch extends DirectCompactSketch {
-
- DirectCompactUnorderedSketch(final Memory mem) {
- super(mem);
- }
-
- /**
- * Wraps the given Memory, which must be a SerVer 3, unordered, Compact Sketch image.
- * Must check the validity of the Memory before calling.
- * @param srcMem <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>
- * @param seed The update seed.
- * <a href="{@docRoot}/resources/dictionary.html#seed">See Update Hash Seed</a>.
- * @return this sketch
- */
- static DirectCompactUnorderedSketch wrapInstance(final Memory srcMem, final long seed) {
- checkMemorySeedHash(srcMem, seed);
- return new DirectCompactUnorderedSketch(srcMem);
- }
-
- @Override
- public boolean isOrdered() {
- return false;
- }
-
-}
diff --git a/src/main/java/org/apache/datasketches/theta/EmptyCompactSketch.java b/src/main/java/org/apache/datasketches/theta/EmptyCompactSketch.java
index 666a9cd..9993673 100644
--- a/src/main/java/org/apache/datasketches/theta/EmptyCompactSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/EmptyCompactSketch.java
@@ -70,7 +70,7 @@ final class EmptyCompactSketch extends CompactSketch {
// The hashSeed is ignored and set == 0.
public CompactSketch compact(final boolean dstOrdered, final WritableMemory wmem) {
wmem.putByteArray(0, EMPTY_COMPACT_SKETCH_ARR, 0, 8);
- return new DirectCompactOrderedSketch(wmem);
+ return new DirectCompactSketch(wmem);
}
//static
diff --git a/src/main/java/org/apache/datasketches/theta/SingleItemSketch.java b/src/main/java/org/apache/datasketches/theta/SingleItemSketch.java
index 5356dbc..512c81c 100644
--- a/src/main/java/org/apache/datasketches/theta/SingleItemSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/SingleItemSketch.java
@@ -110,7 +110,7 @@ final class SingleItemSketch extends CompactSketch {
else {
dstMem.putLong(0, pre0_);
dstMem.putLong(8, hash_);
- return new DirectCompactOrderedSketch(dstMem);
+ return new DirectCompactSketch(dstMem);
}
}
diff --git a/src/main/java/org/apache/datasketches/theta/Sketch.java b/src/main/java/org/apache/datasketches/theta/Sketch.java
index 42f4724..b8c7bd7 100644
--- a/src/main/java/org/apache/datasketches/theta/Sketch.java
+++ b/src/main/java/org/apache/datasketches/theta/Sketch.java
@@ -153,7 +153,6 @@ public abstract class Sketch {
}
//not empty & not singleItem
final int flags = srcMem.getByte(FLAGS_BYTE);
- final boolean orderedFlag = (flags & ORDERED_FLAG_MASK) > 0;
final boolean compactFlag = (flags & COMPACT_FLAG_MASK) > 0;
if (!compactFlag) {
throw new SketchesArgumentException(
@@ -164,9 +163,7 @@ public abstract class Sketch {
throw new SketchesArgumentException(
"Corrupted: COMPACT family sketch image must have Read-Only flag set");
}
- return orderedFlag
- ? DirectCompactOrderedSketch.wrapInstance(srcMem, seed)
- : DirectCompactUnorderedSketch.wrapInstance(srcMem, seed);
+ return DirectCompactSketch.wrapInstance(srcMem, seed);
} //end of serVer 3
else if (serVer == 1) {
return ForwardCompatibility.heapify1to3(srcMem, seed);
diff --git a/src/main/java/org/apache/datasketches/theta/UpdateSketch.java b/src/main/java/org/apache/datasketches/theta/UpdateSketch.java
index 686789d..5a14b6e 100644
--- a/src/main/java/org/apache/datasketches/theta/UpdateSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/UpdateSketch.java
@@ -223,12 +223,11 @@ public abstract class UpdateSketch extends Sketch {
if (ordered) {
final byte flags = (byte)(READ_ONLY_FLAG_MASK | COMPACT_FLAG_MASK | ORDERED_FLAG_MASK);
CompactOperations.loadCompactMemory(cacheOut, seedHash, curCount, thetaLong, dstMem, flags, preLongs);
- return new DirectCompactOrderedSketch(dstMem);
} else {
final byte flags = (byte)(READ_ONLY_FLAG_MASK | COMPACT_FLAG_MASK);
CompactOperations.loadCompactMemory(cacheOut, seedHash, curCount, thetaLong, dstMem, flags, preLongs);
- return new DirectCompactUnorderedSketch(dstMem);
}
+ return new DirectCompactSketch(dstMem);
}
diff --git a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
index 199043f..a79f72a 100644
--- a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
@@ -148,9 +148,9 @@ public class CompactSketchTest {
assertTrue(testSk.hasMemory());
assertNotNull(testSk.getMemory());
if (ordered) {
- assertTrue(testSk instanceof DirectCompactOrderedSketch);
+ assertTrue(testSk.isOrdered());
} else {
- assertTrue(testSk instanceof DirectCompactUnorderedSketch);
+ assertFalse(testSk.isOrdered());
}
if (refSk.isDirect()) {
assertTrue(testSk.isDirect());
@@ -237,23 +237,23 @@ public class CompactSketchTest {
WritableMemory wmem = WritableMemory.allocate(16);
csko = sk.compact(true, wmem); //empty, direct, ordered
//ClassType, Count, Bytes, Compact, Empty, Direct, Memory, Ordered, Estimation
- state = new State("DirectCompactOrderedSketch", 0, 8, true, true, false, true, true, false);
+ state = new State("DirectCompactSketch", 0, 8, true, true, false, true, true, false);
state.check(csko);
wmem = WritableMemory.allocate(16);
csku = sk.compact(false, wmem); //empty, direct, unordered
- state = new State("DirectCompactOrderedSketch", 0, 8, true, true, false, true, true, false);
+ state = new State("DirectCompactSketch", 0, 8, true, true, false, true, true, false);
state.check(csku);
sk.update(1);
wmem = WritableMemory.allocate(16);
csko = sk.compact(true, wmem); //Single, direct, ordered
- state = new State("DirectCompactOrderedSketch", 1, 16, true, false, false, true, true, false);
+ state = new State("DirectCompactSketch", 1, 16, true, false, false, true, true, false);
state.check(csko);
wmem = WritableMemory.allocate(16);
csku = sk.compact(false, wmem); //Single, direct, unordered
- state = new State("DirectCompactOrderedSketch", 1, 16, true, false, false, true, true, false);
+ state = new State("DirectCompactSketch", 1, 16, true, false, false, true, true, false);
state.check(csku);
CompactSketch csk2o; //ordered
@@ -277,24 +277,24 @@ public class CompactSketchTest {
wmem = WritableMemory.allocate(16);
csk2o = csku.compact(true, wmem);
- state.classType = "DirectCompactOrderedSketch";
+ state.classType = "DirectCompactSketch";
state.memory = true;
state.check(csk2o);
wmem = WritableMemory.allocate(16);
csk2u = csku.compact(false, wmem);
- state.classType = "DirectCompactOrderedSketch";
+ state.classType = "DirectCompactSketch";
state.check(csk2u);
wmem = WritableMemory.allocate(16);
csk2o = csko.compact(true, wmem);
- state.classType = "DirectCompactOrderedSketch";
+ state.classType = "DirectCompactSketch";
state.memory = true;
state.check(csk2o);
wmem = WritableMemory.allocate(16);
csk2u = csko.compact(false, wmem);
- state.classType = "DirectCompactOrderedSketch";
+ state.classType = "DirectCompactSketch";
state.check(csk2u);
}
@@ -313,8 +313,8 @@ public class CompactSketchTest {
public void checkHeapifyEmptySketch() {
UpdateSketch sk = Sketches.updateSketchBuilder().build();
WritableMemory wmem = WritableMemory.allocate(16); //empty, but extra bytes
- CompactSketch csk = sk.compact(false, wmem);
- assertTrue(csk instanceof DirectCompactOrderedSketch);
+ CompactSketch csk = sk.compact(false, wmem); //ignores order because it is empty
+ assertTrue(csk instanceof DirectCompactSketch);
Sketch csk2 = Sketch.heapify(wmem);
assertTrue(csk2 instanceof EmptyCompactSketch);
}
diff --git a/src/test/java/org/apache/datasketches/theta/ConcurrentDirectQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/ConcurrentDirectQuickSelectSketchTest.java
index 3802dfd..db69dd7 100644
--- a/src/test/java/org/apache/datasketches/theta/ConcurrentDirectQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/ConcurrentDirectQuickSelectSketchTest.java
@@ -393,7 +393,7 @@ public class ConcurrentDirectQuickSelectSketchTest {
assertEquals(csk.getUpperBound(2), localUB);
assertFalse(csk.isEmpty());
assertEquals(csk.isEstimationMode(), estimating);
- assertEquals(csk.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+ assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch");
mem2.clear();
csk = shared.compact(true, mem2);
@@ -402,7 +402,7 @@ public class ConcurrentDirectQuickSelectSketchTest {
assertEquals(csk.getUpperBound(2), localUB);
assertFalse(csk.isEmpty());
assertEquals(csk.isEstimationMode(), estimating);
- assertEquals(csk.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch");
csk.toString(false, true, 0, false);
}
}
@@ -438,7 +438,7 @@ public class ConcurrentDirectQuickSelectSketchTest {
assertEquals(csk2.getUpperBound(2), localUB);
assertTrue(csk2.isEmpty());
assertFalse(csk2.isEstimationMode());
- assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+ assertTrue(csk2.isOrdered());
CompactSketch csk3 = shared.compact(true, mem2);
csk3.toString(false, true, 0, false);
csk3.toString();
@@ -447,7 +447,7 @@ public class ConcurrentDirectQuickSelectSketchTest {
assertEquals(csk3.getUpperBound(2), localUB);
assertTrue(csk3.isEmpty());
assertFalse(csk3.isEstimationMode());
- assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+ assertTrue(csk2.isOrdered());
}
}
diff --git a/src/test/java/org/apache/datasketches/theta/ConcurrentHeapQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/ConcurrentHeapQuickSelectSketchTest.java
index 8ae2d89..21b580b 100644
--- a/src/test/java/org/apache/datasketches/theta/ConcurrentHeapQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/ConcurrentHeapQuickSelectSketchTest.java
@@ -334,7 +334,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
assertEquals(comp3.isEmpty(), false);
assertEquals(comp3.isEstimationMode(), estimating);
assertEquals(comp3.getCurrentBytes(true), localCompBytes);
- assertEquals(comp3.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+ assertEquals(comp3.getClass().getSimpleName(), "DirectCompactSketch");
mem2.clear();
comp4 = shared.compact(true, mem2);
@@ -345,7 +345,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
assertEquals(comp4.isEmpty(), false);
assertEquals(comp4.isEstimationMode(), estimating);
assertEquals(comp4.getCurrentBytes(true), localCompBytes);
- assertEquals(comp4.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(comp4.getClass().getSimpleName(), "DirectCompactSketch");
comp4.toString(false, true, 0, false);
}
@@ -381,7 +381,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
assertEquals(csk2.getUpperBound(2), localUB);
assertEquals(csk2.isEmpty(), true);
assertEquals(csk2.isEstimationMode(), estimating);
- assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+ assertTrue(csk2.isOrdered());
CompactSketch csk3 = shared.compact(true, mem2);
csk3.toString(false, true, 0, false);
@@ -391,7 +391,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
assertEquals(csk3.getUpperBound(2), localUB);
assertEquals(csk3.isEmpty(), true);
assertEquals(csk3.isEstimationMode(), estimating);
- assertTrue(csk3 instanceof DirectCompactOrderedSketch);
+ assertTrue(csk3.isOrdered());
}
@Test
@@ -593,7 +593,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
assertEquals(csk2.getUpperBound(2), uskUB);
assertTrue(csk2.isEmpty());
assertFalse(csk2.isEstimationMode());
- assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+ assertTrue(csk2.isOrdered());
CompactSketch csk3 = shared.compact(true, mem2);
csk3.toString(false, true, 0, false);
@@ -603,7 +603,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
assertEquals(csk3.getUpperBound(2), uskUB);
assertTrue(csk3.isEmpty());
assertFalse(csk3.isEstimationMode());
- assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+ assertTrue(csk2.isOrdered());
}
@Test(expectedExceptions = SketchesArgumentException.class)
diff --git a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
index 73245e5..56070bc 100644
--- a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
@@ -347,7 +347,7 @@ public class DirectQuickSelectSketchTest {
assertEquals(csk.getUpperBound(2), uskUB);
assertEquals(csk.isEmpty(), false);
assertEquals(csk.isEstimationMode(), estimating);
- assertEquals(csk.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+ assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch");
mem2.clear();
csk = usk.compact(true, mem2);
@@ -356,7 +356,7 @@ public class DirectQuickSelectSketchTest {
assertEquals(csk.getUpperBound(2), uskUB);
assertEquals(csk.isEmpty(), false);
assertEquals(csk.isEstimationMode(), estimating);
- assertEquals(csk.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch");
csk.toString(false, true, 0, false);
}
}
@@ -388,7 +388,7 @@ public class DirectQuickSelectSketchTest {
assertEquals(csk2.getUpperBound(2), uskUB);
assertEquals(csk2.isEmpty(), true);
assertEquals(csk2.isEstimationMode(), false);
- assertEquals(csk2.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(csk2.getClass().getSimpleName(), "DirectCompactSketch");
CompactSketch csk3 = usk.compact(true, mem2);
csk3.toString(false, true, 0, false);
@@ -398,7 +398,7 @@ public class DirectQuickSelectSketchTest {
assertEquals(csk3.getUpperBound(2), uskUB);
assertEquals(csk3.isEmpty(), true);
assertEquals(csk3.isEstimationMode(), false);
- assertEquals(csk3.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(csk3.getClass().getSimpleName(), "DirectCompactSketch");
}
}
diff --git a/src/test/java/org/apache/datasketches/theta/HeapAlphaSketchTest.java b/src/test/java/org/apache/datasketches/theta/HeapAlphaSketchTest.java
index 793eb13..12d300a 100644
--- a/src/test/java/org/apache/datasketches/theta/HeapAlphaSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/HeapAlphaSketchTest.java
@@ -280,7 +280,7 @@ public class HeapAlphaSketchTest {
assertEquals(comp3.isEstimationMode(), estimating);
assertEquals(comp1bytes, comp3.getCurrentBytes(true)); //flag is not relevant
assertEquals(comp1curCount, comp3.getRetainedEntries(true)); //flag is not relevant
- assertEquals(comp3.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+ assertEquals(comp3.getClass().getSimpleName(), "DirectCompactSketch");
mem2.clear();
comp4 = usk.compact(true, mem2);
@@ -292,7 +292,7 @@ public class HeapAlphaSketchTest {
assertEquals(comp4.isEstimationMode(), estimating);
assertEquals(comp1bytes, comp4.getCurrentBytes(true)); //flag is not relevant
assertEquals(comp1curCount, comp4.getRetainedEntries(true)); //flag is not relevant
- assertEquals(comp4.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(comp4.getClass().getSimpleName(), "DirectCompactSketch");
}
@Test
@@ -321,7 +321,7 @@ public class HeapAlphaSketchTest {
assertEquals(csk2.getUpperBound(2), uskUB);
assertEquals(csk2.isEmpty(), true);
assertEquals(csk2.isEstimationMode(), estimating);
- assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+ assertTrue(csk2.isOrdered());
CompactSketch csk3 = usk.compact(true, mem2);
csk3.toString(false, true, 0, false);
@@ -331,7 +331,7 @@ public class HeapAlphaSketchTest {
assertEquals(csk3.getUpperBound(2), uskUB);
assertEquals(csk3.isEmpty(), true);
assertEquals(csk3.isEstimationMode(), estimating);
- assertTrue(csk3 instanceof DirectCompactOrderedSketch);
+ assertTrue(csk3.isOrdered());
}
@Test
diff --git a/src/test/java/org/apache/datasketches/theta/HeapQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/HeapQuickSelectSketchTest.java
index fcec52b..a75cb9a 100644
--- a/src/test/java/org/apache/datasketches/theta/HeapQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/HeapQuickSelectSketchTest.java
@@ -274,7 +274,7 @@ public class HeapQuickSelectSketchTest {
assertEquals(comp3.isEmpty(), false);
assertEquals(comp3.isEstimationMode(), estimating);
assertEquals(comp3.getCurrentBytes(true), uskCompBytes);
- assertEquals(comp3.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+ assertEquals(comp3.getClass().getSimpleName(), "DirectCompactSketch");
mem2.clear();
comp4 = usk.compact(true, mem2);
@@ -285,7 +285,7 @@ public class HeapQuickSelectSketchTest {
assertEquals(comp4.isEmpty(), false);
assertEquals(comp4.isEstimationMode(), estimating);
assertEquals(comp4.getCurrentBytes(true), uskCompBytes);
- assertEquals(comp4.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(comp4.getClass().getSimpleName(), "DirectCompactSketch");
comp4.toString(false, true, 0, false);
}
@@ -318,7 +318,7 @@ public class HeapQuickSelectSketchTest {
assertEquals(csk2.getUpperBound(2), uskUB);
assertEquals(csk2.isEmpty(), true);
assertEquals(csk2.isEstimationMode(), estimating);
- assertEquals(csk2.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(csk2.getClass().getSimpleName(), "DirectCompactSketch");
CompactSketch csk3 = usk.compact(true, mem2);
println(csk3.toString(false, true, 0, false));
@@ -328,7 +328,7 @@ public class HeapQuickSelectSketchTest {
assertEquals(csk3.getUpperBound(2), uskUB);
assertEquals(csk3.isEmpty(), true);
assertEquals(csk3.isEstimationMode(), estimating);
- assertEquals(csk3.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+ assertEquals(csk3.getClass().getSimpleName(), "DirectCompactSketch");
}
@Test
diff --git a/src/test/java/org/apache/datasketches/theta/SingleItemSketchTest.java b/src/test/java/org/apache/datasketches/theta/SingleItemSketchTest.java
index 7a50ba8..dbbc6ff 100644
--- a/src/test/java/org/apache/datasketches/theta/SingleItemSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/SingleItemSketchTest.java
@@ -205,9 +205,9 @@ public class SingleItemSketchTest {
bytes = Sketches.getMaxCompactSketchBytes(1);
wmem = WritableMemory.wrap(new byte[bytes]);
csk = sk1.compact(true, wmem);
- assertTrue(csk instanceof DirectCompactOrderedSketch);
+ assertTrue(csk.isOrdered());
csk = sk1.compact(false, wmem);
- assertTrue(csk instanceof DirectCompactOrderedSketch);
+ assertTrue(csk.isOrdered());
}
@Test
@@ -294,7 +294,7 @@ public class SingleItemSketchTest {
inter.update(sk2);
WritableMemory wmem = WritableMemory.wrap(new byte[16]);
CompactSketch csk = inter.getResult(false, wmem);
- assertTrue(csk instanceof DirectCompactOrderedSketch);
+ assertTrue(csk.isOrdered());
Sketch csk2 = Sketches.heapifySketch(wmem);
assertTrue(csk2 instanceof SingleItemSketch);
println(csk2.toString(true, true, 1, true));
diff --git a/src/test/java/org/apache/datasketches/theta/SketchTest.java b/src/test/java/org/apache/datasketches/theta/SketchTest.java
index 037dd47..db8ac34 100644
--- a/src/test/java/org/apache/datasketches/theta/SketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/SketchTest.java
@@ -329,11 +329,13 @@ public class SketchTest {
sketch.update(1);
sketch.update(2);
assertTrue(sketch.isSameResource(mem));
- DirectCompactOrderedSketch dcos = (DirectCompactOrderedSketch) sketch.compact(true, cmem);
+ DirectCompactSketch dcos = (DirectCompactSketch) sketch.compact(true, cmem);
assertTrue(dcos.isSameResource(cmem));
+ assertTrue(dcos.isOrdered());
//never create 2 sketches with the same memory, so don't do as I do :)
- DirectCompactUnorderedSketch dcs = (DirectCompactUnorderedSketch) sketch.compact(false, cmem);
+ DirectCompactSketch dcs = (DirectCompactSketch) sketch.compact(false, cmem);
assertTrue(dcs.isSameResource(cmem));
+ assertFalse(dcs.isOrdered());
Sketch sk = Sketches.updateSketchBuilder().setNominalEntries(k).build();
assertFalse(sk.isSameResource(mem));
diff --git a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
index b1d7a7f..c7d2b50 100644
--- a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
+++ b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
@@ -54,14 +54,14 @@ public class UnionImplTest {
assertEquals(union.getResult().getEstimate(), k, 0.0);
}
- @Test(expectedExceptions = SketchesArgumentException.class)
- public void checkCorruptedCompactFlag() {
+ @Test
+ public void checkUnorderedCompactFlag() {
int k = 16;
WritableMemory mem = WritableMemory.wrap(new byte[(k*8) + 24]);
UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build();
for (int i=0; i<k; i++) { sketch.update(i); }
CompactSketch sketchInDirectOrd = sketch.compact(true, mem);
- sketch.compact(false, mem); //corrupt memory
+ sketch.compact(false, mem); //change the order bit
Union union = Sketches.setOperationBuilder().setNominalEntries(k).buildUnion();
union.update(sketchInDirectOrd);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org