lordcheng10 commented on code in PR #14985:
URL: https://github.com/apache/pulsar/pull/14985#discussion_r841155555


##########
managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java:
##########
@@ -291,6 +291,185 @@ public void acknowledge1() throws Exception {
         ledger.close();
     }
 
+    @Test
+    public void testCacheEvictionByMarkDeletedPosition() throws Throwable {
+        final CountDownLatch counter = new CountDownLatch(1);
+        ManagedLedgerConfig config = new ManagedLedgerConfig();
+        config.setCacheEvictionByMarkDeletedPosition(true);
+        factory.updateCacheEvictionTimeThreshold(TimeUnit.MILLISECONDS
+                .toNanos(30000));
+        factory.asyncOpen("my_test_ledger", config, new OpenLedgerCallback() {
+            @Override
+            public void openLedgerComplete(ManagedLedger ledger, Object ctx) {
+                ledger.asyncOpenCursor("test-cursor", new OpenCursorCallback() 
{
+                    @Override
+                    public void openCursorComplete(ManagedCursor cursor, 
Object ctx) {
+                        ManagedLedger ledger = (ManagedLedger) ctx;
+                        String message1 = "test";
+                        ledger.asyncAddEntry(message1.getBytes(Encoding), new 
AddEntryCallback() {
+                            @Override
+                            public void addComplete(Position position, ByteBuf 
entryData, Object ctx) {
+                                @SuppressWarnings("unchecked")
+                                Pair<ManagedLedger, ManagedCursor> pair = 
(Pair<ManagedLedger, ManagedCursor>) ctx;
+                                ManagedLedger ledger = pair.getLeft();
+                                ManagedCursor cursor = pair.getRight();
+                                assertEquals(((ManagedLedgerImpl) 
ledger).getCacheSize(), message1.getBytes(Encoding).length);
+
+                                cursor.asyncReadEntries(1, new 
ReadEntriesCallback() {
+                                    @Override
+                                    public void 
readEntriesComplete(List<Entry> entries, Object ctx) {
+                                        ManagedCursor cursor = (ManagedCursor) 
ctx;
+                                        assertEquals(entries.size(), 1);
+                                        Entry entry = entries.get(0);
+                                        final Position position = 
entry.getPosition();
+                                        assertEquals(new 
String(entry.getDataAndRelease(), Encoding), message1);
+                                        ((ManagedLedgerImpl) 
ledger).doCacheEviction(
+                                                System.nanoTime() - 
TimeUnit.MILLISECONDS.toNanos(30000));
+                                        assertEquals(((ManagedLedgerImpl) 
ledger).getCacheSize(), message1.getBytes(Encoding).length);
+
+                                        log.debug("Mark-Deleting to position 
{}", position);
+                                        cursor.asyncMarkDelete(position, new 
MarkDeleteCallback() {
+                                            @Override
+                                            public void 
markDeleteComplete(Object ctx) {
+                                                log.debug("Mark delete 
complete");
+                                                ManagedCursor cursor = 
(ManagedCursor) ctx;
+                                                
assertFalse(cursor.hasMoreEntries());
+                                                ((ManagedLedgerImpl) 
ledger).doCacheEviction(
+                                                        System.nanoTime() - 
TimeUnit.MILLISECONDS.toNanos(30000));
+                                                
assertEquals(((ManagedLedgerImpl) ledger).getCacheSize(), 0);
+
+                                                counter.countDown();
+                                            }
+
+                                            @Override
+                                            public void 
markDeleteFailed(ManagedLedgerException exception, Object ctx) {
+                                                fail(exception.getMessage());
+                                            }
+
+                                        }, cursor);
+                                    }
+
+                                    @Override
+                                    public void 
readEntriesFailed(ManagedLedgerException exception, Object ctx) {
+                                        fail(exception.getMessage());
+                                    }

Review Comment:
   I call 'fail' directly locally, which can cause the test to fail.  
@eolivelli 
   I have tried the following ways:
   public void testCacheEvictionByMarkDeletedPosition() throws Throwable{
   fail("xxx");
   .....
   }
   
   public void testCacheEvictionByMarkDeletedPosition() throws Throwable{
   .....
   public void addComplete(Position position, ByteBuf entryData, Object ctx) {
   fail("xxx");
   ......
   }
   }



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to