@Test default void groupsWithFailedEventsShouldReturnEmptyWhenNoStored() { EventDeadLetters eventDeadLetters = eventDeadLetters(); assertThat(eventDeadLetters.groupsWithFailedEvents().toStream()).isEmpty(); } }
@Test default void groupsWithFailedEventsShouldReturnAllStoredGroups() { EventDeadLetters eventDeadLetters = eventDeadLetters(); eventDeadLetters.store(GROUP_A, EVENT_1).block(); eventDeadLetters.store(GROUP_B, EVENT_1).block(); assertThat(eventDeadLetters.groupsWithFailedEvents().toStream()) .containsOnly(GROUP_A, GROUP_B); }
default Stream<Event.EventId> allEventIds() { EventDeadLetters eventDeadLetters = eventDeadLetters(); return eventDeadLetters.groupsWithFailedEvents() .flatMap(eventDeadLetters::failedEventIds) .toStream(); }
@Test default void deadLetterShouldNotStoreWhenFailsLessThanMaxRetries() { EventCollector eventCollector = eventCollector(); doThrow(new RuntimeException()) .doThrow(new RuntimeException()) .doCallRealMethod() .when(eventCollector).event(EVENT); eventBus().register(eventCollector, new EventBusTestFixture.GroupA()); eventBus().dispatch(EVENT, NO_KEYS).block(); WAIT_CONDITION .until(() -> assertThat(eventCollector.getEvents()).hasSize(1)); assertThat(deadLetter().groupsWithFailedEvents().toIterable()) .isEmpty(); }
@Test default void deadLettersIsNotAppliedForKeyRegistrations() throws Exception { EventCollector eventCollector = eventCollector(); doThrow(new RuntimeException()) .doThrow(new RuntimeException()) .doThrow(new RuntimeException()) .doThrow(new RuntimeException()) .doCallRealMethod() .when(eventCollector).event(EVENT); eventBus().register(eventCollector, KEY_1); eventBus().dispatch(EVENT, ImmutableSet.of(KEY_1)).block(); TimeUnit.SECONDS.sleep(1); SoftAssertions.assertSoftly(softly -> { softly.assertThat(eventCollector.getEvents()).isEmpty(); softly.assertThat(deadLetter().groupsWithFailedEvents().toIterable()) .isEmpty(); }); }