Skip to content

Commit 40cbe9c

Browse files
- Updated from the deprecated org.testcontainers.containers.KafkaContainer to org.testcontainers.kafka.KafkaContainer
- Switched to use the `apache/kafka-native` docker image as required by `org.testcontainers.kafka.KafkaContainer` - Added custom env as recommended in testcontainers/testcontainers-java#9506 - Added `objenesis` dependency where needed to deserialize outbox messages - Adjusted test timeout parameters - Adjusted logging to be less verbose when running the application
1 parent 7c77c00 commit 40cbe9c

File tree

11 files changed

+34
-50
lines changed

11 files changed

+34
-50
lines changed

docker-compose.yml

+1-21
Original file line numberDiff line numberDiff line change
@@ -24,31 +24,11 @@ services:
2424
- "27017:27017"
2525
command: [--replSet, "rs0"]
2626

27-
# From https://developer.confluent.io/quickstart/kafka-docker/
28-
zookeeper:
29-
image: confluentinc/cp-zookeeper:latest
30-
container_name: zookeeper
31-
environment:
32-
ZOOKEEPER_CLIENT_PORT: 2181
33-
ZOOKEEPER_TICK_TIME: 2000
34-
3527
broker:
36-
image: confluentinc/cp-kafka:latest
28+
image: apache/kafka-native:latest
3729
container_name: kafka_broker
3830
ports:
39-
# To learn about configuring Kafka for access across networks see
40-
# https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/
4131
- "9092:9092"
42-
depends_on:
43-
- zookeeper
44-
environment:
45-
KAFKA_BROKER_ID: 1
46-
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
47-
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
48-
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://broker:29092
49-
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
50-
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
51-
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
5232

5333
# Tracing, Latency and Metric setup is inspired by https://spring.io/blog/2022/10/12/observability-with-spring-boot-3 / https://github.com/marcingrzejszczak/observability-boot-blog-post
5434
tempo:

mongodb-inbox-outbox/pom.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@
3838
<artifactId>spring-boot-starter-mongodb</artifactId>
3939
<version>${essentials.version}</version>
4040
</dependency>
41-
<!-- <dependency>-->
42-
<!-- <groupId>org.objenesis</groupId>-->
43-
<!-- <artifactId>objenesis</artifactId>-->
44-
<!-- <version>${objenesis.version}</version>-->
45-
<!-- </dependency>-->
41+
<dependency>
42+
<groupId>org.objenesis</groupId>
43+
<artifactId>objenesis</artifactId>
44+
<version>${objenesis.version}</version>
45+
</dependency>
4646
<dependency>
4747
<groupId>org.springframework.boot</groupId>
4848
<artifactId>spring-boot-starter-data-mongodb</artifactId>

