Repository: strimzi/strimzi-kafka-bridge
Pull request #564 (2021-12-08 19:57:47)

Add s390x support to multi-arch images on Azure CI
This PR is to add s390x support to Bridge images on Azure CI. 

Signed-off-by: Kun-Lu <kun.lu@ibm.com>

scholzj: Thanks for the PR. But I think we should have first some testing strategy before adding new platforms.
scholzj: > Thanks @scholzj, for now we have tested the s390x Bridge image via the official quick start guide and through system tests of Strimzi Kafka Operator.

That is great, but I don't think we can be releasing images for some architecture based on some one-of tests.
kun-lu20: Yeah, it would be great if we could have a strategy to test it more thoroughly.
kun-lu20: Hi @scholzj , reg the testing strategy, I am wondering which tests are now running for Arm64 images? Can we follow their path to trigger the same tests on s390x images? We could also provide s390x VMs if you need them for testing or we could run the tests internally and report test results to your site. Please let me know what you think. Thanks!
scholzj: The Arm64 tests are run manually right now, but are planned to be automated in the future. 

I think there are major differences between Arm64 and s390x:
* Arm64 infrastructure is widely available unlike s390x infrastructure. We have no available infratructure for s390x (TravisCI - aside from their recent security mishaps - does not offer enough resources to run the system tests on s390x).
* We have Arm64 knowledge, experience and interest in the core team. We have absolutely 0 experience with s390x.
* Arm64 is supported by Azure Pipelines which we use as CI. So it is easier to integrate the tests.

These differences are important because they mean that we can test the releases, bugs or issues when we need. We do not depend on anyone with Arm64 support.

> We could also provide s390x VMs if you need them for testing or we could run the tests internally and report test results to your site.

If you have s390x resources, that is a good start. But I'm not sure you can just provide the resources and expect the others to do the work.

The past experience with the different contributions with _s390x or ppc64le support_ (at least my personal view not representing other maintainers) is so far very bad. Someone comes, opens a PR which adds a line with `s390x` or `ppc64le` to some CI file, usually with disabled tests and JavaDoc. And that is it, support for _new architecture_ done. This is how it so far looks with both bridge and the OAuth library. But that is not the right approach and doesn't build trust. 

And I definitely do not want to end up in the same situation with the container images here or in the operators repo. We do not have the capacity to maintain support for these platforms in the Strimzi team. And to be completely honest I'm also not aware of any community interest in s390x (which once again is very different from Arm64).

I know it was not you personally who opened those PRs in the past. But that is the experience we have so far with support for IBM platforms and that is why this cannot be done without proper discussion, planning and proper commitments to do the work.

Patch:
diff --git a/.azure/build-pipeline.yaml b/.azure/build-pipeline.yaml
index 300406b..b677ca2 100644
--- a/.azure/build-pipeline.yaml
+++ b/.azure/build-pipeline.yaml
@@ -33,7 +33,7 @@ stages:
           artifactPipeline: ''
           artifactRunVersion: ''
           artifactRunId: ''
-          architectures: ['amd64', 'arm64']
+          architectures: ['amd64', 'arm64', 's390x']
   - stage: container_publish
     displayName: Publish Container
     dependsOn:
@@ -49,7 +49,7 @@ stages:
           artifactPipeline: ''
           artifactRunVersion: ''
           artifactRunId: ''
-          architectures: ['amd64', 'arm64']
+          architectures: ['amd64', 'arm64', 's390x']
   - stage: docs_publish
     displayName: Publish Docs
     dependsOn:
diff --git a/.azure/cve-pipeline.yaml b/.azure/cve-pipeline.yaml
index f5202ff..f08e2a9 100644
--- a/.azure/cve-pipeline.yaml
+++ b/.azure/cve-pipeline.yaml
@@ -36,7 +36,7 @@ stages:
           artifactPipeline: '${{ parameters.sourcePipelineId }}'
           artifactRunVersion: 'specific'
           artifactRunId: '${{ parameters.sourceBuildId }}'
-          architectures: ['amd64', 'arm64']
+          architectures: ['amd64', 'arm64', 's390x']
   - stage: containers_publish_with_suffix
     displayName: Publish Containers for ${{ parameters.releaseVersion }}-${{ parameters.releaseSuffix }}
     dependsOn: 
@@ -51,7 +51,7 @@ stages:
           artifactPipeline: ''
           artifactRunVersion: ''
           artifactRunId: ''
-          architectures: ['amd64', 'arm64']
+          architectures: ['amd64', 'arm64', 's390x']
   - stage: manual_validation
     displayName: Validate container before pushing container as ${{ parameters.releaseVersion }}
     dependsOn:
