From fc10dc9fb5cc87e11c378bd70b8355cbee72749d Mon Sep 17 00:00:00 2001 From: Kai Hudalla Date: Sun, 3 Sep 2023 15:25:27 +0200 Subject: [PATCH] [#3558] Use Kafka in Raft mode for running integration tests Also updated Kafka container image used for ITs to version 3.5.0. Fixes #3558 --- bom/pom.xml | 3 +- site/homepage/content/release-notes.md | 2 + tests/pom.xml | 53 +++++-------------- tests/readme.md | 1 - .../tests/amqp/CommandAndControlAmqpIT.java | 6 ++- 5 files changed, 22 insertions(+), 43 deletions(-) diff --git a/bom/pom.xml b/bom/pom.xml index 004fe17c88..f1c9aa39e9 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -40,7 +40,7 @@ 1.3 docker.io/library/eclipse-temurin:17-jre-jammy 0.11.5 - docker.io/confluentinc/cp-kafka:7.3.5 + docker.io/confluentinc/cp-kafka:7.5.0 1.4.11 docker.io/library/mongo:6.0 quay.io/quarkus/quarkus-micro-image:2.0 @@ -51,7 +51,6 @@ 2.0.6 6.1.4 1.1.3 - docker.io/confluentinc/cp-zookeeper:7.3.5 8088 diff --git a/site/homepage/content/release-notes.md b/site/homepage/content/release-notes.md index f638960a2a..c44188746f 100644 --- a/site/homepage/content/release-notes.md +++ b/site/homepage/content/release-notes.md @@ -14,6 +14,8 @@ description = "Information about changes in recent Hono releases. Includes new f * When using Pub/Sub messaging, there were potentially issues concerning the AMQP connection between protocol adapter and command router, leading for example to timeouts when MQTT devices subscribed/unsubscribed to the command topic. This has been fixed. +* The integration tests now use Apache Kafka 3.5.0 in Raft mode which no longer requires running a separate Apache Zookeeper + instance and thus simplifies test setup and configuration. ### Deprecations diff --git a/tests/pom.xml b/tests/pom.xml index 401bdd1e58..98fdb300af 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -1,6 +1,6 @@ - - ${zookeeper.image.name} - hono-zookeeper-test - - ${hono.kafka-messaging.disabled} - - custom - ${custom.network.name} - zookeeper - - 400000000 - 400000000 - - Zookeeper - ${log.color.kafka} - - - - .*(binding to port).* - - - -Xms240M -Xmx240M - 2181 - 2000 - - - ${kafka.image.name} @@ -1261,25 +1233,28 @@ - .*(\[KafkaServer id=1\] started).* + .*(Kafka startTimeMs:).* + q1Sh-9_ISia_zwGINzRvyQ DOCKER_INTERNAL://kafka:9092,DOCKER_EXTERNAL://${docker.host.address}:${kafka.port} - 1 + CONTROLLER + 1@127.0.0.1:9093 + 1 0 - -Xms1024m -Xmx1024m DOCKER_INTERNAL - -server -XX:+UseG1GC -XX:MaxGCPauseMillis=40 -XX:InitiatingHeapOccupancyPercent=35 -XX:+DisableExplicitGC -Djava.awt.headless=true - DOCKER_INTERNAL://0.0.0.0:9092,DOCKER_EXTERNAL://0.0.0.0:9094 - DOCKER_INTERNAL:PLAINTEXT,DOCKER_EXTERNAL:PLAINTEXT + DOCKER_INTERNAL://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093,DOCKER_EXTERNAL://0.0.0.0:9094 + CONTROLLER:PLAINTEXT,DOCKER_INTERNAL:PLAINTEXT,DOCKER_EXTERNAL:PLAINTEXT - 1100 - - kafka.cluster=${hono.kafka.log-level},kafka.controller=${hono.kafka.log-level},kafka.coordinator=${hono.kafka.log-level},kafka.log=${hono.kafka.log-level},kafka.authorizer=${hono.kafka.log-level},kafka.zk=${hono.kafka.log-level},state.change.logger=${hono.kafka.log-level},kafka.server=${hono.kafka.log-level},kafka.server.KafkaServer=INFO + 1000 + 0 + + kafka=${hono.kafka.log-level},org.apache.kafka=${hono.kafka.log-level},state.change.logger=${hono.kafka.log-level},org.apache.kafka.common.utils.AppInfoParser=INFO 1 + broker,controller + 127.0.0.1:9092 1 1 - zookeeper:2181 diff --git a/tests/readme.md b/tests/readme.md index 5e5807d70a..067e728826 100644 --- a/tests/readme.md +++ b/tests/readme.md @@ -27,7 +27,6 @@ This starts the following Docker containers and runs the test cases against them * MongoDB server * Hono Authentication service * Hono Device Registration service -* Apache Zookeeper * Apache Kafka * Hono Command Router service * Hono HTTP adapter diff --git a/tests/src/test/java/org/eclipse/hono/tests/amqp/CommandAndControlAmqpIT.java b/tests/src/test/java/org/eclipse/hono/tests/amqp/CommandAndControlAmqpIT.java index 6bf1edb7b9..0f71d9377a 100644 --- a/tests/src/test/java/org/eclipse/hono/tests/amqp/CommandAndControlAmqpIT.java +++ b/tests/src/test/java/org/eclipse/hono/tests/amqp/CommandAndControlAmqpIT.java @@ -138,6 +138,7 @@ private Future subscribeToCommands( final Promise result = Promise.promise(); context.runOnContext(go -> { + log.debug("creating command consumer for tenant [{}]", tenantId); final ProtonReceiver recv = connection.createReceiver(endpointConfig.getSubscriptionAddress( tenantId, commandTargetDeviceId)); recv.setAutoAccept(false); @@ -321,7 +322,10 @@ public void testSendAsyncCommandsSucceeds( : deviceId; final int totalNoOfCommandsToSend = 60; - connectAndSubscribe(ctx, commandTargetDeviceId, endpointConfig, + connectAndSubscribe( + ctx, + commandTargetDeviceId, + endpointConfig, (cmdReceiver, cmdResponseSender) -> createCommandConsumer(ctx, cmdReceiver, cmdResponseSender), totalNoOfCommandsToSend); if (ctx.failed()) {