From 5ef69da7be87ce3deb0b720ef68309f666cb4eb7 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Tue, 24 Dec 2024 13:04:25 +0100 Subject: [PATCH] =?utf8?q?GREEN:=20Erwartetes=20Verhalten=20f=C3=BCr=20unt?= =?utf8?q?erschiedliche=20Delays=20definiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../de/juplo/kafka/ExampleConsumerTest.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/test/java/de/juplo/kafka/ExampleConsumerTest.java b/src/test/java/de/juplo/kafka/ExampleConsumerTest.java index 53ca0308..8cf1e22d 100644 --- a/src/test/java/de/juplo/kafka/ExampleConsumerTest.java +++ b/src/test/java/de/juplo/kafka/ExampleConsumerTest.java @@ -258,6 +258,42 @@ public class ExampleConsumerTest .until(() -> mockRecordHandler.getNumMessagesHandled() == 20); } + @DisplayName("All messages on a partition are delayed and a message, that triggers a retryable exception in the domain-logic, is retried and all messages are eventually consumed") + @ParameterizedTest(name = "Delay for normal messages: {0}ms") + @ValueSource(ints = { 10, 20, 50, 100, 150, 200 }) + void testOneMessageCausesRetryableDomainErrorsWhileAllMessagesAreDelayed(int delay) + { + createExampleConsumer(); + mockRecordHandler.normalRecordHandlingDelay = Duration.ofMillis(delay); + mockRecordHandler.exceptionalRecordHandlingDelay = Duration.ofMillis(100); + + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendValidMessage(3); + sendMessageThatTriggersRetriableExceptionInDomain(3, 1); + sendValidMessage(3); + + Awaitility + .await("All messages are eventually consumed") + .atMost(Duration.ofSeconds(15)) + .until(() -> mockRecordHandler.getNumMessagesHandled() == 20); + } + @DisplayName("A message, that triggers a retryable exception in the domain-logic, but fails too often, is skipped and all other messages are eventually consumed") @Test void testOneMessageCausesRetryableDomainErrors() -- 2.20.1