This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 77771a22a0a Use a fixed port (default one) when running services via
camel infra (#18344)
77771a22a0a is described below
commit 77771a22a0a64a1777cad939837565fd8b7097df
Author: Federico Mariani <[email protected]>
AuthorDate: Thu Jun 12 07:09:25 2025 +0200
Use a fixed port (default one) when running services via camel infra
(#18344)
---
.../core/commands/infra/InfraBaseCommand.java | 1 +
.../artemis/services/ArtemisAllInfraService.java | 2 +-
.../infra/artemis/services/ArtemisContainer.java | 10 ++++++
.../test/infra/aws2/services/AWSContainer.java | 17 ++++++----
.../services/AWSLocalContainerInfraService.java | 3 +-
.../common/services/AzureStorageInfraService.java | 3 +-
.../azure/common/services/AzuriteContainer.java | 12 +++++--
.../common/services/ContainerEnvironmentUtil.java | 10 ++++++
.../CouchDbLocalContainerInfraService.java | 20 +++++++++---
.../ElasticSearchLocalContainerInfraService.java | 31 +++++++++++-------
.../services/FhirLocalContainerInfraService.java | 31 ++++++++++++------
.../GooglePubSubLocalContainerInfraService.java | 15 ++++++++-
.../HashicorpVaultLocalContainerInfraService.java | 27 ++++++++++++----
.../LocalHiveMQSparkplugTCKInfraService.java | 17 ++++++++--
.../InfinispanLocalContainerInfraService.java | 37 ++++++++++++++--------
.../services/ContainerLocalKafkaInfraService.java | 14 ++++++--
.../MicroprofileLRALocalContainerInfraService.java | 23 +++++++++++---
.../services/MilvusLocalContainerInfraService.java | 16 ++++++++--
.../services/MinioLocalContainerInfraService.java | 33 +++++++++++++------
.../MongoDBLocalContainerInfraService.java | 27 ++++++++++++++--
.../MosquittoLocalContainerInfraService.java | 7 +++-
.../services/NatsLocalContainerInfraService.java | 21 +++++++++---
.../services/Neo4jLocalContainerInfraService.java | 20 ++++++++++--
.../services/OllamaLocalContainerInfraService.java | 14 ++++++--
.../infra/openldap/services/OpenLdapContainer.java | 11 +++++--
.../OpenldapLocalContainerInfraService.java | 3 +-
.../OpenSearchLocalContainerInfraService.java | 35 ++++++++++++--------
.../pinecone/services/PineconeIndexContainer.java | 10 ++++--
.../PineconeLocalContainerInfraService.java | 18 +++++++++--
.../PostgresLocalContainerInfraService.java | 15 +++++++--
.../services/PulsarLocalContainerInfraService.java | 18 +++++++++--
.../services/QdrantLocalContainerInfraService.java | 19 ++++++++++-
.../RabbitMQLocalContainerInfraService.java | 16 +++++++++-
.../test/infra/redis/services/RedisContainer.java | 15 ++++++++-
.../services/RedisLocalContainerInfraService.java | 4 ++-
.../rocketmq/services/RocketMQBrokerContainer.java | 16 +++++++---
.../services/RocketMQContainerInfraService.java | 4 ++-
.../test/infra/smb/services/SmbContainer.java | 11 +++++--
.../services/SmbLocalContainerInfraService.java | 3 +-
.../test/infra/solr/services/SolrContainer.java | 13 ++++++--
.../services/SolrLocalContainerInfraService.java | 4 ++-
.../TorchServeLocalContainerInfraService.java | 31 +++++++++++++-----
.../WeaviateLocalContainerInfraService.java | 18 +++++++++--
.../services/XmppLocalContainerInfraService.java | 3 +-
.../infra/xmpp/services/XmppServerContainer.java | 8 +++++
45 files changed, 535 insertions(+), 151 deletions(-)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
index 00ae26c0b97..2d19b99579f 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
@@ -60,6 +60,7 @@ public abstract class InfraBaseCommand extends CamelCommand {
jsonMapper.enable(SerializationFeature.INDENT_OUTPUT);
jsonMapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY,
true);
jsonMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS,
true);
+
jsonMapper.configure(MapperFeature.REQUIRE_HANDLERS_FOR_JAVA8_OPTIONALS, false);
}
protected List<TestInfraService> getMetadata() throws IOException {
diff --git
a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAllInfraService.java
b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAllInfraService.java
index 8b2d446ec13..ceb6ff9e06c 100644
---
a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAllInfraService.java
+++
b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAllInfraService.java
@@ -35,7 +35,7 @@ public class ArtemisAllInfraService implements
ArtemisInfraService, ContainerSer
}
protected ArtemisContainer initContainer() {
- return new ArtemisContainer();
+ return ArtemisContainer.withFixedPort();
}
@Override
diff --git
a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisContainer.java
b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisContainer.java
index 599746800b7..624e45520e7 100644
---
a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisContainer.java
+++
b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisContainer.java
@@ -43,6 +43,16 @@ public class ArtemisContainer extends
GenericContainer<ArtemisContainer> impleme
.waitingFor(Wait.forListeningPort());
}
+ public static ArtemisContainer withFixedPort() {
+ ArtemisContainer container = new ArtemisContainer();
+ container.addFixedExposedPort(DEFAULT_MQTT_PORT, DEFAULT_MQTT_PORT);
+ container.addFixedExposedPort(DEFAULT_AMQP_PORT, DEFAULT_AMQP_PORT);
+ container.addFixedExposedPort(DEFAULT_ADMIN_PORT, DEFAULT_ADMIN_PORT);
+ container.addFixedExposedPort(DEFAULT_ACCEPTOR_PORT,
DEFAULT_ACCEPTOR_PORT);
+
+ return container;
+ }
+
/**
* Gets the port number used for exchanging messages using the AMQP
protocol
*
diff --git
a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSContainer.java
b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSContainer.java
index 7056d136064..7d45e86b3c1 100644
---
a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSContainer.java
+++
b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSContainer.java
@@ -51,11 +51,11 @@ public class AWSContainer extends
GenericContainer<AWSContainer> {
super(imageName);
}
- public AWSContainer(String imageName, Service... services) {
+ public AWSContainer(String imageName, boolean fixedPort, Service...
services) {
super(imageName);
setupServices(services);
- setupContainer();
+ setupContainer(fixedPort);
}
@Deprecated
@@ -63,7 +63,7 @@ public class AWSContainer extends
GenericContainer<AWSContainer> {
super(imageName);
setupServices(serviceList);
- setupContainer();
+ setupContainer(false);
}
public void setupServices(Service... services) {
@@ -80,9 +80,14 @@ public class AWSContainer extends
GenericContainer<AWSContainer> {
withEnv("SERVICE", serviceList);
}
- protected void setupContainer() {
- withExposedPorts(SERVICE_PORT)
- .waitingFor(Wait.forLogMessage(".*Ready\\.\n", 1));
+ protected void setupContainer(boolean fixedPort) {
+ if (fixedPort) {
+ addFixedExposedPort(SERVICE_PORT, SERVICE_PORT);
+ } else {
+ withExposedPorts(SERVICE_PORT);
+ }
+
+ waitingFor(Wait.forLogMessage(".*Ready\\.\n", 1));
}
public AwsCredentialsProvider getCredentialsProvider() {
diff --git
a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerInfraService.java
b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerInfraService.java
index 6ea27cd88f5..9b5960917cf 100644
---
a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerInfraService.java
@@ -49,7 +49,8 @@ public abstract class AWSLocalContainerInfraService
implements AWSInfraService,
}
protected AWSContainer initContainer(String imageName, Service...
services) {
- return new AWSContainer(imageName, services);
+ boolean fixedPort = !this.getClass().getName().contains("TestService");
+ return new AWSContainer(imageName, fixedPort, services);
}
private String getAmazonHost() {
diff --git
a/test-infra/camel-test-infra-azure-common/src/main/java/org/apache/camel/test/infra/azure/common/services/AzureStorageInfraService.java
b/test-infra/camel-test-infra-azure-common/src/main/java/org/apache/camel/test/infra/azure/common/services/AzureStorageInfraService.java
index 69c6dfac264..734c08a6711 100644
---
a/test-infra/camel-test-infra-azure-common/src/main/java/org/apache/camel/test/infra/azure/common/services/AzureStorageInfraService.java
+++
b/test-infra/camel-test-infra-azure-common/src/main/java/org/apache/camel/test/infra/azure/common/services/AzureStorageInfraService.java
@@ -20,6 +20,7 @@ package org.apache.camel.test.infra.azure.common.services;
import org.apache.camel.test.infra.azure.common.AzureConfigs;
import org.apache.camel.test.infra.azure.common.AzureProperties;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,7 +42,7 @@ public abstract class AzureStorageInfraService implements
AzureInfraService, Con
}
protected AzuriteContainer initContainer(String imageName) {
- return new AzuriteContainer(imageName);
+ return new AzuriteContainer(imageName,
ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
public AzuriteContainer getContainer() {
diff --git
a/test-infra/camel-test-infra-azure-common/src/main/java/org/apache/camel/test/infra/azure/common/services/AzuriteContainer.java
b/test-infra/camel-test-infra-azure-common/src/main/java/org/apache/camel/test/infra/azure/common/services/AzuriteContainer.java
index 8d77160e3e6..db835b84d1e 100644
---
a/test-infra/camel-test-infra-azure-common/src/main/java/org/apache/camel/test/infra/azure/common/services/AzuriteContainer.java
+++
b/test-infra/camel-test-infra-azure-common/src/main/java/org/apache/camel/test/infra/azure/common/services/AzuriteContainer.java
@@ -34,11 +34,17 @@ public class AzuriteContainer extends
GenericContainer<AzuriteContainer> {
AzureProperties.AZURE_CONTAINER);
}
- public AzuriteContainer(String containerName) {
+ public AzuriteContainer(String containerName, boolean fixedPort) {
super(containerName);
- withExposedPorts(AzureServices.BLOB_SERVICE,
AzureServices.QUEUE_SERVICE)
- .waitingFor(Wait.forListeningPort());
+ if (fixedPort) {
+ addFixedExposedPort(AzureServices.BLOB_SERVICE,
AzureServices.BLOB_SERVICE);
+ addFixedExposedPort(AzureServices.QUEUE_SERVICE,
AzureServices.QUEUE_SERVICE);
+ } else {
+ withExposedPorts(AzureServices.BLOB_SERVICE,
AzureServices.QUEUE_SERVICE);
+ }
+
+ waitingFor(Wait.forListeningPort());
}
public AzureCredentialsHolder azureCredentials() {
diff --git
a/test-infra/camel-test-infra-common/src/main/java/org/apache/camel/test/infra/common/services/ContainerEnvironmentUtil.java
b/test-infra/camel-test-infra-common/src/main/java/org/apache/camel/test/infra/common/services/ContainerEnvironmentUtil.java
index dbe6c58c666..b5b79920c32 100644
---
a/test-infra/camel-test-infra-common/src/main/java/org/apache/camel/test/infra/common/services/ContainerEnvironmentUtil.java
+++
b/test-infra/camel-test-infra-common/src/main/java/org/apache/camel/test/infra/common/services/ContainerEnvironmentUtil.java
@@ -56,4 +56,14 @@ public final class ContainerEnvironmentUtil {
int startupAttempts = Integer.valueOf(System.getProperty(property,
String.valueOf(defaultValue)));
container.setStartupAttempts(startupAttempts);
}
+
+ public static boolean isFixedPort(Class cls) {
+ for (Class<?> i : cls.getInterfaces()) {
+ if (i.getName().contains("InfraService")) {
+ return true;
+ }
+ }
+
+ return false;
+ }
}
diff --git
a/test-infra/camel-test-infra-couchdb/src/main/java/org/apache/camel/test/infra/couchdb/services/CouchDbLocalContainerInfraService.java
b/test-infra/camel-test-infra-couchdb/src/main/java/org/apache/camel/test/infra/couchdb/services/CouchDbLocalContainerInfraService.java
index d7c649a2b0a..fc0445a6b26 100644
---
a/test-infra/camel-test-infra-couchdb/src/main/java/org/apache/camel/test/infra/couchdb/services/CouchDbLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-couchdb/src/main/java/org/apache/camel/test/infra/couchdb/services/CouchDbLocalContainerInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.couchdb.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.couchdb.common.CouchDbProperties;
import org.slf4j.Logger;
@@ -51,10 +52,21 @@ public class CouchDbLocalContainerInfraService implements
CouchDbInfraService, C
}
protected GenericContainer initContainer(String imageName, String
containerName) {
- return new GenericContainer<>(DockerImageName.parse(imageName))
- .withNetworkAliases(containerName)
- .withExposedPorts(CouchDbProperties.DEFAULT_PORT)
- .waitingFor(Wait.forListeningPort());
+ class CouchDBContainer extends GenericContainer<CouchDBContainer> {
+ public CouchDBContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName));
+ withNetworkAliases(containerName);
+ waitingFor(Wait.forListeningPort());
+
+ if (fixedPort) {
+ addFixedExposedPort(CouchDbProperties.DEFAULT_PORT,
CouchDbProperties.DEFAULT_PORT);
+ } else {
+ withExposedPorts(CouchDbProperties.DEFAULT_PORT);
+ }
+ }
+ }
+
+ return new
CouchDBContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-elasticsearch/src/main/java/org/apache/camel/test/infra/elasticsearch/services/ElasticSearchLocalContainerInfraService.java
b/test-infra/camel-test-infra-elasticsearch/src/main/java/org/apache/camel/test/infra/elasticsearch/services/ElasticSearchLocalContainerInfraService.java
index b8b54a6bf3f..7c06c159579 100644
---
a/test-infra/camel-test-infra-elasticsearch/src/main/java/org/apache/camel/test/infra/elasticsearch/services/ElasticSearchLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-elasticsearch/src/main/java/org/apache/camel/test/infra/elasticsearch/services/ElasticSearchLocalContainerInfraService.java
@@ -65,18 +65,27 @@ public class ElasticSearchLocalContainerInfraService
}
protected ElasticsearchContainer initContainer(String imageName) {
- DockerImageName customImage = DockerImageName.parse(imageName)
-
.asCompatibleSubstituteFor("docker.elastic.co/elasticsearch/elasticsearch");
- ElasticsearchContainer elasticsearchContainer = new
ElasticsearchContainer(customImage)
- .withPassword(PASSWORD);
- // Increase the timeout from 60 seconds to 90 seconds to ensure that
it will be long enough
- // on the build pipeline
- elasticsearchContainer.setWaitStrategy(
- new LogMessageWaitStrategy()
- .withRegEx(".*(\"message\":\\s?\"started[\\s?|\"].*|]
started\n$)")
- .withStartupTimeout(Duration.ofSeconds(90)));
- return elasticsearchContainer;
+ class TestInfraElasticsearchContainer extends ElasticsearchContainer {
+ public TestInfraElasticsearchContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName)
+
.asCompatibleSubstituteFor("docker.elastic.co/elasticsearch/elasticsearch"));
+
+ withPassword(PASSWORD);
+
+ if (fixedPort) {
+ addFixedExposedPort(ELASTIC_SEARCH_PORT,
ELASTIC_SEARCH_PORT);
+ } else {
+ withExposedPorts(ELASTIC_SEARCH_PORT);
+ }
+
+ setWaitStrategy(
+ new LogMessageWaitStrategy()
+
.withRegEx(".*(\"message\":\\s?\"started[\\s?|\"].*|] started\n$)")
+ .withStartupTimeout(Duration.ofSeconds(90)));
+ }
+ }
+ return new
TestInfraElasticsearchContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-fhir/src/main/java/org/apache/camel/test/infra/fhir/services/FhirLocalContainerInfraService.java
b/test-infra/camel-test-infra-fhir/src/main/java/org/apache/camel/test/infra/fhir/services/FhirLocalContainerInfraService.java
index 3b895ffaa00..cc235f46fcd 100644
---
a/test-infra/camel-test-infra-fhir/src/main/java/org/apache/camel/test/infra/fhir/services/FhirLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-fhir/src/main/java/org/apache/camel/test/infra/fhir/services/FhirLocalContainerInfraService.java
@@ -20,6 +20,7 @@ import java.time.Duration;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.fhir.common.FhirProperties;
import org.slf4j.Logger;
@@ -53,16 +54,26 @@ public class FhirLocalContainerInfraService implements
FhirInfraService, Contain
}
protected GenericContainer initContainer(String imageName, String
containerName) {
- return new GenericContainer(imageName)
- .withNetworkAliases(containerName)
- .withExposedPorts(FhirProperties.DEFAULT_SERVICE_PORT)
- .withStartupTimeout(Duration.ofMinutes(3L))
- .withStartupAttempts(5)
- .withEnv("hapi.fhir.allow_multiple_delete", "true")
- .withEnv("hapi.fhir.fhir_version", "R4")
- .withEnv("hapi.fhir.reuse_cached_search_results_millis", "-1")
- .waitingFor(Wait.forListeningPort())
-
.waitingFor(Wait.forHttp("/fhir/metadata").withStartupTimeout(Duration.ofMinutes(3L)));
+ class FhirContainer extends GenericContainer<FhirContainer> {
+ public FhirContainer(boolean fixedPort) {
+ super(imageName);
+ withNetworkAliases(containerName);
+ if (fixedPort) {
+ addFixedExposedPort(FhirProperties.DEFAULT_SERVICE_PORT,
FhirProperties.DEFAULT_SERVICE_PORT);
+ } else {
+ withExposedPorts(FhirProperties.DEFAULT_SERVICE_PORT);
+ }
+ withStartupTimeout(Duration.ofMinutes(3L));
+ withStartupAttempts(5);
+ withEnv("hapi.fhir.allow_multiple_delete", "true");
+ withEnv("hapi.fhir.fhir_version", "R4");
+ withEnv("hapi.fhir.reuse_cached_search_results_millis", "-1");
+ waitingFor(Wait.forListeningPort());
+
waitingFor(Wait.forHttp("/fhir/metadata").withStartupTimeout(Duration.ofMinutes(3L)));
+ }
+ }
+
+ return new
FhirContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-google-pubsub/src/main/java/org/apache/camel/test/infra/google/pubsub/services/GooglePubSubLocalContainerInfraService.java
b/test-infra/camel-test-infra-google-pubsub/src/main/java/org/apache/camel/test/infra/google/pubsub/services/GooglePubSubLocalContainerInfraService.java
index f794fad90cd..9d51f4e8c03 100644
---
a/test-infra/camel-test-infra-google-pubsub/src/main/java/org/apache/camel/test/infra/google/pubsub/services/GooglePubSubLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-google-pubsub/src/main/java/org/apache/camel/test/infra/google/pubsub/services/GooglePubSubLocalContainerInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.google.pubsub.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.google.pubsub.common.GooglePubSubProperties;
import org.slf4j.Logger;
@@ -35,6 +36,7 @@ public class GooglePubSubLocalContainerInfraService
public static final String PROJECT_ID;
private static final Logger LOG =
LoggerFactory.getLogger(GooglePubSubLocalContainerInfraService.class);
private static final String DEFAULT_PROJECT_ID = "test-project";
+ private static final int PORT = 8085;
static {
PROJECT_ID = System.getProperty(GooglePubSubProperties.PROJECT_ID,
DEFAULT_PROJECT_ID);
@@ -57,7 +59,18 @@ public class GooglePubSubLocalContainerInfraService
}
protected PubSubEmulatorContainer initContainer(String imageName) {
- return new PubSubEmulatorContainer(DockerImageName.parse(imageName));
+ class TestInfraPubSubEmulatorContainer extends PubSubEmulatorContainer
{
+ public TestInfraPubSubEmulatorContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName));
+
+ if (fixedPort) {
+ addFixedExposedPort(PORT, PORT);
+ } else {
+ addExposedPort(PORT);
+ }
+ }
+ }
+ return new
TestInfraPubSubEmulatorContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-hashicorp-vault/src/main/java/org/apache/camel/test/infra/hashicorp/vault/services/HashicorpVaultLocalContainerInfraService.java
b/test-infra/camel-test-infra-hashicorp-vault/src/main/java/org/apache/camel/test/infra/hashicorp/vault/services/HashicorpVaultLocalContainerInfraService.java
index ad829a84669..e473b3ffc55 100644
---
a/test-infra/camel-test-infra-hashicorp-vault/src/main/java/org/apache/camel/test/infra/hashicorp/vault/services/HashicorpVaultLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-hashicorp-vault/src/main/java/org/apache/camel/test/infra/hashicorp/vault/services/HashicorpVaultLocalContainerInfraService.java
@@ -36,6 +36,7 @@ import java.util.function.Consumer;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import
org.apache.camel.test.infra.hashicorp.vault.common.HashicorpVaultProperties;
import org.slf4j.Logger;
@@ -76,13 +77,25 @@ public class HashicorpVaultLocalContainerInfraService
final Logger containerLog = LoggerFactory.getLogger("container." +
containerName);
final Consumer<OutputFrame> logConsumer = new
Slf4jLogConsumer(containerLog);
- return new GenericContainer<>(imageName)
- .withNetworkAliases(containerName)
- .withEnv("VAULT_DEV_ROOT_TOKEN_ID", DEFAULT_TOKEN)
- .withLogConsumer(logConsumer)
-
.withExposedPorts(HashicorpVaultProperties.DEFAULT_SERVICE_PORT)
- .waitingFor(Wait.forListeningPort())
-
.waitingFor(Wait.forLogMessage(".*Development.*mode.*should.*", 1));
+ class HashicorpVaultContainer extends
GenericContainer<HashicorpVaultContainer> {
+ public HashicorpVaultContainer(boolean fixedPort) {
+ new GenericContainer<>(imageName)
+ .withNetworkAliases(containerName)
+ .withEnv("VAULT_DEV_ROOT_TOKEN_ID", DEFAULT_TOKEN)
+ .withLogConsumer(logConsumer)
+ .waitingFor(Wait.forListeningPort())
+
.waitingFor(Wait.forLogMessage(".*Development.*mode.*should.*", 1));
+
+ if (fixedPort) {
+
addFixedExposedPort(HashicorpVaultProperties.DEFAULT_SERVICE_PORT,
+ HashicorpVaultProperties.DEFAULT_SERVICE_PORT);
+ } else {
+
withExposedPorts(HashicorpVaultProperties.DEFAULT_SERVICE_PORT);
+ }
+ }
+ }
+
+ return new
HashicorpVaultContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQSparkplugTCKInfraService.java
b/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQSparkplugTCKInfraService.java
index f26c5595dfc..f441e77c397 100644
---
a/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQSparkplugTCKInfraService.java
+++
b/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQSparkplugTCKInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.hivemq.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.hivemq.common.HiveMQProperties;
import org.testcontainers.hivemq.HiveMQContainer;
import org.testcontainers.images.builder.ImageFromDockerfile;
@@ -43,9 +44,19 @@ public class LocalHiveMQSparkplugTCKInfraService extends
AbstractLocalHiveMQServ
= new ImageFromDockerfile(imageName,
false).withFileFromClasspath(".", dockerfileResourcePath);
String newImageName = newImage.get();
- HiveMQContainer newContainer
- = new
HiveMQContainer(DockerImageName.parse(newImageName).asCompatibleSubstituteFor("hivemq/hivemq-ce"));
+ class TestInfraHiveMQContainer extends HiveMQContainer {
+ public TestInfraHiveMQContainer(boolean fixedPort) {
+ super(DockerImageName.parse(newImageName)
+ .asCompatibleSubstituteFor("hivemq/hivemq-ce"));
- return newContainer;
+ if (fixedPort) {
+ addFixedExposedPort(1883, 1883);
+ } else {
+ addExposedPort(1883);
+ }
+ }
+ }
+
+ return new
TestInfraHiveMQContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
}
diff --git
a/test-infra/camel-test-infra-infinispan/src/main/java/org/apache/camel/test/infra/infinispan/services/InfinispanLocalContainerInfraService.java
b/test-infra/camel-test-infra-infinispan/src/main/java/org/apache/camel/test/infra/infinispan/services/InfinispanLocalContainerInfraService.java
index ab334c92090..036d6cf21be 100644
---
a/test-infra/camel-test-infra-infinispan/src/main/java/org/apache/camel/test/infra/infinispan/services/InfinispanLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-infinispan/src/main/java/org/apache/camel/test/infra/infinispan/services/InfinispanLocalContainerInfraService.java
@@ -20,6 +20,7 @@ import java.util.function.Consumer;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.infinispan.common.InfinispanProperties;
import org.slf4j.Logger;
@@ -63,21 +64,29 @@ public class InfinispanLocalContainerInfraService
implements InfinispanInfraServ
final Logger containerLog = LoggerFactory.getLogger("container." +
containerName);
final Consumer<OutputFrame> logConsumer = new
Slf4jLogConsumer(containerLog);
- final GenericContainer c = new GenericContainer<>(imageName)
- .withNetworkAliases(containerName)
- .withEnv("USER", DEFAULT_USERNAME)
- .withEnv("PASS", DEFAULT_PASSWORD)
- .withLogConsumer(logConsumer)
- .withClasspathResourceMapping("infinispan.xml",
"/user-config/infinispan.xml", BindMode.READ_ONLY)
- .withCommand("-c", "/user-config/infinispan.xml")
-
.waitingFor(Wait.forLogMessage(".*Infinispan.*Server.*started.*", 1));
- if (isNetworkHost) {
- c.withNetworkMode("host");
- } else {
- c.withExposedPorts(InfinispanProperties.DEFAULT_SERVICE_PORT)
- .waitingFor(Wait.forListeningPort());
+ class InfinispanContainer extends
GenericContainer<InfinispanContainer> {
+ public InfinispanContainer(boolean fixedPort) {
+ super(imageName);
+ withNetworkAliases(containerName)
+ .withEnv("USER", DEFAULT_USERNAME)
+ .withEnv("PASS", DEFAULT_PASSWORD)
+ .withLogConsumer(logConsumer)
+ .withClasspathResourceMapping("infinispan.xml",
"/user-config/infinispan.xml", BindMode.READ_ONLY)
+ .withCommand("-c", "/user-config/infinispan.xml")
+
.waitingFor(Wait.forLogMessage(".*Infinispan.*Server.*started.*", 1));
+
+ if (isNetworkHost) {
+ withNetworkMode("host");
+ } else if (fixedPort) {
+
addFixedExposedPort(InfinispanProperties.DEFAULT_SERVICE_PORT,
InfinispanProperties.DEFAULT_SERVICE_PORT);
+ } else {
+ withExposedPorts(InfinispanProperties.DEFAULT_SERVICE_PORT)
+ .waitingFor(Wait.forListeningPort());
+ }
+ }
}
- return c;
+
+ return new
InfinispanContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaInfraService.java
b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaInfraService.java
index e50b73494e7..40a484879dc 100644
---
a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaInfraService.java
+++
b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/ContainerLocalKafkaInfraService.java
@@ -19,6 +19,7 @@ package org.apache.camel.test.infra.kafka.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.kafka.common.KafkaProperties;
import org.slf4j.Logger;
@@ -46,9 +47,18 @@ public class ContainerLocalKafkaInfraService implements
KafkaInfraService, Conta
}
protected KafkaContainer initContainer() {
- return new KafkaContainer(
-
DockerImageName.parse(System.getProperty(KafkaProperties.KAFKA_CONTAINER,
KAFKA3_IMAGE_NAME))
+ class TestInfraKafkaContainer extends KafkaContainer {
+ public TestInfraKafkaContainer(boolean fixedPort) {
+
super(DockerImageName.parse(System.getProperty(KafkaProperties.KAFKA_CONTAINER,
KAFKA3_IMAGE_NAME))
.asCompatibleSubstituteFor("apache/kafka"));
+
+ if (fixedPort) {
+ addFixedExposedPort(9092, 9092);
+ }
+ }
+ }
+
+ return new
TestInfraKafkaContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
public String getBootstrapServers() {
diff --git
a/test-infra/camel-test-infra-microprofile-lra/src/main/java/org/apache/camel/test/infra/microprofile/lra/services/MicroprofileLRALocalContainerInfraService.java
b/test-infra/camel-test-infra-microprofile-lra/src/main/java/org/apache/camel/test/infra/microprofile/lra/services/MicroprofileLRALocalContainerInfraService.java
index 350b043ac2e..725a268b61e 100644
---
a/test-infra/camel-test-infra-microprofile-lra/src/main/java/org/apache/camel/test/infra/microprofile/lra/services/MicroprofileLRALocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-microprofile-lra/src/main/java/org/apache/camel/test/infra/microprofile/lra/services/MicroprofileLRALocalContainerInfraService.java
@@ -19,6 +19,7 @@ package org.apache.camel.test.infra.microprofile.lra.services;
import com.github.dockerjava.api.model.Network;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import
org.apache.camel.test.infra.microprofile.lra.common.MicroprofileLRAProperties;
import org.slf4j.Logger;
@@ -56,11 +57,23 @@ public class MicroprofileLRALocalContainerInfraService
}
public GenericContainer initContainer(String imageName, String
networkAlias) {
- return new GenericContainer<>(DockerImageName.parse(imageName))
- .withNetworkAliases(networkAlias)
- .withExposedPorts(MicroprofileLRAProperties.DEFAULT_PORT)
- .waitingFor(Wait.forListeningPort())
-
.waitingFor(Wait.forLogMessage(".*lra-coordinator-quarkus.*Listening on.*", 1));
+ class MicroprofileLRAContainer extends
GenericContainer<MicroprofileLRAContainer> {
+ public MicroprofileLRAContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName));
+
+ withNetworkAliases(networkAlias)
+ .waitingFor(Wait.forListeningPort())
+
.waitingFor(Wait.forLogMessage(".*lra-coordinator-quarkus.*Listening on.*", 1));
+
+ if (fixedPort) {
+
addFixedExposedPort(MicroprofileLRAProperties.DEFAULT_PORT,
MicroprofileLRAProperties.DEFAULT_PORT);
+ } else {
+ withExposedPorts(MicroprofileLRAProperties.DEFAULT_PORT);
+ }
+ }
+ }
+
+ return new
MicroprofileLRAContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-milvus/src/main/java/org/apache/camel/test/infra/milvus/services/MilvusLocalContainerInfraService.java
b/test-infra/camel-test-infra-milvus/src/main/java/org/apache/camel/test/infra/milvus/services/MilvusLocalContainerInfraService.java
index 39325164df2..68380d19509 100644
---
a/test-infra/camel-test-infra-milvus/src/main/java/org/apache/camel/test/infra/milvus/services/MilvusLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-milvus/src/main/java/org/apache/camel/test/infra/milvus/services/MilvusLocalContainerInfraService.java
@@ -22,6 +22,7 @@ import java.time.Duration;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.milvus.common.MilvusProperties;
import org.slf4j.Logger;
@@ -51,8 +52,19 @@ public class MilvusLocalContainerInfraService implements
MilvusInfraService, Con
}
protected MilvusContainer initContainer(String imageName) {
- return new
MilvusContainer(DockerImageName.parse(imageName).asCompatibleSubstituteFor("milvusdb/milvus"))
- .withStartupTimeout(Duration.ofMinutes(3L));
+ class TestInfraMilvusContainer extends MilvusContainer {
+ public TestInfraMilvusContainer(boolean fixedPort) {
+
super(DockerImageName.parse(imageName).asCompatibleSubstituteFor("milvusdb/milvus"));
+ withStartupTimeout(Duration.ofMinutes(3L));
+
+ if (fixedPort) {
+ addFixedExposedPort(9091, 9091);
+ addFixedExposedPort(19530, 19530);
+ }
+ }
+ }
+
+ return new
TestInfraMilvusContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-minio/src/main/java/org/apache/camel/test/infra/minio/services/MinioLocalContainerInfraService.java
b/test-infra/camel-test-infra-minio/src/main/java/org/apache/camel/test/infra/minio/services/MinioLocalContainerInfraService.java
index c28003548fb..8e2b4e0f1d8 100644
---
a/test-infra/camel-test-infra-minio/src/main/java/org/apache/camel/test/infra/minio/services/MinioLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-minio/src/main/java/org/apache/camel/test/infra/minio/services/MinioLocalContainerInfraService.java
@@ -20,6 +20,7 @@ import java.time.Duration;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.minio.common.MinioProperties;
import org.slf4j.Logger;
@@ -58,16 +59,28 @@ public class MinioLocalContainerInfraService implements
MinioInfraService, Conta
}
protected GenericContainer initContainer(String imageName, String
containerName) {
- return new GenericContainer(imageName)
- .withNetworkAliases(containerName)
- .withEnv("MINIO_ACCESS_KEY", accessKey())
- .withEnv("MINIO_SECRET_KEY", secretKey())
- .withCommand("server /data")
- .withExposedPorts(BROKER_PORT)
- .waitingFor(new HttpWaitStrategy()
- .forPath("/minio/health/live")
- .forPort(BROKER_PORT)
- .withStartupTimeout(Duration.ofSeconds(10)));
+
+ class MinioContainer extends GenericContainer<MinioContainer> {
+ public MinioContainer(boolean fixedPort) {
+ super(imageName);
+ withNetworkAliases(containerName)
+ .withEnv("MINIO_ACCESS_KEY", accessKey())
+ .withEnv("MINIO_SECRET_KEY", secretKey())
+ .withCommand("server /data")
+ .waitingFor(new HttpWaitStrategy()
+ .forPath("/minio/health/live")
+ .forPort(BROKER_PORT)
+ .withStartupTimeout(Duration.ofSeconds(10)));
+
+ if (fixedPort) {
+ addFixedExposedPort(BROKER_PORT, BROKER_PORT);
+ } else {
+ withExposedPorts(BROKER_PORT);
+ }
+ }
+ }
+
+ return new
MinioContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-mongodb/src/main/java/org/apache/camel/test/infra/mongodb/services/MongoDBLocalContainerInfraService.java
b/test-infra/camel-test-infra-mongodb/src/main/java/org/apache/camel/test/infra/mongodb/services/MongoDBLocalContainerInfraService.java
index 733b7ba54fc..4d656dbaa45 100644
---
a/test-infra/camel-test-infra-mongodb/src/main/java/org/apache/camel/test/infra/mongodb/services/MongoDBLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-mongodb/src/main/java/org/apache/camel/test/infra/mongodb/services/MongoDBLocalContainerInfraService.java
@@ -19,6 +19,7 @@ package org.apache.camel.test.infra.mongodb.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.mongodb.common.MongoDBProperties;
import org.slf4j.Logger;
@@ -47,11 +48,31 @@ public class MongoDBLocalContainerInfraService implements
MongoDBInfraService, C
}
protected MongoDBContainer initContainer(String imageName) {
+
+ class TestInfraMongoDBContainer extends MongoDBContainer {
+ public TestInfraMongoDBContainer(boolean fixedPort) {
+ super();
+ addPort(fixedPort);
+ }
+
+ public TestInfraMongoDBContainer(boolean fixedPort, String
imageName) {
+
super(DockerImageName.parse(imageName).asCompatibleSubstituteFor("mongo"));
+ addPort(fixedPort);
+ }
+
+ private void addPort(boolean fixedPort) {
+ if (fixedPort) {
+ addFixedExposedPort(27017, 27017);
+ } else {
+ addExposedPort(27017);
+ }
+ }
+ }
+
if (imageName == null || imageName.isEmpty()) {
- return new MongoDBContainer();
+ return new
TestInfraMongoDBContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
} else {
- return new MongoDBContainer(
-
DockerImageName.parse(imageName).asCompatibleSubstituteFor("mongo"));
+ return new
TestInfraMongoDBContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()),
imageName);
}
}
diff --git
a/test-infra/camel-test-infra-mosquitto/src/main/java/org/apache/camel/test/infra/mosquitto/services/MosquittoLocalContainerInfraService.java
b/test-infra/camel-test-infra-mosquitto/src/main/java/org/apache/camel/test/infra/mosquitto/services/MosquittoLocalContainerInfraService.java
index 99e2d2bac70..1659dd1532b 100644
---
a/test-infra/camel-test-infra-mosquitto/src/main/java/org/apache/camel/test/infra/mosquitto/services/MosquittoLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-mosquitto/src/main/java/org/apache/camel/test/infra/mosquitto/services/MosquittoLocalContainerInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.mosquitto.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.mosquitto.common.MosquittoProperties;
import org.slf4j.Logger;
@@ -52,7 +53,11 @@ public class MosquittoLocalContainerInfraService implements
MosquittoInfraServic
}
public MosquittoLocalContainerInfraService(String imageName) {
- container = initContainer(imageName, null);
+ if (ContainerEnvironmentUtil.isFixedPort(this.getClass())) {
+ container = initContainer(imageName, CONTAINER_PORT);
+ } else {
+ container = initContainer(imageName, null);
+ }
}
public MosquittoLocalContainerInfraService(GenericContainer container) {
diff --git
a/test-infra/camel-test-infra-nats/src/main/java/org/apache/camel/test/infra/nats/services/NatsLocalContainerInfraService.java
b/test-infra/camel-test-infra-nats/src/main/java/org/apache/camel/test/infra/nats/services/NatsLocalContainerInfraService.java
index 1fa3e8ad6fe..1c0a4799057 100644
---
a/test-infra/camel-test-infra-nats/src/main/java/org/apache/camel/test/infra/nats/services/NatsLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-nats/src/main/java/org/apache/camel/test/infra/nats/services/NatsLocalContainerInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.nats.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.nats.common.NatsProperties;
import org.slf4j.Logger;
@@ -44,10 +45,22 @@ public class NatsLocalContainerInfraService implements
NatsInfraService, Contain
}
protected GenericContainer initContainer(String imageName, String
containerName) {
- return new GenericContainer(imageName)
- .withNetworkAliases(containerName)
- .withExposedPorts(PORT)
-
.waitingFor(Wait.forLogMessage(".*Listening.*for.*route.*connections.*", 1));
+ class NatsContainer extends GenericContainer<NatsContainer> {
+ public NatsContainer(boolean fixedPort) {
+ super(imageName);
+
+ withNetworkAliases(containerName)
+
.waitingFor(Wait.forLogMessage(".*Listening.*for.*route.*connections.*", 1));
+
+ if (fixedPort) {
+ addFixedExposedPort(PORT, PORT);
+ } else {
+ withExposedPorts(PORT);
+ }
+ }
+ }
+
+ return new
NatsContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-neo4j/src/main/java/org/apache/camel/test/infra/neo4j/services/Neo4jLocalContainerInfraService.java
b/test-infra/camel-test-infra-neo4j/src/main/java/org/apache/camel/test/infra/neo4j/services/Neo4jLocalContainerInfraService.java
index 2c0ffd009f1..5d16874eed9 100644
---
a/test-infra/camel-test-infra-neo4j/src/main/java/org/apache/camel/test/infra/neo4j/services/Neo4jLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-neo4j/src/main/java/org/apache/camel/test/infra/neo4j/services/Neo4jLocalContainerInfraService.java
@@ -20,6 +20,7 @@ import java.time.Duration;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.neo4j.common.Neo4jProperties;
import org.slf4j.Logger;
@@ -51,9 +52,22 @@ public class Neo4jLocalContainerInfraService implements
Neo4jInfraService, Conta
}
protected Neo4jContainer initContainer(String imageName) {
- return new
Neo4jContainer<>(DockerImageName.parse(imageName).asCompatibleSubstituteFor("neo4j"))
- .withStartupTimeout(Duration.ofMinutes(3L))
- .withRandomPassword();
+ class TestInfraNeo4jContainer extends Neo4jContainer {
+ public TestInfraNeo4jContainer(boolean fixedPort) {
+
super(DockerImageName.parse(imageName).asCompatibleSubstituteFor("neo4j"));
+
+ withStartupTimeout(Duration.ofMinutes(3L));
+ withRandomPassword();
+
+ if (fixedPort) {
+ addFixedExposedPort(7687, 7687);
+ addFixedExposedPort(7473, 7473);
+ addFixedExposedPort(7474, 7474);
+ }
+ }
+ }
+
+ return new
TestInfraNeo4jContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-ollama/src/main/java/org/apache/camel/test/infra/ollama/services/OllamaLocalContainerInfraService.java
b/test-infra/camel-test-infra-ollama/src/main/java/org/apache/camel/test/infra/ollama/services/OllamaLocalContainerInfraService.java
index c6896bab074..fc2ed90fb89 100644
---
a/test-infra/camel-test-infra-ollama/src/main/java/org/apache/camel/test/infra/ollama/services/OllamaLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-ollama/src/main/java/org/apache/camel/test/infra/ollama/services/OllamaLocalContainerInfraService.java
@@ -20,6 +20,7 @@ import java.io.IOException;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.ollama.commons.OllamaProperties;
import org.slf4j.Logger;
@@ -59,9 +60,18 @@ public class OllamaLocalContainerInfraService implements
OllamaInfraService, Con
}
protected OllamaContainer initContainer() {
- return new OllamaContainer(
- DockerImageName.parse(CONTAINER_NAME)
+ class TestInfraOllamaContainer extends OllamaContainer {
+ public TestInfraOllamaContainer(boolean fixedPort) {
+ super(DockerImageName.parse(CONTAINER_NAME)
.asCompatibleSubstituteFor("ollama/ollama"));
+
+ if (fixedPort) {
+ addFixedExposedPort(11434, 11434);
+ }
+ }
+ }
+
+ return new
TestInfraOllamaContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-openldap/src/main/java/org/apache/camel/test/infra/openldap/services/OpenLdapContainer.java
b/test-infra/camel-test-infra-openldap/src/main/java/org/apache/camel/test/infra/openldap/services/OpenLdapContainer.java
index 25f01307c07..19efa228a32 100644
---
a/test-infra/camel-test-infra-openldap/src/main/java/org/apache/camel/test/infra/openldap/services/OpenLdapContainer.java
+++
b/test-infra/camel-test-infra-openldap/src/main/java/org/apache/camel/test/infra/openldap/services/OpenLdapContainer.java
@@ -26,11 +26,16 @@ public class OpenLdapContainer extends
GenericContainer<OpenLdapContainer> {
public static final int CONTAINER_PORT_LDAP = 389;
public static final int CONTAINER_PORT_LDAP_OVER_SSL = 636;
- public OpenLdapContainer() {
+ public OpenLdapContainer(boolean fixedPort) {
super(LocalPropertyResolver.getProperty(OpenldapLocalContainerInfraService.class,
OpenldapProperties.OPENLDAP_CONTAINER));
- this.withExposedPorts(CONTAINER_PORT_LDAP,
CONTAINER_PORT_LDAP_OVER_SSL)
- .withNetworkAliases(CONTAINER_NAME);
+ if (fixedPort) {
+ this.addFixedExposedPort(CONTAINER_PORT_LDAP, CONTAINER_PORT_LDAP);
+ this.addFixedExposedPort(CONTAINER_PORT_LDAP_OVER_SSL,
CONTAINER_PORT_LDAP_OVER_SSL);
+ } else {
+ this.withExposedPorts(CONTAINER_PORT_LDAP,
CONTAINER_PORT_LDAP_OVER_SSL)
+ .withNetworkAliases(CONTAINER_NAME);
+ }
}
}
diff --git
a/test-infra/camel-test-infra-openldap/src/main/java/org/apache/camel/test/infra/openldap/services/OpenldapLocalContainerInfraService.java
b/test-infra/camel-test-infra-openldap/src/main/java/org/apache/camel/test/infra/openldap/services/OpenldapLocalContainerInfraService.java
index 68978f1a00c..67fe021b743 100644
---
a/test-infra/camel-test-infra-openldap/src/main/java/org/apache/camel/test/infra/openldap/services/OpenldapLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-openldap/src/main/java/org/apache/camel/test/infra/openldap/services/OpenldapLocalContainerInfraService.java
@@ -17,6 +17,7 @@
package org.apache.camel.test.infra.openldap.services;
import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.openldap.common.OpenldapProperties;
import org.slf4j.Logger;
@@ -34,7 +35,7 @@ public class OpenldapLocalContainerInfraService implements
OpenldapInfraService,
private final OpenLdapContainer container;
public OpenldapLocalContainerInfraService() {
- container = new OpenLdapContainer();
+ container = new
OpenLdapContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-opensearch/src/main/java/org/apache/camel/test/infra/opensearch/services/OpenSearchLocalContainerInfraService.java
b/test-infra/camel-test-infra-opensearch/src/main/java/org/apache/camel/test/infra/opensearch/services/OpenSearchLocalContainerInfraService.java
index d6023d398fc..1d6ed8441cf 100644
---
a/test-infra/camel-test-infra-opensearch/src/main/java/org/apache/camel/test/infra/opensearch/services/OpenSearchLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-opensearch/src/main/java/org/apache/camel/test/infra/opensearch/services/OpenSearchLocalContainerInfraService.java
@@ -51,20 +51,27 @@ public class OpenSearchLocalContainerInfraService
implements OpenSearchInfraServ
}
protected OpensearchContainer initContainer(String imageName) {
- DockerImageName customImage = DockerImageName.parse(imageName)
- .asCompatibleSubstituteFor("opensearchproject/opensearch");
- OpensearchContainer opensearchContainer = new
OpensearchContainer(customImage);
- // Increase the timeout from 60 seconds to 90 seconds to ensure that
it will be long enough
- // on the build pipeline
- opensearchContainer.setWaitStrategy(
- new LogMessageWaitStrategy()
- .withRegEx(".*(\"message\":\\s?\"started[\\s?|\"].*|]
started\n$)")
- .withStartupTimeout(Duration.ofSeconds(90)));
-
- opensearchContainer.withLogConsumer(new Slf4jLogConsumer(LOG));
-
- return opensearchContainer;
-
+ class TestInfraOpensearchContainer extends OpensearchContainer {
+ public TestInfraOpensearchContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName)
+
.asCompatibleSubstituteFor("opensearchproject/opensearch"));
+
+ // Increase the timeout from 60 seconds to 90 seconds to
ensure that it will be long enough
+ // on the build pipeline
+ setWaitStrategy(
+ new LogMessageWaitStrategy()
+
.withRegEx(".*(\"message\":\\s?\"started[\\s?|\"].*|] started\n$)")
+ .withStartupTimeout(Duration.ofSeconds(90)));
+
+ withLogConsumer(new Slf4jLogConsumer(LOG));
+
+ if (fixedPort) {
+ addFixedExposedPort(OPEN_SEARCH_PORT, OPEN_SEARCH_PORT);
+ }
+ }
+ }
+
+ return new
TestInfraOpensearchContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-pinecone/src/main/java/org/apache/camel/test/infra/pinecone/services/PineconeIndexContainer.java
b/test-infra/camel-test-infra-pinecone/src/main/java/org/apache/camel/test/infra/pinecone/services/PineconeIndexContainer.java
index d828615498a..40f96c066d6 100644
---
a/test-infra/camel-test-infra-pinecone/src/main/java/org/apache/camel/test/infra/pinecone/services/PineconeIndexContainer.java
+++
b/test-infra/camel-test-infra-pinecone/src/main/java/org/apache/camel/test/infra/pinecone/services/PineconeIndexContainer.java
@@ -31,10 +31,10 @@ public class PineconeIndexContainer extends
GenericContainer<PineconeIndexContai
"ghcr.io/pinecone-io/pinecone-index");
public PineconeIndexContainer(String dockerImageName) {
- this(DockerImageName.parse(dockerImageName));
+ this(DockerImageName.parse(dockerImageName), false);
}
- public PineconeIndexContainer(DockerImageName dockerImageName) {
+ public PineconeIndexContainer(DockerImageName dockerImageName, boolean
fixedPort) {
super(dockerImageName);
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
withEnv("PINECONE_HOST", "localhost");
@@ -43,7 +43,11 @@ public class PineconeIndexContainer extends
GenericContainer<PineconeIndexContai
withEnv("INDEX_TYPE", "serverless");
withEnv("METRIC", "cosine");
withEnv("PORT", String.valueOf(CLIENT_PORT));
- withExposedPorts(CLIENT_PORT);
+ if (fixedPort) {
+ addFixedExposedPort(CLIENT_PORT, CLIENT_PORT);
+ } else {
+ withExposedPorts(CLIENT_PORT);
+ }
}
public String getEndpoint() {
diff --git
a/test-infra/camel-test-infra-pinecone/src/main/java/org/apache/camel/test/infra/pinecone/services/PineconeLocalContainerInfraService.java
b/test-infra/camel-test-infra-pinecone/src/main/java/org/apache/camel/test/infra/pinecone/services/PineconeLocalContainerInfraService.java
index 858d9282b70..c79a111148e 100644
---
a/test-infra/camel-test-infra-pinecone/src/main/java/org/apache/camel/test/infra/pinecone/services/PineconeLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-pinecone/src/main/java/org/apache/camel/test/infra/pinecone/services/PineconeLocalContainerInfraService.java
@@ -22,6 +22,7 @@ import java.time.Duration;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.pinecone.common.PineconeProperties;
import org.slf4j.Logger;
@@ -52,9 +53,20 @@ public class PineconeLocalContainerInfraService implements
PineconeInfraService,
}
protected PineconeLocalContainer initContainer(String imageName) {
- return new PineconeLocalContainer(
-
DockerImageName.parse(imageName).asCompatibleSubstituteFor("pinecone-io/pinecone-local"))
- .withStartupTimeout(Duration.ofMinutes(3L));
+ class TestInfraPineconeLocalContainer extends PineconeLocalContainer {
+ public TestInfraPineconeLocalContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName)
+
.asCompatibleSubstituteFor("pinecone-io/pinecone-local"));
+
+ withStartupTimeout(Duration.ofMinutes(3L));
+
+ if (fixedPort) {
+ addFixedExposedPort(5080, 5080);
+ }
+ }
+ }
+
+ return new
TestInfraPineconeLocalContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-postgres/src/main/java/org/apache/camel/test/infra/postgres/services/PostgresLocalContainerInfraService.java
b/test-infra/camel-test-infra-postgres/src/main/java/org/apache/camel/test/infra/postgres/services/PostgresLocalContainerInfraService.java
index 613c73894e8..1fb3d2f4556 100644
---
a/test-infra/camel-test-infra-postgres/src/main/java/org/apache/camel/test/infra/postgres/services/PostgresLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-postgres/src/main/java/org/apache/camel/test/infra/postgres/services/PostgresLocalContainerInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.postgres.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.postgres.common.PostgresProperties;
import org.slf4j.Logger;
@@ -48,8 +49,18 @@ public class PostgresLocalContainerInfraService implements
PostgresInfraService,
}
protected PostgreSQLContainer initContainer(String imageName) {
- return new PostgreSQLContainer(
-
DockerImageName.parse(imageName).asCompatibleSubstituteFor("postgres"));
+ class TestInfraPostgreSQLContainer extends PostgreSQLContainer {
+ public TestInfraPostgreSQLContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName)
+ .asCompatibleSubstituteFor("postgres"));
+
+ if (fixedPort) {
+ addFixedExposedPort(5432, 5432);
+ }
+ }
+ }
+
+ return new
TestInfraPostgreSQLContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-pulsar/src/main/java/org/apache/camel/test/infra/pulsar/services/PulsarLocalContainerInfraService.java
b/test-infra/camel-test-infra-pulsar/src/main/java/org/apache/camel/test/infra/pulsar/services/PulsarLocalContainerInfraService.java
index 5e268e5f34f..c209526e638 100644
---
a/test-infra/camel-test-infra-pulsar/src/main/java/org/apache/camel/test/infra/pulsar/services/PulsarLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-pulsar/src/main/java/org/apache/camel/test/infra/pulsar/services/PulsarLocalContainerInfraService.java
@@ -20,6 +20,7 @@ import java.time.Duration;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.pulsar.common.PulsarProperties;
import org.slf4j.Logger;
@@ -49,8 +50,21 @@ public class PulsarLocalContainerInfraService implements
PulsarInfraService, Con
}
protected PulsarContainer initContainer(String imageName) {
- return new
PulsarContainer(DockerImageName.parse(imageName).asCompatibleSubstituteFor("apachepulsar/pulsar"))
- .withStartupTimeout(Duration.ofMinutes(3L));
+ class TestInfraPulsarContainer extends PulsarContainer {
+ public TestInfraPulsarContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName)
+ .asCompatibleSubstituteFor("apachepulsar/pulsar"));
+
+ withStartupTimeout(Duration.ofMinutes(3L));
+
+ if (fixedPort) {
+ addFixedExposedPort(6650, 6650);
+ addFixedExposedPort(8085, 8080);
+ }
+ }
+ }
+
+ return new
TestInfraPulsarContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-qdrant/src/main/java/org/apache/camel/test/infra/qdrant/services/QdrantLocalContainerInfraService.java
b/test-infra/camel-test-infra-qdrant/src/main/java/org/apache/camel/test/infra/qdrant/services/QdrantLocalContainerInfraService.java
index df64ddf6841..a2b7817ca3e 100644
---
a/test-infra/camel-test-infra-qdrant/src/main/java/org/apache/camel/test/infra/qdrant/services/QdrantLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-qdrant/src/main/java/org/apache/camel/test/infra/qdrant/services/QdrantLocalContainerInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.qdrant.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.qdrant.common.QdrantProperties;
import org.slf4j.Logger;
@@ -42,13 +43,29 @@ public class QdrantLocalContainerInfraService implements
QdrantInfraService, Con
}
public QdrantLocalContainerInfraService(String imageName) {
- this(new
QdrantContainer(DockerImageName.parse(imageName).asCompatibleSubstituteFor("qdrant/qdrant")));
+ this.container = initContainer(imageName,
ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
public QdrantLocalContainerInfraService(QdrantContainer container) {
this.container = container;
}
+ private QdrantContainer initContainer(String imageName, boolean fixedPort)
{
+ class TestInfraQdrantContainer extends QdrantContainer {
+ public TestInfraQdrantContainer() {
+ super(DockerImageName.parse(imageName)
+ .asCompatibleSubstituteFor("qdrant/qdrant"));
+
+ if (fixedPort) {
+ addFixedExposedPort(6333, 6333);
+ addFixedExposedPort(6334, 6334);
+ }
+ }
+ }
+
+ return new TestInfraQdrantContainer();
+ }
+
@Override
public void registerProperties() {
System.setProperty(QdrantProperties.QDRANT_HTTP_HOST, getHttpHost());
diff --git
a/test-infra/camel-test-infra-rabbitmq/src/main/java/org/apache/camel/test/infra/rabbitmq/services/RabbitMQLocalContainerInfraService.java
b/test-infra/camel-test-infra-rabbitmq/src/main/java/org/apache/camel/test/infra/rabbitmq/services/RabbitMQLocalContainerInfraService.java
index e101cef1e18..57a4737117e 100644
---
a/test-infra/camel-test-infra-rabbitmq/src/main/java/org/apache/camel/test/infra/rabbitmq/services/RabbitMQLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-rabbitmq/src/main/java/org/apache/camel/test/infra/rabbitmq/services/RabbitMQLocalContainerInfraService.java
@@ -19,6 +19,7 @@ package org.apache.camel.test.infra.rabbitmq.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.rabbitmq.common.RabbitMQProperties;
import org.slf4j.Logger;
@@ -48,7 +49,20 @@ public class RabbitMQLocalContainerInfraService implements
RabbitMQInfraService,
}
protected RabbitMQContainer initContainer(String imageName) {
- return new
RabbitMQContainer(DockerImageName.parse(imageName).asCompatibleSubstituteFor("rabbitmq"));
+ class TestInfraRabbitMQContainer extends RabbitMQContainer {
+ public TestInfraRabbitMQContainer(boolean fixedPort) {
+
super(DockerImageName.parse(imageName).asCompatibleSubstituteFor("rabbitmq"));
+
+ if (fixedPort) {
+ addFixedExposedPort(5672, 5672);
+ addFixedExposedPort(5671, 5671);
+ addFixedExposedPort(15671, 15671);
+ addFixedExposedPort(15672, 15672);
+ }
+ }
+ }
+
+ return new
TestInfraRabbitMQContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-redis/src/main/java/org/apache/camel/test/infra/redis/services/RedisContainer.java
b/test-infra/camel-test-infra-redis/src/main/java/org/apache/camel/test/infra/redis/services/RedisContainer.java
index ed86edcb5c7..b14470b13d8 100644
---
a/test-infra/camel-test-infra-redis/src/main/java/org/apache/camel/test/infra/redis/services/RedisContainer.java
+++
b/test-infra/camel-test-infra-redis/src/main/java/org/apache/camel/test/infra/redis/services/RedisContainer.java
@@ -38,7 +38,20 @@ public class RedisContainer extends
GenericContainer<RedisContainer> {
super(DockerImageName.parse(imageName));
}
- public static RedisContainer initContainer(String imageName, String
networkAlias) {
+ public static RedisContainer initContainer(String imageName, String
networkAlias, boolean fixedPort) {
+ class TestInfraRedisContainer extends RedisContainer {
+ public TestInfraRedisContainer() {
+ super(imageName);
+ waitingFor(Wait.forListeningPort());
+
+ if (fixedPort) {
+ addFixedExposedPort(RedisProperties.DEFAULT_PORT,
RedisProperties.DEFAULT_PORT);
+ } else {
+ withNetworkAliases(networkAlias)
+ .withExposedPorts(RedisProperties.DEFAULT_PORT);
+ }
+ }
+ }
return new RedisContainer(imageName)
.withNetworkAliases(networkAlias)
.withExposedPorts(RedisProperties.DEFAULT_PORT)
diff --git
a/test-infra/camel-test-infra-redis/src/main/java/org/apache/camel/test/infra/redis/services/RedisLocalContainerInfraService.java
b/test-infra/camel-test-infra-redis/src/main/java/org/apache/camel/test/infra/redis/services/RedisLocalContainerInfraService.java
index 9c1251ef14d..cb4bf601024 100644
---
a/test-infra/camel-test-infra-redis/src/main/java/org/apache/camel/test/infra/redis/services/RedisLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-redis/src/main/java/org/apache/camel/test/infra/redis/services/RedisLocalContainerInfraService.java
@@ -17,6 +17,7 @@
package org.apache.camel.test.infra.redis.services;
import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.redis.common.RedisProperties;
import org.slf4j.Logger;
@@ -35,7 +36,8 @@ public class RedisLocalContainerInfraService implements
RedisInfraService, Conta
}
public RedisLocalContainerInfraService(String imageName) {
- container = RedisContainer.initContainer(imageName,
RedisContainer.CONTAINER_NAME);
+ container = RedisContainer.initContainer(imageName,
RedisContainer.CONTAINER_NAME,
+ ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-rocketmq/src/main/java/org/apache/camel/test/infra/rocketmq/services/RocketMQBrokerContainer.java
b/test-infra/camel-test-infra-rocketmq/src/main/java/org/apache/camel/test/infra/rocketmq/services/RocketMQBrokerContainer.java
index f654cabc5f2..6cbbe0ee2a6 100644
---
a/test-infra/camel-test-infra-rocketmq/src/main/java/org/apache/camel/test/infra/rocketmq/services/RocketMQBrokerContainer.java
+++
b/test-infra/camel-test-infra-rocketmq/src/main/java/org/apache/camel/test/infra/rocketmq/services/RocketMQBrokerContainer.java
@@ -26,13 +26,19 @@ import org.testcontainers.containers.wait.strategy.Wait;
public class RocketMQBrokerContainer extends
GenericContainer<RocketMQBrokerContainer> {
- public RocketMQBrokerContainer(Network network, String confName) {
+ public RocketMQBrokerContainer(Network network, String confName, boolean
fixedPort) {
super(RocketMQContainerInfraService.ROCKETMQ_IMAGE);
- withNetwork(network);
- withExposedPorts(RocketMQProperties.ROCKETMQ_BROKER3_PORT,
- RocketMQProperties.ROCKETMQ_BROKER2_PORT,
- RocketMQProperties.ROCKETMQ_BROKER1_PORT);
+ if (fixedPort) {
+ addFixedExposedPort(RocketMQProperties.ROCKETMQ_BROKER3_PORT,
RocketMQProperties.ROCKETMQ_BROKER3_PORT);
+ addFixedExposedPort(RocketMQProperties.ROCKETMQ_BROKER2_PORT,
RocketMQProperties.ROCKETMQ_BROKER2_PORT);
+ addFixedExposedPort(RocketMQProperties.ROCKETMQ_BROKER1_PORT,
RocketMQProperties.ROCKETMQ_BROKER1_PORT);
+ } else {
+ withNetwork(network);
+ withExposedPorts(RocketMQProperties.ROCKETMQ_BROKER3_PORT,
+ RocketMQProperties.ROCKETMQ_BROKER2_PORT,
+ RocketMQProperties.ROCKETMQ_BROKER1_PORT);
+ }
withEnv("NAMESRV_ADDR", "nameserver:9876");
withClasspathResourceMapping(confName + "/" + confName + ".conf",
"/opt/rocketmq-" +
RocketMQContainerInfraService.ROCKETMQ_VERSION + "/conf/broker.conf",
diff --git
a/test-infra/camel-test-infra-rocketmq/src/main/java/org/apache/camel/test/infra/rocketmq/services/RocketMQContainerInfraService.java
b/test-infra/camel-test-infra-rocketmq/src/main/java/org/apache/camel/test/infra/rocketmq/services/RocketMQContainerInfraService.java
index 36aca171f80..8b6c5898506 100644
---
a/test-infra/camel-test-infra-rocketmq/src/main/java/org/apache/camel/test/infra/rocketmq/services/RocketMQContainerInfraService.java
+++
b/test-infra/camel-test-infra-rocketmq/src/main/java/org/apache/camel/test/infra/rocketmq/services/RocketMQContainerInfraService.java
@@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.rocketmq.common.RocketMQProperties;
import org.awaitility.Awaitility;
@@ -49,7 +50,8 @@ public class RocketMQContainerInfraService implements
RocketMQInfraService, Cont
nameserverContainer = new RocketMQNameserverContainer(network);
- brokerContainer1 = new RocketMQBrokerContainer(network, "broker1");
+ brokerContainer1
+ = new RocketMQBrokerContainer(network, "broker1",
ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-smb/src/main/java/org/apache/camel/test/infra/smb/services/SmbContainer.java
b/test-infra/camel-test-infra-smb/src/main/java/org/apache/camel/test/infra/smb/services/SmbContainer.java
index b0981487a7e..1150c7c5a83 100644
---
a/test-infra/camel-test-infra-smb/src/main/java/org/apache/camel/test/infra/smb/services/SmbContainer.java
+++
b/test-infra/camel-test-infra-smb/src/main/java/org/apache/camel/test/infra/smb/services/SmbContainer.java
@@ -27,13 +27,18 @@ public class SmbContainer extends
GenericContainer<SmbContainer> {
public static final String DEFAULT_USER = "camel";
public static final String DEFAULT_PASSWORD = "camelTester123";
- public SmbContainer() {
+ public SmbContainer(boolean fixedPort) {
super(new ImageFromDockerfile("localhost/samba:camel", false)
.withFileFromClasspath(".",
"org/apache/camel/test/infra/smb/services/"));
- super.withExposedPorts(SMB_PORT_DEFAULT)
- .waitingFor(Wait.forListeningPort());
+ if (fixedPort) {
+ addFixedExposedPort(SMB_PORT_DEFAULT, SMB_PORT_DEFAULT);
+ } else {
+ super.withExposedPorts(SMB_PORT_DEFAULT);
+ }
+
+ waitingFor(Wait.forListeningPort());
}
public String getUser() {
diff --git
a/test-infra/camel-test-infra-smb/src/main/java/org/apache/camel/test/infra/smb/services/SmbLocalContainerInfraService.java
b/test-infra/camel-test-infra-smb/src/main/java/org/apache/camel/test/infra/smb/services/SmbLocalContainerInfraService.java
index a6141779566..c27aed19408 100644
---
a/test-infra/camel-test-infra-smb/src/main/java/org/apache/camel/test/infra/smb/services/SmbLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-smb/src/main/java/org/apache/camel/test/infra/smb/services/SmbLocalContainerInfraService.java
@@ -17,6 +17,7 @@
package org.apache.camel.test.infra.smb.services;
import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.util.IOHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,7 +27,7 @@ import org.slf4j.LoggerFactory;
serviceAlias = "smb")
public class SmbLocalContainerInfraService implements SmbInfraService {
protected static final Logger LOG =
LoggerFactory.getLogger(SmbLocalContainerInfraService.class);
- protected final SmbContainer container = new SmbContainer();
+ protected final SmbContainer container = new
SmbContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
public SmbLocalContainerInfraService() {
}
diff --git
a/test-infra/camel-test-infra-solr/src/main/java/org/apache/camel/test/infra/solr/services/SolrContainer.java
b/test-infra/camel-test-infra-solr/src/main/java/org/apache/camel/test/infra/solr/services/SolrContainer.java
index 91fbf71319b..1e2526fd01c 100644
---
a/test-infra/camel-test-infra-solr/src/main/java/org/apache/camel/test/infra/solr/services/SolrContainer.java
+++
b/test-infra/camel-test-infra-solr/src/main/java/org/apache/camel/test/infra/solr/services/SolrContainer.java
@@ -48,16 +48,23 @@ public class SolrContainer extends
GenericContainer<SolrContainer> {
super(DockerImageName.parse(imageName));
}
- public static SolrContainer initContainer(String networkAlias) {
- return new SolrContainer()
+ public static SolrContainer initContainer(String networkAlias, boolean
fixedPort) {
+ SolrContainer solrContainer = new SolrContainer()
.withNetworkAliases(networkAlias)
.withEnv("SOLR_OPTS",
"-Dsolr.environment=test,label=camel-solr-test-infra,color=sandybrown")
.withEnv("GC_LOG_OPTS", "-verbose:")
.withAccessToHost(true)
.withLogConsumer(new
Slf4jLogConsumer(LOG).withPrefix(CONTAINER_NAME))
- .withExposedPorts(SolrProperties.DEFAULT_PORT)
.withCommand(SOLR_CONTAINER_COMMANDS)
.waitingFor(Wait.forHttp("/solr/" + SOLR_DFT_COLLECTION +
"/admin/ping?docker-ping"));
+
+ if (fixedPort) {
+ solrContainer.addFixedExposedPort(SolrProperties.DEFAULT_PORT,
SolrProperties.DEFAULT_PORT);
+ } else {
+ solrContainer.withExposedPorts(SolrProperties.DEFAULT_PORT);
+ }
+
+ return solrContainer;
}
}
diff --git
a/test-infra/camel-test-infra-solr/src/main/java/org/apache/camel/test/infra/solr/services/SolrLocalContainerInfraService.java
b/test-infra/camel-test-infra-solr/src/main/java/org/apache/camel/test/infra/solr/services/SolrLocalContainerInfraService.java
index 1f8281c05e5..aaa642fd682 100644
---
a/test-infra/camel-test-infra-solr/src/main/java/org/apache/camel/test/infra/solr/services/SolrLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-solr/src/main/java/org/apache/camel/test/infra/solr/services/SolrLocalContainerInfraService.java
@@ -17,6 +17,7 @@
package org.apache.camel.test.infra.solr.services;
import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.solr.common.SolrProperties;
import org.slf4j.Logger;
@@ -31,7 +32,8 @@ public class SolrLocalContainerInfraService implements
SolrInfraService, Contain
private final SolrContainer container;
public SolrLocalContainerInfraService() {
- container = SolrContainer.initContainer(SolrContainer.CONTAINER_NAME);
+ container = SolrContainer.initContainer(SolrContainer.CONTAINER_NAME,
+ ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-torchserve/src/main/java/org/apache/camel/test/infra/torchserve/services/TorchServeLocalContainerInfraService.java
b/test-infra/camel-test-infra-torchserve/src/main/java/org/apache/camel/test/infra/torchserve/services/TorchServeLocalContainerInfraService.java
index 6db5574cd7b..3ea667651c7 100644
---
a/test-infra/camel-test-infra-torchserve/src/main/java/org/apache/camel/test/infra/torchserve/services/TorchServeLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-torchserve/src/main/java/org/apache/camel/test/infra/torchserve/services/TorchServeLocalContainerInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.torchserve.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.torchserve.common.TorchServeProperties;
import org.slf4j.Logger;
@@ -52,16 +53,30 @@ public class TorchServeLocalContainerInfraService
implements TorchServeInfraServ
@SuppressWarnings("resource")
protected GenericContainer<?> initContainer(String imageName) {
- return new GenericContainer<>(DockerImageName.parse(imageName))
- .withExposedPorts(INFERENCE_PORT, MANAGEMENT_PORT,
METRICS_PORT)
- .withCopyFileToContainer(
+ class TorchServeContainer extends
GenericContainer<TorchServeContainer> {
+ public TorchServeContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName));
+
+ withCopyFileToContainer(
MountableFile.forClasspathResource("config.properties"),
"/home/model-server/config.properties")
- .withCopyFileToContainer(
-
MountableFile.forClasspathResource("models/squeezenet1_1.mar"),
- "/home/model-server/model-store/squeezenet1_1.mar")
- .waitingFor(Wait.forListeningPorts(INFERENCE_PORT,
MANAGEMENT_PORT, METRICS_PORT))
- .withCommand(CONTAINER_COMMAND);
+ .withCopyFileToContainer(
+
MountableFile.forClasspathResource("models/squeezenet1_1.mar"),
+
"/home/model-server/model-store/squeezenet1_1.mar")
+ .waitingFor(Wait.forListeningPorts(INFERENCE_PORT,
MANAGEMENT_PORT, METRICS_PORT))
+ .withCommand(CONTAINER_COMMAND);
+
+ if (fixedPort) {
+ addFixedExposedPort(INFERENCE_PORT, INFERENCE_PORT);
+ addFixedExposedPort(MANAGEMENT_PORT, MANAGEMENT_PORT);
+ addFixedExposedPort(METRICS_PORT, METRICS_PORT);
+ } else {
+ withExposedPorts(INFERENCE_PORT, MANAGEMENT_PORT,
METRICS_PORT);
+ }
+ }
+ }
+
+ return new
TorchServeContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-weaviate/src/main/java/org/apache/camel/test/infra/weaviate/services/WeaviateLocalContainerInfraService.java
b/test-infra/camel-test-infra-weaviate/src/main/java/org/apache/camel/test/infra/weaviate/services/WeaviateLocalContainerInfraService.java
index 8ba7b46515f..74b984a2225 100644
---
a/test-infra/camel-test-infra-weaviate/src/main/java/org/apache/camel/test/infra/weaviate/services/WeaviateLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-weaviate/src/main/java/org/apache/camel/test/infra/weaviate/services/WeaviateLocalContainerInfraService.java
@@ -22,6 +22,7 @@ import java.time.Duration;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.weaviate.common.WeaviateProperties;
import org.slf4j.Logger;
@@ -52,8 +53,21 @@ public class WeaviateLocalContainerInfraService implements
WeaviateInfraService,
}
protected WeaviateContainer initContainer(String imageName) {
- return new
WeaviateContainer(DockerImageName.parse(imageName).asCompatibleSubstituteFor("semitechnologies/weaviate"))
- .withStartupTimeout(Duration.ofMinutes(3L));
+ class TestInfraWeaviateContainer extends WeaviateContainer {
+ public TestInfraWeaviateContainer(boolean fixedPort) {
+ super(DockerImageName.parse(imageName)
+
.asCompatibleSubstituteFor("semitechnologies/weaviate"));
+
+ withStartupTimeout(Duration.ofMinutes(3L));
+
+ if (fixedPort) {
+ addFixedExposedPort(8087, 8080);
+ addFixedExposedPort(50051, 50051);
+ }
+ }
+ }
+
+ return new
TestInfraWeaviateContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-xmpp/src/main/java/org/apache/camel/test/infra/xmpp/services/XmppLocalContainerInfraService.java
b/test-infra/camel-test-infra-xmpp/src/main/java/org/apache/camel/test/infra/xmpp/services/XmppLocalContainerInfraService.java
index aad09b7b955..01785fe9273 100644
---
a/test-infra/camel-test-infra-xmpp/src/main/java/org/apache/camel/test/infra/xmpp/services/XmppLocalContainerInfraService.java
+++
b/test-infra/camel-test-infra-xmpp/src/main/java/org/apache/camel/test/infra/xmpp/services/XmppLocalContainerInfraService.java
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.xmpp.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
+import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.xmpp.common.XmppProperties;
import org.slf4j.Logger;
@@ -44,7 +45,7 @@ public class XmppLocalContainerInfraService implements
XmppInfraService, Contain
}
protected XmppServerContainer initContainer(String imageName) {
- return new XmppServerContainer();
+ return new
XmppServerContainer(ContainerEnvironmentUtil.isFixedPort(this.getClass()));
}
@Override
diff --git
a/test-infra/camel-test-infra-xmpp/src/main/java/org/apache/camel/test/infra/xmpp/services/XmppServerContainer.java
b/test-infra/camel-test-infra-xmpp/src/main/java/org/apache/camel/test/infra/xmpp/services/XmppServerContainer.java
index 1ba12e250b9..6c721eed732 100644
---
a/test-infra/camel-test-infra-xmpp/src/main/java/org/apache/camel/test/infra/xmpp/services/XmppServerContainer.java
+++
b/test-infra/camel-test-infra-xmpp/src/main/java/org/apache/camel/test/infra/xmpp/services/XmppServerContainer.java
@@ -43,6 +43,14 @@ public class XmppServerContainer extends
GenericContainer<XmppServerContainer> {
.waitingFor(Wait.forLogMessage(".*Started Application in.*",
1));
}
+ public XmppServerContainer(boolean fixedPort) {
+ this();
+ if (fixedPort) {
+ addFixedExposedPort(XmppProperties.PORT_DEFAULT,
XmppProperties.PORT_DEFAULT);
+ addFixedExposedPort(8088, PORT_REST);
+ }
+ }
+
public String getUrl() {
return String.format("%s:%d", this.getHost(),
this.getMappedPort(XmppProperties.PORT_DEFAULT));
}