Anzahl der Fehler für die Test-Logik verfügbar gemacht
[demos/kafka/training] / src / test / java / de / juplo / kafka / GenericApplicationTests.java
index 49ddb47..4793d96 100644 (file)
@@ -92,8 +92,9 @@ abstract class GenericApplicationTests<K, V>
        @Test
        void commitsCurrentOffsetsOnSuccess() throws Exception
        {
-               int numberOfGeneratedMessages =
-                               recordGenerator.generate(false, false, messageSender);
+               recordGenerator.generate(false, false, messageSender);
+
+               int numberOfGeneratedMessages = recordGenerator.getNumberOfMessages();
 
                await(numberOfGeneratedMessages + " records received")
                                .atMost(Duration.ofSeconds(30))
@@ -109,9 +110,9 @@ abstract class GenericApplicationTests<K, V>
                                        assertSeenOffsetsEqualCommittedOffsets(recordHandler.seenOffsets);
                                });
 
-               assertThatExceptionOfType(IllegalStateException.class)
-                               .isThrownBy(() -> endlessConsumer.exitStatus())
-                               .describedAs("Consumer should still be running");
+               assertThat(endlessConsumer.running())
+                               .describedAs("Consumer should still be running")
+                               .isTrue();
 
                endlessConsumer.stop();
                recordGenerator.assertBusinessLogic();
@@ -121,8 +122,9 @@ abstract class GenericApplicationTests<K, V>
        @SkipWhenErrorCannotBeGenerated(poisonPill = true)
        void commitsOffsetOfErrorForReprocessingOnDeserializationError()
        {
-               int numberOfGeneratedMessages =
-                               recordGenerator.generate(true, false, messageSender);
+               recordGenerator.generate(true, false, messageSender);
+
+               int numberOfGeneratedMessages = recordGenerator.getNumberOfMessages();
 
                await("Consumer failed")
                                .atMost(Duration.ofSeconds(30))
@@ -144,12 +146,9 @@ abstract class GenericApplicationTests<K, V>
                                .describedAs("Received not all sent events")
                                .isLessThan(numberOfGeneratedMessages);
 
-               assertThatNoException()
-                               .describedAs("Consumer should not be running")
-                               .isThrownBy(() -> endlessConsumer.exitStatus());
-               assertThat(endlessConsumer.exitStatus())
-                               .describedAs("Consumer should have exited abnormally")
-                               .containsInstanceOf(RecordDeserializationException.class);
+               assertThat(endlessConsumer.running())
+                               .describedAs("Consumer should have exited")
+                               .isFalse();
 
                recordGenerator.assertBusinessLogic();
        }
@@ -158,8 +157,9 @@ abstract class GenericApplicationTests<K, V>
        @SkipWhenErrorCannotBeGenerated(logicError = true)
        void commitsOffsetsOfUnseenRecordsOnLogicError()
        {
-               int numberOfGeneratedMessages =
-                               recordGenerator.generate(false, true, messageSender);
+               recordGenerator.generate(false, true, messageSender);
+
+               int numberOfGeneratedMessages = recordGenerator.getNumberOfMessages();
 
                await("Consumer failed")
                                .atMost(Duration.ofSeconds(30))
@@ -177,12 +177,9 @@ abstract class GenericApplicationTests<K, V>
 
                assertSeenOffsetsEqualCommittedOffsets(recordHandler.seenOffsets);
 
-               assertThatNoException()
+               assertThat(endlessConsumer.running())
                                .describedAs("Consumer should not be running")
-                               .isThrownBy(() -> endlessConsumer.exitStatus());
-               assertThat(endlessConsumer.exitStatus())
-                               .describedAs("Consumer should have exited abnormally")
-                               .containsInstanceOf(RuntimeException.class);
+                               .isFalse();
 
                recordGenerator.assertBusinessLogic();
        }
@@ -277,11 +274,15 @@ abstract class GenericApplicationTests<K, V>
 
        public interface RecordGenerator
        {
-               int generate(
+               void generate(
                                boolean poisonPills,
                                boolean logicErrors,
                                Consumer<ProducerRecord<Bytes, Bytes>> messageSender);
 
+               int getNumberOfMessages();
+               int getNumberOfPoisonPills();
+               int getNumberOfLogicErrors();
+
                default boolean canGeneratePoisonPill()
                {
                        return true;
@@ -392,10 +393,10 @@ abstract class GenericApplicationTests<K, V>
                        return new TestRecordHandler(applicationRecordHandler);
                }
 
-    @Bean(destroyMethod = "close")
-    public org.apache.kafka.clients.consumer.Consumer<String, Message> kafkaConsumer(ConsumerFactory<String, Message> factory)
-    {
-      return factory.createConsumer();
-    }
+               @Bean(destroyMethod = "close")
+               public org.apache.kafka.clients.consumer.Consumer<String, Message> kafkaConsumer(ConsumerFactory<String, Message> factory)
+               {
+                       return factory.createConsumer();
+               }
        }
 }