Anwendung auf den Default-ErrorHandler umgestellt
[demos/kafka/training] / src / test / java / de / juplo / kafka / GenericApplicationTests.java
index 753debe..66a80ad 100644 (file)
@@ -2,7 +2,6 @@ package de.juplo.kafka;
 
 import com.mongodb.client.MongoClient;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.apache.kafka.clients.consumer.KafkaConsumer;
 import org.apache.kafka.clients.producer.KafkaProducer;
 import org.apache.kafka.clients.producer.ProducerRecord;
@@ -69,9 +68,9 @@ abstract class GenericApplicationTests<K, V>
        @Autowired
        KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;
        @Autowired
-       TestRecordHandler<K, V> recordHandler;
+       TestRecordHandler recordHandler;
        @Autowired
-       EndlessConsumer<K, V> endlessConsumer;
+       EndlessConsumer endlessConsumer;
 
        KafkaProducer<Bytes, Bytes> testRecordProducer;
        KafkaConsumer<Bytes, Bytes> offsetConsumer;
@@ -99,7 +98,7 @@ abstract class GenericApplicationTests<K, V>
                await(numberOfGeneratedMessages + " records received")
                                .atMost(Duration.ofSeconds(30))
                                .pollInterval(Duration.ofSeconds(1))
-                               .until(() -> recordHandler.receivedRecords.size() >= numberOfGeneratedMessages);
+                               .until(() -> recordHandler.receivedMessages >= numberOfGeneratedMessages);
 
                await("Offsets committed")
                                .atMost(Duration.ofSeconds(10))
@@ -110,9 +109,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();
@@ -141,23 +140,20 @@ abstract class GenericApplicationTests<K, V>
 
                checkSeenOffsetsForProgress();
                assertSeenOffsetsEqualCommittedOffsets(recordHandler.seenOffsets);
-               assertThat(recordHandler.receivedRecords.size())
+               assertThat(recordHandler.receivedMessages)
                                .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();
        }
 
        @Test
        @SkipWhenErrorCannotBeGenerated(logicError = true)
-       void doesNotCommitOffsetsOnLogicError()
+       void commitsOffsetsOfUnseenRecordsOnLogicError()
        {
                int numberOfGeneratedMessages =
                                recordGenerator.generate(false, true, messageSender);
@@ -168,7 +164,7 @@ abstract class GenericApplicationTests<K, V>
                                .until(() -> !endlessConsumer.running());
 
                checkSeenOffsetsForProgress();
-               assertSeenOffsetsAreBehindCommittedOffsets(recordHandler.seenOffsets);
+               assertSeenOffsetsEqualCommittedOffsets(recordHandler.seenOffsets);
 
                endlessConsumer.start();
                await("Consumer failed")
@@ -176,14 +172,11 @@ abstract class GenericApplicationTests<K, V>
                                .pollInterval(Duration.ofSeconds(1))
                                .until(() -> !endlessConsumer.running());
 
-               assertSeenOffsetsAreBehindCommittedOffsets(recordHandler.seenOffsets);
+               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();
        }
@@ -348,7 +341,7 @@ abstract class GenericApplicationTests<K, V>
 
                oldOffsets = new HashMap<>();
                recordHandler.seenOffsets = new HashMap<>();
-               recordHandler.receivedRecords = new HashSet<>();
+               recordHandler.receivedMessages = 0;
 
                doForCurrentOffsets((tp, offset) ->
                {
@@ -393,10 +386,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();
+               }
        }
 }