Skip to content

Commit 83d44cb

Browse files
committed
Merge branch 'master' into add_MemoryStatus_to_theta
2 parents cca8124 + 8bf32c5 commit 83d44cb

2 files changed

Lines changed: 28 additions & 16 deletions

File tree

src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,17 @@ public void checkBadSerVer() {
7777
@Test(expectedExceptions = SketchesArgumentException.class)
7878
public void checkConstructorKtooSmall() {
7979
int k = 8;
80-
WritableMemory mem = makeNativeMemory(k);
81-
UpdateSketch.builder().setNominalEntries(k).build(mem);
80+
try (WritableMemory mem = makeNativeMemory(k)) {
81+
UpdateSketch.builder().setNominalEntries(k).build(mem);
82+
}
8283
}
8384

8485
@Test(expectedExceptions = SketchesArgumentException.class)
8586
public void checkConstructorMemTooSmall() {
8687
int k = 16;
87-
WritableMemory mem = makeNativeMemory(k/2);
88-
UpdateSketch.builder().setNominalEntries(k).build(mem);
88+
try (WritableMemory mem = makeNativeMemory(k/2)) {
89+
UpdateSketch.builder().setNominalEntries(k).build(mem);
90+
}
8991
}
9092

9193
@Test(expectedExceptions = SketchesArgumentException.class)
@@ -589,7 +591,7 @@ public void checkEstModeNativeMemory() {
589591
int u = 2*k;
590592
int memCapacity = (k << 4) + (Family.QUICKSELECT.getMinPreLongs() << 3);
591593

592-
try(WritableMemory mem = WritableMemory.allocateDirect(memCapacity)) {
594+
try(WritableMemory mem = WritableMemory.allocateDirect(memCapacity)) { //will not request more memory
593595
UpdateSketch usk = UpdateSketch.builder().setNominalEntries(k).build(mem);
594596
DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch)usk; //for internal checks
595597
assertTrue(usk.isEmpty());
@@ -599,6 +601,10 @@ public void checkEstModeNativeMemory() {
599601
println(""+est);
600602
assertEquals(usk.getEstimate(), u, u*.05);
601603
assertTrue(sk1.getRetainedEntries(false) > k);
604+
Memory mem2 = usk.getMemory();
605+
assertTrue(mem2.isAlive());
606+
assertTrue(mem2.isDirect()); //still off heap.
607+
assertTrue(mem2.isSameResource(mem));
602608
}
603609
}
604610

@@ -774,20 +780,22 @@ public void checkMoveAndResize() {
774780
int k = 1 << 12;
775781
int u = 2 * k;
776782
int bytes = Sketches.getMaxUpdateSketchBytes(k);
777-
WritableMemory wmem = WritableMemory.allocateDirect(bytes/2); //will request
783+
WritableMemory wmem = WritableMemory.allocateDirect(bytes/2); //will request more memory
778784
UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
779785
assertTrue(sketch.isSameResource(wmem));
780786
for (int i = 0; i < u; i++) { sketch.update(i); }
781-
assertTrue(sketch.getMemory().isAlive());
782-
assertFalse(wmem.isAlive());
787+
Memory mem = sketch.getMemory();
788+
assertTrue(mem.isAlive());
789+
assertFalse(mem.isDirect()); //now on heap.
790+
assertFalse(wmem.isAlive()); //wmem closed by MemoryRequestServer
783791
}
784792

785793
@Test
786794
public void checkReadOnlyRebuildResize() {
787795
int k = 1 << 12;
788796
int u = 2 * k;
789797
int bytes = Sketches.getMaxUpdateSketchBytes(k);
790-
WritableMemory wmem = WritableMemory.allocateDirect(bytes/2); //will request
798+
WritableMemory wmem = WritableMemory.allocateDirect(bytes/2); //will request more memory
791799
UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
792800
for (int i = 0; i < u; i++) { sketch.update(i); }
793801
double est1 = sketch.getEstimate();
@@ -796,6 +804,10 @@ public void checkReadOnlyRebuildResize() {
796804
UpdateSketch roSketch = (UpdateSketch) Sketches.wrapSketch(mem);
797805
double est2 = roSketch.getEstimate();
798806
assertEquals(est2, est1);
807+
Memory mem2 = sketch.getMemory();
808+
assertTrue(mem2.isAlive());
809+
assertFalse(mem2.isDirect()); //now on heap
810+
assertFalse(wmem.isAlive()); //wmem closed by MemoryRequestServer
799811
try {
800812
roSketch.rebuild();
801813
fail();

src/test/java/org/apache/datasketches/theta/UnionImplTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -191,21 +191,21 @@ public void checkMoveAndResizeOffHeap() {
191191
final int k = 1 << 12;
192192
final int u = 2 * k;
193193
final int bytes = Sketches.getMaxUpdateSketchBytes(k);
194-
WritableMemory wmem = WritableMemory.allocateDirect(bytes / 2); //too small, forces new allocation on heap
195-
WritableMemory wmem2 = WritableMemory.allocateDirect(bytes / 2);
194+
WritableMemory wmem = WritableMemory.allocateDirect(bytes / 2); //not really used, except as a reference.
195+
WritableMemory wmem2 = WritableMemory.allocateDirect(bytes / 2); //too small, forces new allocation on heap
196196
final UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build(wmem);
197197
assertTrue(sketch.isSameResource(wmem)); //also testing the isSameResource function
198198

199199
final Union union = SetOperation.builder().buildUnion(wmem2);
200200
assertTrue(union.isSameResource(wmem2));
201201

202202
for (int i = 0; i < u; i++) { union.update(i); }
203-
assertFalse(union.isSameResource(wmem));
203+
assertFalse(union.isSameResource(wmem)); //different Memories altogether
204204

205205
final Union union2 = SetOperation.builder().buildUnion(); //on-heap union
206206
assertFalse(union2.isSameResource(wmem2)); //obviously not
207-
wmem.close();
208-
//note wmem2 has already been closed by the DefaultMemoryRequestServer
207+
wmem.close(); //empty, but we must close it anyway.
208+
assertFalse(wmem2.isAlive());//previously closed via the DefaultMemoryRequestServer.
209209
}
210210

211211
@Test
@@ -226,13 +226,13 @@ public void checkUnionCompactOrderedSource() {
226226
final double est1 = sk.getEstimate();
227227

228228
final int bytes = Sketches.getMaxCompactSketchBytes(sk.getRetainedEntries(true));
229-
try (WritableMemory wmem = WritableMemory.allocateDirect(bytes)) {
229+
try (WritableMemory wmem = WritableMemory.allocateDirect(bytes)) { //sufficient memory
230230
final CompactSketch csk = sk.compact(true, wmem); //ordered, direct
231231
final Union union = Sketches.setOperationBuilder().buildUnion();
232232
union.union(csk);
233233
final double est2 = union.getResult().getEstimate();
234234
assertEquals(est2, est1);
235-
}
235+
} //wmem is closed here
236236
}
237237

238238
@Test(expectedExceptions = SketchesArgumentException.class)

0 commit comments

Comments
 (0)