`EndlessConsumer` auf `@KafkaHandler` umgestellt
[demos/kafka/training] / src / test / java / de / juplo / kafka / GenericApplicationTests.java
index 937b40f..49ddb47 100644 (file)
@@ -12,7 +12,6 @@ import org.apache.kafka.common.utils.Bytes;
 import org.junit.jupiter.api.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
 import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
 import org.springframework.boot.autoconfigure.mongo.MongoProperties;
 import org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo;
@@ -20,6 +19,8 @@ import org.springframework.boot.test.context.ConfigDataApplicationContextInitial
 import org.springframework.boot.test.context.TestConfiguration;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Import;
+import org.springframework.kafka.config.KafkaListenerEndpointRegistry;
+import org.springframework.kafka.core.ConsumerFactory;
 import org.springframework.kafka.test.context.EmbeddedKafka;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@@ -37,11 +38,7 @@ import static org.assertj.core.api.Assertions.*;
 import static org.awaitility.Awaitility.*;
 
 
-@SpringJUnitConfig(
-  initializers = ConfigDataApplicationContextInitializer.class,
-  classes = {
-      KafkaAutoConfiguration.class,
-      ApplicationTests.Configuration.class })
+@SpringJUnitConfig(initializers = ConfigDataApplicationContextInitializer.class)
 @TestPropertySource(
                properties = {
                                "spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}",
@@ -69,9 +66,11 @@ abstract class GenericApplicationTests<K, V>
        @Autowired
        MongoProperties mongoProperties;
        @Autowired
-       TestRecordHandler<K, V> recordHandler;
+       KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;
        @Autowired
-       EndlessConsumer<K, V> endlessConsumer;
+       TestRecordHandler recordHandler;
+       @Autowired
+       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))
@@ -141,7 +140,7 @@ abstract class GenericApplicationTests<K, V>
 
                checkSeenOffsetsForProgress();
                assertSeenOffsetsEqualCommittedOffsets(recordHandler.seenOffsets);
-               assertThat(recordHandler.receivedRecords.size())
+               assertThat(recordHandler.receivedMessages)
                                .describedAs("Received not all sent events")
                                .isLessThan(numberOfGeneratedMessages);
 
@@ -157,7 +156,7 @@ abstract class GenericApplicationTests<K, V>
 
        @Test
        @SkipWhenErrorCannotBeGenerated(logicError = true)
-       void doesNotCommitOffsetsOnLogicError()
+       void commitsOffsetsOfUnseenRecordsOnLogicError()
        {
                int numberOfGeneratedMessages =
                                recordGenerator.generate(false, true, messageSender);
@@ -168,7 +167,7 @@ abstract class GenericApplicationTests<K, V>
                                .until(() -> !endlessConsumer.running());
 
                checkSeenOffsetsForProgress();
-               assertSeenOffsetsAreBehindCommittedOffsets(recordHandler.seenOffsets);
+               assertSeenOffsetsEqualCommittedOffsets(recordHandler.seenOffsets);
 
                endlessConsumer.start();
                await("Consumer failed")
@@ -176,7 +175,7 @@ abstract class GenericApplicationTests<K, V>
                                .pollInterval(Duration.ofSeconds(1))
                                .until(() -> !endlessConsumer.running());
 
-               assertSeenOffsetsAreBehindCommittedOffsets(recordHandler.seenOffsets);
+               assertSeenOffsetsEqualCommittedOffsets(recordHandler.seenOffsets);
 
                assertThatNoException()
                                .describedAs("Consumer should not be running")
@@ -348,7 +347,7 @@ abstract class GenericApplicationTests<K, V>
 
                oldOffsets = new HashMap<>();
                recordHandler.seenOffsets = new HashMap<>();
-               recordHandler.receivedRecords = new HashSet<>();
+               recordHandler.receivedMessages = 0;
 
                doForCurrentOffsets((tp, offset) ->
                {
@@ -392,5 +391,11 @@ 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();
+    }
        }
 }