diff --git a/.azure/release-pipeline.yaml b/.azure/release-pipeline.yaml
index 38b1f9f..97660f5 100644
--- a/.azure/release-pipeline.yaml
+++ b/.azure/release-pipeline.yaml
@@ -38,7 +38,7 @@ stages:
           artifactPipeline: '${{ parameters.sourcePipelineId }}'
           artifactRunVersion: 'specific'
           artifactRunId: '${{ parameters.sourceBuildId }}'
-          architectures: ['amd64', 'arm64']
+          architectures: ['amd64', 'arm64', 's390x']
   - stage: containers_publish
     displayName: Publish Containers for ${{ parameters.releaseVersion }}
     dependsOn:
@@ -53,4 +53,4 @@ stages:
           artifactPipeline: '${{ parameters.sourcePipelineId }}'
           artifactRunVersion: 'specific'
           artifactRunId: '${{ parameters.sourceBuildId }}'
-          architectures: ['amd64', 'arm64']
+          architectures: ['amd64', 'arm64', 's390x']
diff --git a/.travis.yml b/.travis.yml
index 10ac3b6..9954b74 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,7 +17,7 @@ jobs:
     os: linux
     arch: s390x
     jdk: openjdk11
-    script: mvn install -DskipTests -Dmaven.javadoc.skip=true
+    script: mvn install -Dmaven.javadoc.skip=true
     addons:
       apt:
         packages:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2bcda40..a3e30cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # CHANGELOG
 
+## 0.22.0
+
+* Add support for disabling the FIPS mode in OpenJDK
+
 ## 0.21.0
 
 * Multi-arch container image with support for x86_64 / AMD64 and AArch64 / ARM64 platforms
diff --git a/Makefile b/Makefile
index 2e43b7f..c086653 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ ifneq ($(RELEASE_VERSION),latest)
 endif
 
 .PHONY: all
-all: java_package docker_build docker_push
+all: java_verify docker_build docker_push
 
 .PHONY: clean
 clean: java_clean