mongodb-inbox-outbox/src/test/java/dk/cloudcreate/essentials/spring/examples/mongodb/messaging/shipping/OrderShippingProcessorIT.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public class OrderShippingProcessorIT {
5353
static MongoDBContainer mongoDBContainer = new MongoDBContainer("mongo:latest");
5454

5555
@Container
56-
static KafkaContainer kafkaContainer = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:latest"));
56+
static org.testcontainers.kafka.KafkaContainer kafkaContainer = new org.testcontainers.kafka.KafkaContainer("apache/kafka-native:latest")
57+
.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094");
5758
private KafkaMessageListenerContainer<String, Object> kafkaListenerContainer;
5859

5960
@DynamicPropertySource

postgresql-cqrs/src/test/java/dk/cloudcreate/essentials/spring/examples/postgresql/cqrs/banking/AccountsIT.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ public class AccountsIT {
5050
.withUsername("test");
5151

5252
@Container
53-
static KafkaContainer kafkaContainer = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:latest"));
53+
static org.testcontainers.kafka.KafkaContainer kafkaContainer = new org.testcontainers.kafka.KafkaContainer("apache/kafka-native:latest")
54+
.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094");
5455

5556
@DynamicPropertySource
5657
static void setProperties(DynamicPropertyRegistry registry) {

postgresql-cqrs/src/test/java/dk/cloudcreate/essentials/spring/examples/postgresql/cqrs/banking/TransferMoneyProcessorIT.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public class TransferMoneyProcessorIT {
5353
.withUsername("test");
5454

5555
@Container
56-
static KafkaContainer kafkaContainer = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:latest"));
56+
static org.testcontainers.kafka.KafkaContainer kafkaContainer = new org.testcontainers.kafka.KafkaContainer("apache/kafka-native:latest")
57+
.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094");
5758

5859
@DynamicPropertySource
5960
static void setProperties(DynamicPropertyRegistry registry) {

postgresql-cqrs/src/test/java/dk/cloudcreate/essentials/spring/examples/postgresql/cqrs/shipping/OrderShippingProcessorIT.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,9 @@
3333
import org.springframework.kafka.listener.*;
3434
import org.springframework.test.annotation.DirtiesContext;
3535
import org.springframework.test.context.*;
36-
import org.testcontainers.containers.*;
37-
import org.testcontainers.junit.jupiter.Container;
36+
import org.testcontainers.containers.PostgreSQLContainer;
3837
import org.testcontainers.junit.jupiter.*;
3938
import org.testcontainers.shaded.org.awaitility.Awaitility;
40-
import org.testcontainers.utility.DockerImageName;
4139

4240
import java.time.Duration;
4341
import java.util.*;
@@ -57,7 +55,8 @@ public class OrderShippingProcessorIT {
5755
.withUsername("test");
5856

5957
@Container
60-
static KafkaContainer kafkaContainer = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:latest"));
58+
static org.testcontainers.kafka.KafkaContainer kafkaContainer = new org.testcontainers.kafka.KafkaContainer("apache/kafka-native:latest")
59+
.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094");
6160
private KafkaMessageListenerContainer<String, Object> kafkaListenerContainer;
6261

6362
@DynamicPropertySource

postgresql-inbox-outbox/pom.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@
4343
<artifactId>types-springdata-jpa</artifactId>
4444
<version>${essentials.version}</version>
4545
</dependency>
46-
<!-- <dependency>-->
47-
<!-- <groupId>org.objenesis</groupId>-->
48-
<!-- <artifactId>objenesis</artifactId>-->
49-
<!-- <version>${objenesis.version}</version>-->
50-
<!-- </dependency>-->
46+
<dependency>
47+
<groupId>org.objenesis</groupId>
48+
<artifactId>objenesis</artifactId>
49+
<version>${objenesis.version}</version>
50+
</dependency>
5151
<dependency>
5252
<groupId>org.springframework.boot</groupId>
5353
<artifactId>spring-boot-starter-data-jpa</artifactId>

postgresql-inbox-outbox/src/main/resources/logback-spring.xml

+8-8
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@
3737

3838
<logger name="dk.cloudcreate.essentials" level="DEBUG"/>
3939
<logger name="dk.cloudcreate.essentials.components.foundation.transaction" level="INFO"/>
40-
<logger name="dk.cloudcreate.essentials.components.foundation.reactive.command.DurableLocalCommandBus" level="DEBUG"/>
40+
<logger name="dk.cloudcreate.essentials.components.foundation.reactive.command.DurableLocalCommandBus" level="INFO"/>
4141
<logger name="dk.cloudcreate.essentials.components.distributed.fencedlock.postgresql.PostgresqlFencedLockManager" level="INFO"/>
42-
<logger name="dk.cloudcreate.essentials.shared.interceptor.DefaultInterceptorChain" level="DEBUG"/>
43-
<logger name="dk.cloudcreate.essentials.components.foundation.messaging.eip.store_and_forward.Inboxes.DurableQueueBasedInboxes" level="DEBUG"/>
44-
<logger name="dk.cloudcreate.essentials.components.queue.postgresql.PostgresqlDurableQueues" level="DEBUG"/>
45-
<logger name="dk.cloudcreate.essentials.components.queue.postgresql.PostgresqlDurableQueues$1" level="DEBUG"/>
46-
<logger name="dk.cloudcreate.essentials.components.foundation.messaging.queue.DurableQueueConsumer" level="DEBUG"/>
47-
<logger name="dk.cloudcreate.essentials.components.foundation.messaging.queue.DurableQueueConsumer.MessageHandlingFailures" level="DEBUG"/>
48-
<logger name="dk.cloudcreate.essentials.components.foundation.messaging.queue.QueuePollingOptimizer.SimpleQueuePollingOptimizer" level="DEBUG"/>
42+
<logger name="dk.cloudcreate.essentials.shared.interceptor.DefaultInterceptorChain" level="INFO"/>
43+
<logger name="dk.cloudcreate.essentials.components.foundation.messaging.eip.store_and_forward.Inboxes.DurableQueueBasedInboxes" level="INFO"/>
44+
<logger name="dk.cloudcreate.essentials.components.queue.postgresql.PostgresqlDurableQueues" level="INFO"/>
45+
<logger name="dk.cloudcreate.essentials.components.queue.postgresql.PostgresqlDurableQueues$1" level="INFO"/>
46+
<logger name="dk.cloudcreate.essentials.components.foundation.messaging.queue.DurableQueueConsumer" level="INFO"/>
47+
<logger name="dk.cloudcreate.essentials.components.foundation.messaging.queue.DurableQueueConsumer.MessageHandlingFailures" level="INFO"/>
48+
<logger name="dk.cloudcreate.essentials.components.foundation.messaging.queue.QueuePollingOptimizer.SimpleQueuePollingOptimizer" level="INFO"/>
4949
<root level="INFO">
5050
<appender-ref ref="LOKI"/>
5151
</root>

postgresql-inbox-outbox/src/test/java/dk/cloudcreate/essentials/spring/examples/postgresql/messaging/AbstractIntegrationTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ public class AbstractIntegrationTest {
4646
.withUsername("test");
4747

4848
@Container
49-
static KafkaContainer kafkaContainer = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:latest"));
49+
static org.testcontainers.kafka.KafkaContainer kafkaContainer = new org.testcontainers.kafka.KafkaContainer("apache/kafka-native:latest")
50+
.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094");
5051
protected KafkaMessageListenerContainer<String, Object> kafkaListenerContainer;
5152

5253
@DynamicPropertySource

postgresql-inbox-outbox/src/test/java/dk/cloudcreate/essentials/spring/examples/postgresql/messaging/DurableQueuesLoadIT.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public class DurableQueuesLoadIT {
5353
.withPassword("test")
5454
.withUsername("test");
5555
@Container
56-
static KafkaContainer kafkaContainer = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:latest"));
56+
static org.testcontainers.kafka.KafkaContainer kafkaContainer = new org.testcontainers.kafka.KafkaContainer("apache/kafka-native:latest")
57+
.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094");
5758

5859

5960
@DynamicPropertySource
@@ -116,7 +117,7 @@ void queue_a_large_number_of_messages() {
116117
assertThat(nextMessages).hasSize(10);
117118

118119

119-
Awaitility.waitAtMost(Duration.ofSeconds(10))
120+
Awaitility.waitAtMost(Duration.ofSeconds(20))
120121
.untilAsserted(() -> {
121122
System.out.println("-----> " + Instant.now() + " messages received: " + msgHandler.messagesReceived.get());
122123
assertThat(msgHandler.messagesReceived.get()).isGreaterThan(10);

postgresql-inbox-outbox/src/test/java/dk/cloudcreate/essentials/spring/examples/postgresql/messaging/shipping/LoadOrderShippingProcessorIT.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void stress_test_durable_queues_and_local_eventbus() {
5858
log.debug("########## TotalMessagesQueued for '{}': '{}'", queueName, totalMessagesQueuedFor);
5959

6060
var stopWatch = StopWatch.start();
61-
Awaitility.waitAtMost(Duration.ofMinutes(60))
61+
Awaitility.waitAtMost(Duration.ofMinutes(3))
6262
.pollDelay(Duration.ofSeconds(5))
6363
.pollInterval(Duration.ofSeconds(10))
6464
.until(() -> {

0 commit comments

Comments
 (0)