@Test void notFound() throws Exception { try { factory.openReadOnlyCursor("notFound", PositionImpl.earliest, new ManagedLedgerConfig()); fail("Should have failed"); } catch (ManagedLedgerNotFoundException e) { // Expected } factory.shutdown(); }
@Test void empty() throws Exception { factory.open("empty", new ManagedLedgerConfig().setRetentionTime(1, TimeUnit.HOURS)); ReadOnlyCursor cursor = factory.openReadOnlyCursor("empty", PositionImpl.earliest, new ManagedLedgerConfig()); assertEquals(cursor.getNumberOfEntries(), 0); assertFalse(cursor.hasMoreEntries()); cursor.close(); }
@Test void specifyStartPosition() throws Exception { ManagedLedger ledger = factory.open("simple", new ManagedLedgerConfig().setRetentionTime(1, TimeUnit.HOURS)); int N = 10; for (int i = 0; i < N; i++) { ledger.addEntry(("entry-" + i).getBytes()); } ReadOnlyCursor cursor = factory.openReadOnlyCursor("simple", PositionImpl.earliest, new ManagedLedgerConfig()); assertEquals(cursor.getNumberOfEntries(), N); assertTrue(cursor.hasMoreEntries()); Position readPosition = cursor.getReadPosition(); cursor = factory.openReadOnlyCursor("simple", readPosition, new ManagedLedgerConfig()); assertEquals(cursor.getNumberOfEntries(), N); assertTrue(cursor.hasMoreEntries()); cursor.skipEntries(5); Position newReadPosition = cursor.getReadPosition(); cursor = factory.openReadOnlyCursor("simple", newReadPosition, new ManagedLedgerConfig()); assertEquals(cursor.getNumberOfEntries(), N - 5); assertTrue(cursor.hasMoreEntries()); }
@Test void skip() throws Exception { ManagedLedger ledger = factory.open("skip", new ManagedLedgerConfig().setMaxEntriesPerLedger(2).setRetentionTime(1, TimeUnit.HOURS)); int N = 10; for (int i = 0; i < N; i++) { ledger.addEntry(("entry-" + i).getBytes()); } ReadOnlyCursor cursor = factory.openReadOnlyCursor("skip", PositionImpl.earliest, new ManagedLedgerConfig()); assertEquals(cursor.getNumberOfEntries(), N); assertTrue(cursor.hasMoreEntries()); cursor.skipEntries(5); assertEquals(cursor.getNumberOfEntries(), N - 5); assertTrue(cursor.hasMoreEntries()); cursor.close(); }
@Test void skipAll() throws Exception { ManagedLedger ledger = factory.open("skip-all", new ManagedLedgerConfig().setMaxEntriesPerLedger(7).setRetentionTime(1, TimeUnit.HOURS)); int N = 10; for (int i = 0; i < N; i++) { ledger.addEntry(("entry-" + i).getBytes()); } ReadOnlyCursor cursor = factory.openReadOnlyCursor("skip-all", PositionImpl.earliest, new ManagedLedgerConfig()); assertEquals(cursor.getNumberOfEntries(), N); assertTrue(cursor.hasMoreEntries()); cursor.skipEntries(N); assertEquals(cursor.getNumberOfEntries(), 0); assertFalse(cursor.hasMoreEntries()); cursor.close(); }
ReadOnlyCursor cursor = factory.openReadOnlyCursor("simple", PositionImpl.earliest, new ManagedLedgerConfig()); cursor = factory.openReadOnlyCursor("simple", PositionImpl.earliest, new ManagedLedgerConfig());
@Test void skipMultiple() throws Exception { ManagedLedger ledger = factory.open("skip", new ManagedLedgerConfig().setMaxEntriesPerLedger(7).setRetentionTime(1, TimeUnit.HOURS)); int N = 30; for (int i = 0; i < N; i++) { ledger.addEntry(("entry-" + i).getBytes()); } ReadOnlyCursor cursor = factory.openReadOnlyCursor("skip", PositionImpl.earliest, new ManagedLedgerConfig()); assertEquals(cursor.getNumberOfEntries(), N); assertTrue(cursor.hasMoreEntries()); cursor.skipEntries(25); assertEquals(cursor.getNumberOfEntries(), 5); assertTrue(cursor.hasMoreEntries()); cursor.skipEntries(5); assertEquals(cursor.getNumberOfEntries(), 0); assertFalse(cursor.hasMoreEntries()); cursor.close(); }