diff --git a/bin/docker/kafka_bridge_run.sh b/bin/docker/kafka_bridge_run.sh
index 97413e4..3d3ee0a 100755
--- a/bin/docker/kafka_bridge_run.sh
+++ b/bin/docker/kafka_bridge_run.sh
@@ -55,6 +55,19 @@ function get_gc_opts {
 
 export JAVA_OPTS="${JAVA_OPTS} $(get_gc_opts)"
 
+if [ -n "$STRIMZI_JAVA_SYSTEM_PROPERTIES" ]; then
+    export JAVA_OPTS="${JAVA_OPTS} ${STRIMZI_JAVA_SYSTEM_PROPERTIES}"
+fi
+
+if [ -n "$STRIMZI_JAVA_OPTS" ]; then
+    export JAVA_OPTS="${JAVA_OPTS} ${STRIMZI_JAVA_OPTS}"
+fi
+
+# Disable FIPS if needed
+if [ "$FIPS_MODE" = "disabled" ]; then
+    export JAVA_OPTS="${JAVA_OPTS} -Dcom.redhat.fips=false"
+fi
+
 # Deny illegal access option is supported only on Java 9 and higher
 JAVA_MAJOR_VERSION=$(java -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p')
 if [ "$JAVA_MAJOR_VERSION" -ge "9" ] ; then
diff --git a/bin/docker/kafka_bridge_tls_prepare_certificates.sh b/bin/docker/kafka_bridge_tls_prepare_certificates.sh
index bb5ef4e..1c0921f 100755
--- a/bin/docker/kafka_bridge_tls_prepare_certificates.sh
+++ b/bin/docker/kafka_bridge_tls_prepare_certificates.sh
@@ -6,7 +6,15 @@
 # $3: Public key to be imported
 # $4: Alias of the certificate
 function create_truststore {
-   keytool -keystore $1 -storepass $2 -noprompt -alias $4 -import -file $3 -storetype PKCS12
+   # Disable FIPS if needed
+   if [ "$FIPS_MODE" = "disabled" ]; then
+       KEYTOOL_OPTS="${KEYTOOL_OPTS} -J-Dcom.redhat.fips=false"
+   else
+       KEYTOOL_OPTS=""
+   fi
+
+   # shellcheck disable=SC2086
+   keytool ${KEYTOOL_OPTS} -keystore $1 -storepass $2 -noprompt -alias $4 -import -file $3 -storetype PKCS12
 }
 
 # Parameters:
diff --git a/bin/kafka_bridge_run.sh b/bin/kafka_bridge_run.sh
index fb9a7a3..3b57cd7 100755
--- a/bin/kafka_bridge_run.sh
+++ b/bin/kafka_bridge_run.sh
@@ -1,4 +1,5 @@
 #!/bin/sh
+set -x
 
 # Find my path to use when calling scripts
 MYPATH="$(dirname "$0")"
diff --git a/pom.xml b/pom.xml
index a829cb4..fbd4a58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
 
 	<groupId>io.strimzi</groupId>
 	<artifactId>kafka-bridge</artifactId>
-	<version>0.21.0-SNAPSHOT</version>
+	<version>0.22.0-SNAPSHOT</version>
 
 	<name>Strimzi Kafka Bridge</name>
 	<description>Bridge that allows HTTP- or AMQP-based clients to interact with Apache Kafka clusters.</description>
@@ -81,7 +81,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<maven.compiler.source>1.8</maven.compiler.source>
 		<maven.compiler.target>1.8</maven.compiler.target>
-		<log4j.version>2.13.3</log4j.version>
+		<log4j.version>2.17.1</log4j.version>
 		<vertx.version>4.2.1</vertx.version>
 		<kafka.version>2.8.1</kafka.version>
 		<kafka-kubernetes-config-provider.version>0.1.1</kafka-kubernetes-config-provider.version>
@@ -99,7 +99,7 @@
 		<sonatype.nexus.staging>1.6.3</sonatype.nexus.staging>
 		<swagger2markup.version>1.3.7</swagger2markup.version>
 		<jackson-core.version>2.11.3</jackson-core.version>
-		<netty.version>4.1.70.Final</netty.version>
+		<netty.version>4.1.72.Final</netty.version>
 		<tomcat-embed-core.version>8.5.73</tomcat-embed-core.version>
 		<spotbugs.version>4.0.1</spotbugs.version>
 		<strimzi-oauth.version>0.9.0</strimzi-oauth.version>
@@ -109,7 +109,7 @@
 		<micrometer.version>1.3.9</micrometer.version>
 		<jmx-prometheus-collector.version>0.12.0</jmx-prometheus-collector.version>
 		<commons-cli.version>1.4</commons-cli.version>
-		<test-container.version>0.25.0</test-container.version>
+		<test-container.version>0.100.0</test-container.version>
 		<jakarta.version>2.3.2</jakarta.version>
 		<!-- property to skip surefire tests during failsafe execution -->
 		<!--suppress UnresolvedMavenProperty -->
diff --git a/release.version b/release.version
index 6a8fc0b..b380fee 100644
--- a/release.version
+++ b/release.version
@@ -1,1 +1,1 @@
-0.21.0-SNAPSHOT
+0.22.0-SNAPSHOT


Test patch:
diff --git a/src/test/java/io/strimzi/kafka/bridge/amqp/AmqpBridgeIT.java b/src/test/java/io/strimzi/kafka/bridge/amqp/AmqpBridgeIT.java
index 7fef099..ec43f25 100644
--- a/src/test/java/io/strimzi/kafka/bridge/amqp/AmqpBridgeIT.java
+++ b/src/test/java/io/strimzi/kafka/bridge/amqp/AmqpBridgeIT.java
@@ -104,13 +104,12 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
 
     @BeforeAll
     public static void setUp(VertxTestContext context) {
-        adminClientFacade = AdminClientFacade.create(kafkaContainer.getBootstrapServers());
-        config.put(KafkaConfig.KAFKA_CONFIG_PREFIX + ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaContainer.getBootstrapServers());
+        adminClientFacade = AdminClientFacade.create(kafkaUri);
+        config.put(KafkaConfig.KAFKA_CONFIG_PREFIX + ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaUri);
 
         vertx = Vertx.vertx();
 
         if ("FALSE".equals(BRIDGE_EXTERNAL_ENV)) {
-
             bridgeConfig = BridgeConfig.fromMap(config);
             bridge = new AmqpBridge(bridgeConfig, new MetricsReporter(null, meterRegistry));
 
@@ -145,7 +144,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
                 String body = "Simple message from " + connection.getContainer();
                 Message message = ProtonHelper.message(topic, body);
 
-                Properties config = Consumer.fillProperties(kafkaContainer.getBootstrapServers(), "groupId", null, OffsetResetStrategy.EARLIEST);
+                Properties config = Consumer.fillProperties(kafkaUri, "groupId", null, OffsetResetStrategy.EARLIEST);
 
                 config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
                 config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
@@ -207,7 +206,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
                 String body = "Simple message from " + connection.getContainer();
                 Message message = ProtonHelper.message(topic, body);
 
-                Properties config = Consumer.fillProperties(kafkaContainer.getBootstrapServers(), "groupId", null, OffsetResetStrategy.EARLIEST);
+                Properties config = Consumer.fillProperties(kafkaUri, "groupId", null, OffsetResetStrategy.EARLIEST);
                 config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
                 config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
 
@@ -269,7 +268,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
                 String body = "Simple message from " + connection.getContainer();
                 Message message = ProtonHelper.message(topic, body);
 
-                Properties config = Consumer.fillProperties(kafkaContainer.getBootstrapServers(), "groupId", null, OffsetResetStrategy.EARLIEST);
+                Properties config = Consumer.fillProperties(kafkaUri, "groupId", null, OffsetResetStrategy.EARLIEST);
 
                 config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
                 config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
@@ -329,7 +328,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
 
                 String value = "Binary message from " + connection.getContainer();
 
-                Properties config = Consumer.fillProperties(kafkaContainer.getBootstrapServers(), "groupId", null, OffsetResetStrategy.EARLIEST);
+                Properties config = Consumer.fillProperties(kafkaUri, "groupId", null, OffsetResetStrategy.EARLIEST);
 
                 config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
                 config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class);
@@ -385,7 +384,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
                 // send an array (i.e. integer values)
                 int[] array = {1, 2};
 
-                Properties config = Consumer.fillProperties(kafkaContainer.getBootstrapServers(), "groupId", null, OffsetResetStrategy.EARLIEST);
+                Properties config = Consumer.fillProperties(kafkaUri, "groupId", null, OffsetResetStrategy.EARLIEST);
 
                 config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
                 config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, DefaultDeserializer.class);
@@ -444,7 +443,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
                 list.add("item1");
                 list.add(2);
 
-                Properties config = Consumer.fillProperties(kafkaContainer.getBootstrapServers(), "groupId", null, OffsetResetStrategy.EARLIEST);
+                Properties config = Consumer.fillProperties(kafkaUri, "groupId", null, OffsetResetStrategy.EARLIEST);
 
                 config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
                 config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, DefaultDeserializer.class);
@@ -503,7 +502,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
                 map.put("1", 10);
                 map.put(2, "Hello");
 
-                Properties config = Consumer.fillProperties(kafkaContainer.getBootstrapServers(), "groupId", null, OffsetResetStrategy.EARLIEST);
+                Properties config = Consumer.fillProperties(kafkaUri, "groupId", null, OffsetResetStrategy.EARLIEST);
 
                 config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
                 config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, DefaultDeserializer.class);
