Search in sources :

Example 16 with ManagedCursor

use of org.apache.bookkeeper.mledger.ManagedCursor in project pulsar by yahoo.

the class ManagedCursorTest method testNumberOfEntriesInBacklog.

@Test(timeOut = 20000)
void testNumberOfEntriesInBacklog() throws Exception {
    ManagedLedger ledger = factory.open("my_test_ledger", new ManagedLedgerConfig().setMaxEntriesPerLedger(2));
    ManagedCursor c1 = ledger.openCursor("c1");
    Position p1 = ledger.addEntry("dummy-entry-1".getBytes(Encoding));
    ManagedCursor c2 = ledger.openCursor("c2");
    ledger.addEntry("dummy-entry-2".getBytes(Encoding));
    ManagedCursor c3 = ledger.openCursor("c3");
    Position p3 = ledger.addEntry("dummy-entry-3".getBytes(Encoding));
    ManagedCursor c4 = ledger.openCursor("c4");
    Position p4 = ledger.addEntry("dummy-entry-4".getBytes(Encoding));
    ManagedCursor c5 = ledger.openCursor("c5");
    assertEquals(c1.getNumberOfEntriesInBacklog(), 4);
    assertEquals(c2.getNumberOfEntriesInBacklog(), 3);
    assertEquals(c3.getNumberOfEntriesInBacklog(), 2);
    assertEquals(c4.getNumberOfEntriesInBacklog(), 1);
    assertEquals(c5.getNumberOfEntriesInBacklog(), 0);
    List<Entry> entries = c1.readEntries(2);
    assertEquals(entries.size(), 2);
    entries.forEach(e -> e.release());
    assertEquals(c1.getNumberOfEntries(), 2);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 4);
    c1.markDelete(p1);
    assertEquals(c1.getNumberOfEntries(), 2);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 3);
    c1.delete(p3);
    assertEquals(c1.getNumberOfEntries(), 1);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 2);
    c1.markDelete(p4);
    assertEquals(c1.getNumberOfEntries(), 0);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 0);
}
Also used : Entry(org.apache.bookkeeper.mledger.Entry) Position(org.apache.bookkeeper.mledger.Position) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedLedgerConfig(org.apache.bookkeeper.mledger.ManagedLedgerConfig) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Example 17 with ManagedCursor

use of org.apache.bookkeeper.mledger.ManagedCursor in project pulsar by yahoo.

the class ManagedCursorTest method readFromClosedLedger.

@Test(timeOut = 20000)
void readFromClosedLedger() throws Exception {
    ManagedLedger ledger = factory.open("my_test_ledger", new ManagedLedgerConfig().setMaxEntriesPerLedger(1));
    ManagedCursor c1 = ledger.openCursor("c1");
    ledger.close();
    try {
        c1.readEntries(2);
        fail("ledger is closed, should fail");
    } catch (ManagedLedgerException e) {
    // ok
    }
}
Also used : ManagedLedgerException(org.apache.bookkeeper.mledger.ManagedLedgerException) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedLedgerConfig(org.apache.bookkeeper.mledger.ManagedLedgerConfig) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Example 18 with ManagedCursor

use of org.apache.bookkeeper.mledger.ManagedCursor in project pulsar by yahoo.

the class ManagedCursorTest method testSingleDelete.

@Test(timeOut = 20000)
void testSingleDelete() throws Exception {
    ManagedLedger ledger = factory.open("my_test_ledger", new ManagedLedgerConfig().setMaxEntriesPerLedger(3));
    ManagedCursor cursor = ledger.openCursor("c1");
    Position p1 = ledger.addEntry("entry1".getBytes());
    Position p2 = ledger.addEntry("entry2".getBytes());
    Position p3 = ledger.addEntry("entry3".getBytes());
    Position p4 = ledger.addEntry("entry4".getBytes());
    Position p5 = ledger.addEntry("entry5".getBytes());
    Position p6 = ledger.addEntry("entry6".getBytes());
    Position p0 = cursor.getMarkDeletedPosition();
    cursor.delete(p4);
    assertEquals(cursor.getMarkDeletedPosition(), p0);
    cursor.delete(p1);
    assertEquals(cursor.getMarkDeletedPosition(), p1);
    cursor.delete(p3);
    // Delete will silently succeed
    cursor.delete(p3);
    assertEquals(cursor.getMarkDeletedPosition(), p1);
    cursor.delete(p2);
    assertEquals(cursor.getMarkDeletedPosition(), p4);
    cursor.delete(p5);
    assertEquals(cursor.getMarkDeletedPosition(), p5);
    cursor.close();
    try {
        cursor.delete(p6);
    } catch (ManagedLedgerException e) {
    // Ok
    }
}
Also used : ManagedLedgerException(org.apache.bookkeeper.mledger.ManagedLedgerException) Position(org.apache.bookkeeper.mledger.Position) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedLedgerConfig(org.apache.bookkeeper.mledger.ManagedLedgerConfig) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Example 19 with ManagedCursor

use of org.apache.bookkeeper.mledger.ManagedCursor in project pulsar by yahoo.

the class ManagedCursorTest method deleteSingleMessageTwice.

