use of com.hazelcast.journal.EventJournalEventAdapter.EventType.ADDED in project hazelcast by hazelcast.
the class AbstractEventJournalBasicTest method allowReadingWithFutureSeq.
@Test
public void allowReadingWithFutureSeq() throws Exception {
final EventJournalTestContext<String, Integer, EJ_TYPE> context = createContext();
final EventJournalInitialSubscriberState state = subscribeToEventJournal(context.dataAdapter, partitionId);
assertEquals(0, state.getOldestSequence());
assertEquals(-1, state.getNewestSequence());
assertEventJournalSize(context.dataAdapter, 0);
final Integer value = RANDOM.nextInt();
final CountDownLatch latch = new CountDownLatch(1);
final int startSequence = 1;
final BiConsumer<ReadResultSet<EJ_TYPE>, Throwable> callback = (response, t) -> {
if (t == null) {
latch.countDown();
assertEquals(1, response.size());
final EventJournalEventAdapter<String, Integer, EJ_TYPE> journalAdapter = context.eventJournalAdapter;
final EJ_TYPE e = response.get(0);
assertEquals(ADDED, journalAdapter.getType(e));
assertEquals(value, journalAdapter.getNewValue(e));
} else {
rethrow(t);
}
};
CompletionStage<ReadResultSet<EJ_TYPE>> callbackStage = readFromEventJournal(context.dataAdapter, startSequence, 1, partitionId, TRUE_PREDICATE, IDENTITY_FUNCTION).whenCompleteAsync(callback);
assertTrueEventually(() -> {
context.dataAdapter.put(randomPartitionKey(), value);
assertTrue(latch.await(200, TimeUnit.MILLISECONDS));
}, 30);
// ensure no exception thrown from callback
callbackStage.toCompletableFuture().join();
}
Aggregations