@@ -557,7 +556,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
                 ProtonSender sender = connection.createSender(null);
                 sender.open();
 
-                Properties config = Consumer.fillProperties(kafkaContainer.getBootstrapServers(), "groupId", null, OffsetResetStrategy.EARLIEST);
+                Properties config = Consumer.fillProperties(kafkaUri, "groupId", null, OffsetResetStrategy.EARLIEST);
 
                 config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
                 config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
@@ -691,7 +690,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
         Checkpoint consume = context.checkpoint();
         future.get();
 
-        BasicKafkaClient basicKafkaClient = new BasicKafkaClient(kafkaContainer.getBootstrapServers());
+        BasicKafkaClient basicKafkaClient = new BasicKafkaClient(kafkaUri);
 
         basicKafkaClient.sendStringMessagesPlain(topic, sentBody, 1, 0);
         // topic, body, message-count, partition
@@ -756,7 +755,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
         // Futures for wait
         Checkpoint consume = context.checkpoint();
 
-        BasicKafkaClient basicKafkaClient = new BasicKafkaClient(kafkaContainer.getBootstrapServers());
+        BasicKafkaClient basicKafkaClient = new BasicKafkaClient(kafkaUri);
         basicKafkaClient.sendStringMessagesPlain(topic, sentBody, 1, 1);
 
         ProtonClient client = ProtonClient.create(this.vertx);