@Test(timeOut = 20000)
void deleteSingleMessageTwice() throws Exception {
    ManagedLedger ledger = factory.open("my_test_ledger");
    ManagedCursor c1 = ledger.openCursor("c1");
    Position p1 = ledger.addEntry("entry-1".getBytes(Encoding));
    Position p2 = ledger.addEntry("entry-2".getBytes(Encoding));
    Position p3 = ledger.addEntry("entry-3".getBytes(Encoding));
    Position p4 = ledger.addEntry("entry-4".getBytes(Encoding));
    assertEquals(c1.getNumberOfEntriesInBacklog(), 4);
    assertEquals(c1.getNumberOfEntries(), 4);
    c1.delete(p1);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 3);
    assertEquals(c1.getNumberOfEntries(), 3);
    assertEquals(c1.getMarkDeletedPosition(), p1);
    assertEquals(c1.getReadPosition(), p2);
    // Should have not effect since p1 is already deleted
    c1.delete(p1);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 3);
    assertEquals(c1.getNumberOfEntries(), 3);
    assertEquals(c1.getMarkDeletedPosition(), p1);
    assertEquals(c1.getReadPosition(), p2);
    c1.delete(p2);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 2);
    assertEquals(c1.getNumberOfEntries(), 2);
    assertEquals(c1.getMarkDeletedPosition(), p2);
    assertEquals(c1.getReadPosition(), p3);
    // Should have not effect since p2 is already deleted
    c1.delete(p2);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 2);
    assertEquals(c1.getNumberOfEntries(), 2);
    assertEquals(c1.getMarkDeletedPosition(), p2);
    assertEquals(c1.getReadPosition(), p3);
    c1.delete(p3);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 1);
    assertEquals(c1.getNumberOfEntries(), 1);
    assertEquals(c1.getMarkDeletedPosition(), p3);
    assertEquals(c1.getReadPosition(), p4);
    // Should have not effect since p3 is already deleted
    c1.delete(p3);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 1);
    assertEquals(c1.getNumberOfEntries(), 1);
    assertEquals(c1.getMarkDeletedPosition(), p3);
    assertEquals(c1.getReadPosition(), p4);
    c1.delete(p4);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 0);
    assertEquals(c1.getNumberOfEntries(), 0);
    assertEquals(c1.getMarkDeletedPosition(), p4);
    assertEquals(c1.getReadPosition(), p4.getNext());
    // Should have not effect since p4 is already deleted
    c1.delete(p4);
    assertEquals(c1.getNumberOfEntriesInBacklog(), 0);
    assertEquals(c1.getNumberOfEntries(), 0);
    assertEquals(c1.getMarkDeletedPosition(), p4);
    assertEquals(c1.getReadPosition(), p4.getNext());
}
Also used : Position(org.apache.bookkeeper.mledger.Position) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Example 20 with ManagedCursor

use of org.apache.bookkeeper.mledger.ManagedCursor in project pulsar by yahoo.

the class ManagedCursorTest method testReadingAllFilteredEntries.

@Test(timeOut = 20000)
void testReadingAllFilteredEntries() throws Exception {
    ManagedLedger ledger = factory.open("my_test_ledger", new ManagedLedgerConfig().setMaxEntriesPerLedger(3));
    ledger.openCursor("c1");
    ManagedCursor c2 = ledger.openCursor("c2");
    ledger.addEntry("entry1".getBytes());
    Position p2 = ledger.addEntry("entry2".getBytes());
    Position p3 = ledger.addEntry("entry3".getBytes());
    Position p4 = ledger.addEntry("entry4".getBytes());
    Position p5 = ledger.addEntry("entry5".getBytes());
    c2.readEntries(1).get(0).release();
    c2.delete(p2);
    c2.delete(p3);
    List<Entry> entries = c2.readEntries(2);
    assertEquals(entries.size(), 2);
    assertEquals(entries.get(0).getPosition(), p4);
    assertEquals(entries.get(1).getPosition(), p5);
    entries.forEach(e -> e.release());
}
Also used : Entry(org.apache.bookkeeper.mledger.Entry) Position(org.apache.bookkeeper.mledger.Position) ManagedLedger(org.apache.bookkeeper.mledger.ManagedLedger) ManagedLedgerConfig(org.apache.bookkeeper.mledger.ManagedLedgerConfig) ManagedCursor(org.apache.bookkeeper.mledger.ManagedCursor) Test(org.testng.annotations.Test)

Aggregations

ManagedCursor (org.apache.bookkeeper.mledger.ManagedCursor)302 Test (org.testng.annotations.Test)281 ManagedLedger (org.apache.bookkeeper.mledger.ManagedLedger)228 ManagedLedgerConfig (org.apache.bookkeeper.mledger.ManagedLedgerConfig)153 Position (org.apache.bookkeeper.mledger.Position)131 Entry (org.apache.bookkeeper.mledger.Entry)127 ManagedLedgerException (org.apache.bookkeeper.mledger.ManagedLedgerException)111 CountDownLatch (java.util.concurrent.CountDownLatch)66 ManagedLedgerFactory (org.apache.bookkeeper.mledger.ManagedLedgerFactory)58 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)34 CyclicBarrier (java.util.concurrent.CyclicBarrier)30 LedgerEntry (org.apache.bookkeeper.client.LedgerEntry)26 AddEntryCallback (org.apache.bookkeeper.mledger.AsyncCallbacks.AddEntryCallback)24 ManagedLedgerFactoryConfig (org.apache.bookkeeper.mledger.ManagedLedgerFactoryConfig)24 AtomicReference (java.util.concurrent.atomic.AtomicReference)22 BKException (org.apache.bookkeeper.client.BKException)21 AsyncCallbacks (org.apache.bookkeeper.mledger.AsyncCallbacks)19 MarkDeleteCallback (org.apache.bookkeeper.mledger.AsyncCallbacks.MarkDeleteCallback)19 List (java.util.List)18 Future (java.util.concurrent.Future)18