@@ -824,7 +823,7 @@ class AmqpBridgeIT extends HttpBridgeITAbstract {
         // Futures for wait
         Checkpoint consume = context.checkpoint();
 
-        BasicKafkaClient basicKafkaClient = new BasicKafkaClient(kafkaContainer.getBootstrapServers());
+        BasicKafkaClient basicKafkaClient = new BasicKafkaClient(kafkaUri);
         basicKafkaClient.sendStringMessagesPlain(topic, "value", 11, 0, false);
 
         ProtonClient client = ProtonClient.create(this.vertx);
diff --git a/src/test/java/io/strimzi/kafka/bridge/http/ConsumerGeneratedNameIT.java b/src/test/java/io/strimzi/kafka/bridge/http/ConsumerGeneratedNameIT.java
index a8f001b..f2fbe2b 100644
--- a/src/test/java/io/strimzi/kafka/bridge/http/ConsumerGeneratedNameIT.java
+++ b/src/test/java/io/strimzi/kafka/bridge/http/ConsumerGeneratedNameIT.java
@@ -6,7 +6,7 @@ package io.strimzi.kafka.bridge.http;
 
 import io.micrometer.core.instrument.MeterRegistry;
 import io.netty.handler.codec.http.HttpResponseStatus;
-import io.strimzi.StrimziKafkaContainer;
+import io.strimzi.test.container.StrimziKafkaContainer;
 import io.strimzi.kafka.bridge.HealthChecker;
 import io.strimzi.kafka.bridge.JmxCollectorRegistry;
 import io.strimzi.kafka.bridge.MetricsReporter;
diff --git a/src/test/java/io/strimzi/kafka/bridge/http/HttpCorsIT.java b/src/test/java/io/strimzi/kafka/bridge/http/HttpCorsIT.java
index 5ca94c7..1872d64 100644
--- a/src/test/java/io/strimzi/kafka/bridge/http/HttpCorsIT.java
+++ b/src/test/java/io/strimzi/kafka/bridge/http/HttpCorsIT.java
@@ -6,7 +6,7 @@
 package io.strimzi.kafka.bridge.http;
 
 import io.micrometer.core.instrument.MeterRegistry;
-import io.strimzi.StrimziKafkaContainer;
+import io.strimzi.test.container.StrimziKafkaContainer;
 import io.strimzi.kafka.bridge.BridgeContentType;
 import io.strimzi.kafka.bridge.HealthChecker;
 import io.strimzi.kafka.bridge.JmxCollectorRegistry;
diff --git a/src/test/java/io/strimzi/kafka/bridge/http/InvalidProducerIT.java b/src/test/java/io/strimzi/kafka/bridge/http/InvalidProducerIT.java
index 74fc516..70431c2 100644
--- a/src/test/java/io/strimzi/kafka/bridge/http/InvalidProducerIT.java
+++ b/src/test/java/io/strimzi/kafka/bridge/http/InvalidProducerIT.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
+
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 
@@ -74,16 +75,20 @@ public class InvalidProducerIT extends HttpBridgeITAbstract {
 
         LOGGER.info("Environment variable EXTERNAL_BRIDGE:" + BRIDGE_EXTERNAL_ENV);
 
-        bridgeConfig = BridgeConfig.fromMap(cfg);
-        httpBridge = new HttpBridge(bridgeConfig, new MetricsReporter(jmxCollectorRegistry, meterRegistry));
-        httpBridge.setHealthChecker(new HealthChecker());
+        if ("FALSE".equals(BRIDGE_EXTERNAL_ENV)) {
+            bridgeConfig = BridgeConfig.fromMap(cfg);
+            httpBridge = new HttpBridge(bridgeConfig, new MetricsReporter(jmxCollectorRegistry, meterRegistry));
+            httpBridge.setHealthChecker(new HealthChecker());
 
-        LOGGER.info("Deploying in-memory bridge");
-        vertx.deployVerticle(httpBridge, context.succeeding(id -> context.completeNow()));
+            LOGGER.info("Deploying in-memory bridge");
+            vertx.deployVerticle(httpBridge, context.succeeding(id -> context.completeNow()));
+        } else {
+            context.completeNow();
+        }
 
         client = WebClient.create(vertx, new WebClientOptions()
-                .setDefaultHost(Urls.BRIDGE_HOST)
-                .setDefaultPort(Urls.BRIDGE_PORT)
+            .setDefaultHost(Urls.BRIDGE_HOST)
+            .setDefaultPort(Urls.BRIDGE_PORT)
         );
     }
 }
diff --git a/src/test/java/io/strimzi/kafka/bridge/http/base/HttpBridgeITAbstract.java b/src/test/java/io/strimzi/kafka/bridge/http/base/HttpBridgeITAbstract.java
index b0d311b..1f53da3 100644
--- a/src/test/java/io/strimzi/kafka/bridge/http/base/HttpBridgeITAbstract.java
+++ b/src/test/java/io/strimzi/kafka/bridge/http/base/HttpBridgeITAbstract.java
@@ -5,7 +5,7 @@
 
 package io.strimzi.kafka.bridge.http.base;
 
-import io.strimzi.StrimziKafkaContainer;
+import io.strimzi.test.container.StrimziKafkaContainer;
 import io.micrometer.core.instrument.MeterRegistry;
 import io.strimzi.kafka.bridge.HealthChecker;
 import io.strimzi.kafka.bridge.JmxCollectorRegistry;