You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by fm...@apache.org on 2025/01/14 15:17:30 UTC
(camel) branch main updated (dc3e64d3c0e -> e62512c1b0c)
This is an automated email from the ASF dual-hosted git repository.
fmariani pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
from dc3e64d3c0e Add Minikube deployment example for Camel 4.9 with Camel JBang
new 2e8f169a398 Execute test-infra services via Camel JBang
new e62512c1b0c Add description to test services exposed via camel jbang
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
components/camel-mongodb/pom.xml | 6 -
components/camel-solr/pom.xml | 1 +
components/camel-tahu/pom.xml | 6 -
.../java/org/apache/camel/test/AvailablePort.java | 52 ++
.../org/apache/camel/test/AvailablePortFinder.java | 28 +-
.../apache/camel/spi/annotations/InfraService.java | 72 +++
.../modules/ROOT/pages/camel-jbang.adoc | 78 +++
.../user-manual/modules/ROOT/pages/test-infra.adoc | 25 +-
dsl/camel-jbang/camel-jbang-core/pom.xml | 11 +
.../dsl/jbang/core/commands/CamelJBangMain.java | 6 +
.../core/commands/infra/InfraBaseCommand.java | 71 +++
.../jbang/core/commands/infra/InfraCommand.java | 24 +-
.../dsl/jbang/core/commands/infra/InfraList.java | 111 ++++
.../dsl/jbang/core/commands/infra/InfraRun.java | 131 +++++
.../camel-jbang-main/dist/CamelJBang.java | 2 +-
.../src/main/jbang/main/CamelJBang.java | 2 +-
pom.xml | 1 +
test-infra/camel-test-infra-all/pom.xml | 564 +++++++++++++++++++++
.../resources/META-INF/test-infra-metadata.json | 1 +
.../ArangoDBLocalContainerInfraService.java | 4 +
.../artemis/services/ArtemisAMQPInfraService.java | 4 +
.../artemis/services/ArtemisMQTTInfraService.java | 4 +
.../services/ArtemisPersistentVMInfraService.java | 4 +
.../artemis/services/ArtemisVMInfraService.java | 4 +
.../AWSCloudWatchLocalContainerInfraService.java | 7 +
.../AWSConfigLocalContainerInfraService.java | 6 +
.../AWSDynamodbLocalContainerInfraService.java | 6 +
.../services/AWSEC2LocalContainerInfraService.java | 6 +
.../AWSEventBridgeLocalContainerInfraService.java | 6 +
.../services/AWSIAMLocalContainerInfraService.java | 6 +
.../services/AWSKMSLocalContainerInfraService.java | 6 +
.../AWSKinesisLocalContainerInfraService.java | 5 +
.../AWSLambdaLocalContainerInfraService.java | 6 +
.../services/AWSS3LocalContainerInfraService.java | 5 +
.../services/AWSSNSLocalContainerInfraService.java | 6 +
.../services/AWSSQSLocalContainerInfraService.java | 6 +
.../services/AWSSTSLocalContainerInfraService.java | 6 +
...WSSecretsManagerLocalContainerInfraService.java | 6 +
...AzureStorageBlobLocalContainerInfraService.java | 5 +
...zureStorageQueueLocalContainerInfraService.java | 5 +
.../CassandraLocalContainerInfraService.java | 4 +
.../ChatScriptLocalContainerInfraService.java | 4 +
.../services/ConsulLocalContainerInfraService.java | 4 +
.../CouchbaseLocalContainerInfraService.java | 4 +
.../CouchDbLocalContainerInfraService.java | 4 +
.../ElasticSearchLocalContainerInfraService.java | 4 +
.../services/Etcd3LocalContainerInfraService.java | 4 +
.../services/FhirLocalContainerInfraService.java | 4 +
.../services/embedded/FtpEmbeddedInfraService.java | 4 +
.../embedded/FtpsEmbeddedInfraService.java | 14 +-
.../embedded/SftpEmbeddedInfraService.java | 4 +
.../GooglePubSubLocalContainerInfraService.java | 5 +
.../HashicorpVaultLocalContainerInfraService.java | 5 +
.../services/HazelcastEmbeddedInfraService.java | 4 +
.../hivemq/services/LocalHiveMQInfraService.java | 4 +
.../LocalHiveMQSparkplugTCKInfraService.java | 5 +
.../services/IgniteEmbeddedInfraService.java | 4 +
.../InfinispanLocalContainerInfraService.java | 4 +
.../services/ContainerLocalKafkaInfraService.java | 4 +
.../infra/kafka/services/RedpandaInfraService.java | 4 +
.../RedpandaTransactionsEnabledContainer.java | 4 +-
.../infra/kafka/services/StrimziInfraService.java | 4 +
.../MicroprofileLRALocalContainerInfraService.java | 7 +
.../services/MilvusLocalContainerInfraService.java | 4 +
.../services/MinioLocalContainerInfraService.java | 4 +
.../MongoDBLocalContainerInfraService.java | 4 +
.../MosquittoLocalContainerInfraService.java | 4 +
.../services/NatsLocalContainerInfraService.java | 4 +
.../services/OllamaLocalContainerInfraService.java | 4 +
.../OpenldapLocalContainerInfraService.java | 4 +
.../PostgresLocalContainerInfraService.java | 8 +-
.../services/PulsarLocalContainerInfraService.java | 4 +
.../services/QdrantLocalContainerInfraService.java | 4 +
.../RabbitMQLocalContainerInfraService.java | 4 +
.../services/RedisLocalContainerInfraService.java | 4 +
.../services/RocketMQContainerInfraService.java | 4 +
.../services/SmbLocalContainerInfraService.java | 4 +
.../services/SolrLocalContainerInfraService.java | 4 +
.../TorchServeLocalContainerInfraService.java | 4 +
.../services/XmppLocalContainerInfraService.java | 4 +
.../ZooKeeperLocalContainerInfraService.java | 4 +
test-infra/pom.xml | 8 +
.../camel/itest/security/GreeterClientTest.java | 4 +-
tooling/maven/camel-package-maven-plugin/pom.xml | 5 +
.../CamelTestInfraGenerateMetadataMojo.java | 153 ++++++
.../apache/camel/spi/annotations/InfraService.java | 72 +++
86 files changed, 1666 insertions(+), 65 deletions(-)
create mode 100644 components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePort.java
create mode 100644 core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
create mode 100644 dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
copy test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java => dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraCommand.java (58%)
create mode 100644 dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraList.java
create mode 100644 dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
create mode 100644 test-infra/camel-test-infra-all/pom.xml
create mode 100644 test-infra/camel-test-infra-all/src/generated/resources/META-INF/test-infra-metadata.json
create mode 100644 tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
create mode 100644 tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
(camel) 02/02: Add description to test services exposed via camel jbang
Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
fmariani pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit e62512c1b0cfadb30350f29ba886b3963838e350
Author: Croway <fe...@gmail.com>
AuthorDate: Tue Jan 14 13:41:33 2025 +0100
Add description to test services exposed via camel jbang
---
.../apache/camel/spi/annotations/InfraService.java | 9 +++
.../core/commands/infra/InfraBaseCommand.java | 71 ++++++++++++++++++++++
.../jbang/core/commands/infra/InfraCommand.java | 21 +------
.../dsl/jbang/core/commands/infra/InfraList.java | 62 ++++++++++---------
.../dsl/jbang/core/commands/infra/InfraRun.java | 26 ++------
.../camel-jbang-main/dist/CamelJBang.java | 2 +-
.../src/main/jbang/main/CamelJBang.java | 2 +-
test-infra/camel-test-infra-all/pom.xml | 1 +
.../resources/META-INF/test-infra-metadata.json | 2 +-
.../ArangoDBLocalContainerInfraService.java | 4 +-
.../artemis/services/ArtemisAMQPInfraService.java | 4 +-
.../artemis/services/ArtemisMQTTInfraService.java | 4 +-
.../services/ArtemisPersistentVMInfraService.java | 4 +-
.../artemis/services/ArtemisVMInfraService.java | 4 +-
.../AWSCloudWatchLocalContainerInfraService.java | 5 +-
.../AWSConfigLocalContainerInfraService.java | 4 +-
.../AWSDynamodbLocalContainerInfraService.java | 4 +-
.../services/AWSEC2LocalContainerInfraService.java | 4 +-
.../AWSEventBridgeLocalContainerInfraService.java | 4 +-
.../services/AWSIAMLocalContainerInfraService.java | 4 +-
.../services/AWSKMSLocalContainerInfraService.java | 4 +-
.../AWSKinesisLocalContainerInfraService.java | 4 +-
.../AWSLambdaLocalContainerInfraService.java | 4 +-
.../services/AWSS3LocalContainerInfraService.java | 4 +-
.../services/AWSSNSLocalContainerInfraService.java | 4 +-
.../services/AWSSQSLocalContainerInfraService.java | 4 +-
.../services/AWSSTSLocalContainerInfraService.java | 4 +-
...WSSecretsManagerLocalContainerInfraService.java | 4 +-
...AzureStorageBlobLocalContainerInfraService.java | 5 +-
...zureStorageQueueLocalContainerInfraService.java | 5 +-
.../CassandraLocalContainerInfraService.java | 4 +-
.../ChatScriptLocalContainerInfraService.java | 4 +-
.../services/ConsulLocalContainerInfraService.java | 4 +-
.../CouchbaseLocalContainerInfraService.java | 4 +-
.../CouchDbLocalContainerInfraService.java | 4 +-
.../ElasticSearchLocalContainerInfraService.java | 4 +-
.../services/Etcd3LocalContainerInfraService.java | 4 +-
.../services/FhirLocalContainerInfraService.java | 4 +-
.../services/embedded/FtpEmbeddedInfraService.java | 4 +-
.../embedded/FtpsEmbeddedInfraService.java | 4 +-
.../embedded/SftpEmbeddedInfraService.java | 4 +-
.../GooglePubSubLocalContainerInfraService.java | 4 +-
.../HashicorpVaultLocalContainerInfraService.java | 4 +-
.../services/HazelcastEmbeddedInfraService.java | 4 +-
.../hivemq/services/LocalHiveMQInfraService.java | 4 +-
.../LocalHiveMQSparkplugTCKInfraService.java | 4 +-
.../services/IgniteEmbeddedInfraService.java | 4 +-
.../InfinispanLocalContainerInfraService.java | 4 +-
.../services/ContainerLocalKafkaInfraService.java | 4 +-
.../infra/kafka/services/RedpandaInfraService.java | 4 +-
.../infra/kafka/services/StrimziInfraService.java | 4 +-
.../MicroprofileLRALocalContainerInfraService.java | 6 +-
.../services/MilvusLocalContainerInfraService.java | 4 +-
.../services/MinioLocalContainerInfraService.java | 4 +-
.../MongoDBLocalContainerInfraService.java | 4 +-
.../MosquittoLocalContainerInfraService.java | 4 +-
.../services/NatsLocalContainerInfraService.java | 4 +-
.../services/OllamaLocalContainerInfraService.java | 4 +-
.../OpenldapLocalContainerInfraService.java | 4 +-
.../PostgresLocalContainerInfraService.java | 4 +-
.../services/PulsarLocalContainerInfraService.java | 4 +-
.../services/QdrantLocalContainerInfraService.java | 4 +-
.../RabbitMQLocalContainerInfraService.java | 4 +-
.../services/RedisLocalContainerInfraService.java | 4 +-
.../services/RocketMQContainerInfraService.java | 4 +-
.../services/SmbLocalContainerInfraService.java | 4 +-
.../services/SolrLocalContainerInfraService.java | 4 +-
.../TorchServeLocalContainerInfraService.java | 4 +-
.../services/XmppLocalContainerInfraService.java | 4 +-
.../ZooKeeperLocalContainerInfraService.java | 4 +-
.../CamelTestInfraGenerateMetadataMojo.java | 11 ++++
.../apache/camel/spi/annotations/InfraService.java | 9 +++
72 files changed, 328 insertions(+), 137 deletions(-)
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
index 354fcce94c4..83fc356ab32 100644
--- a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
@@ -42,6 +42,15 @@ public @interface InfraService {
*/
Class service();
+ /**
+ * Returns a description of this Service.
+ *
+ * This is used for documentation and tooling.
+ *
+ * @return
+ */
+ String description() default "";
+
/**
* List of names that can be used to run the service
*
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
new file mode 100644
index 00000000000..46622f74261
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.commands.infra;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import picocli.CommandLine;
+
+public abstract class InfraBaseCommand extends CamelCommand {
+
+ protected final ObjectMapper jsonMapper = new ObjectMapper();
+
+ @CommandLine.Option(names = { "--json" },
+ description = "Output in JSON Format")
+ boolean jsonOutput;
+
+ public InfraBaseCommand(CamelJBangMain main) {
+ super(main);
+
+ jsonMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+ jsonMapper.registerModule(new JavaTimeModule());
+ jsonMapper.registerModule(new Jdk8Module());
+ jsonMapper.enable(SerializationFeature.INDENT_OUTPUT);
+ }
+
+ protected List<TestInfraService> getMetadata() throws IOException {
+ List<TestInfraService> metadata;
+
+ try (InputStream is
+ = this.getClass().getClassLoader().getResourceAsStream("META-INF/test-infra-metadata.json")) {
+ String json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
+
+ metadata = jsonMapper.readValue(json, new TypeReference<List<TestInfraService>>() {
+ });
+ }
+
+ return metadata;
+ }
+
+ record TestInfraService(
+ String service,
+ String implementation,
+ String description,
+ List<String> alias,
+ List<String> aliasImplementation) {
+ }
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraCommand.java
index 9369d9a4a76..47ceaa5527d 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraCommand.java
@@ -16,28 +16,12 @@
*/
package org.apache.camel.dsl.jbang.core.commands.infra;
-import java.util.List;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import picocli.CommandLine;
@CommandLine.Command(name = "infra",
description = "List and Run external services for testing and prototyping")
-public class InfraCommand extends CamelCommand {
-
- static final ObjectMapper JSON_MAPPER = new ObjectMapper();
-
- {
- JSON_MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
- JSON_MAPPER.registerModule(new JavaTimeModule());
- JSON_MAPPER.registerModule(new Jdk8Module());
- JSON_MAPPER.enable(SerializationFeature.INDENT_OUTPUT);
- }
+public class InfraCommand extends InfraBaseCommand {
public InfraCommand(CamelJBangMain main) {
super(main);
@@ -49,7 +33,4 @@ public class InfraCommand extends CamelCommand {
new CommandLine(new InfraList(getMain())).execute();
return 0;
}
-
- record TestInfraService(String service, String implementation, List<String> alias, List<String> aliasImplementation) {
- }
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraList.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraList.java
index e73a3ede419..fa5ec999237 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraList.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraList.java
@@ -16,8 +16,6 @@
*/
package org.apache.camel.dsl.jbang.core.commands.infra;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -27,22 +25,16 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
import com.github.freva.asciitable.HorizontalAlign;
-import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
@CommandLine.Command(name = "list", description = "Displays available external services", sortOptions = false,
showDefaultValues = true)
-public class InfraList extends CamelCommand {
-
- @CommandLine.Option(names = { "--json" },
- description = "Output in JSON Format")
- boolean jsonOutput;
+public class InfraList extends InfraBaseCommand {
public InfraList(CamelJBangMain main) {
super(main);
@@ -50,38 +42,31 @@ public class InfraList extends CamelCommand {
@Override
public Integer doCall() throws Exception {
- Map<String, Set<String>> services = new HashMap<>();
-
- List<InfraCommand.TestInfraService> metadata;
-
- try (InputStream is
- = this.getClass().getClassLoader().getResourceAsStream("META-INF/test-infra-metadata.json")) {
- String json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
+ Map<String, InfraServiceAlias> services = new HashMap<>();
- metadata = InfraCommand.JSON_MAPPER.readValue(json, new TypeReference<List<InfraCommand.TestInfraService>>() {
- });
- }
+ List<TestInfraService> metadata = getMetadata();
List<Row> rows = new ArrayList<>(metadata.size());
- for (InfraCommand.TestInfraService service : metadata) {
+ for (TestInfraService service : metadata) {
for (String alias : service.alias()) {
if (!services.containsKey(alias)) {
- services.put(alias, new HashSet<>());
+ services.put(alias, new InfraServiceAlias(service.description()));
}
if (service.aliasImplementation() != null) {
- for (String aliasImplementation : service.aliasImplementation()) {
- services.get(alias).add(aliasImplementation);
- }
+ services.get(alias).getAliasImplementation().addAll(service.aliasImplementation());
}
}
}
int width = 0;
- for (Map.Entry<String, Set<String>> entry : services.entrySet()) {
+ for (Map.Entry<String, InfraServiceAlias> entry : services.entrySet()) {
width = Math.max(width, entry.getKey().length());
- rows.add(new Row(entry.getKey(), String.join(", ", entry.getValue())));
+ rows.add(new Row(
+ entry.getKey(),
+ String.join(", ", entry.getValue().getAliasImplementation()),
+ entry.getValue().getDescription()));
}
if (jsonOutput) {
@@ -89,19 +74,38 @@ public class InfraList extends CamelCommand {
Jsoner.serialize(
rows.stream().map(row -> Map.of(
"alias", row.alias(),
- "aliasImplementation", row.aliasImplementation()))
+ "aliasImplementation", row.aliasImplementation(),
+ "description", row.description() == null ? "" : row.description()))
.collect(Collectors.toList())));
} else {
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows, Arrays.asList(
new Column().header("ALIAS").minWidth(width + 5).dataAlign(HorizontalAlign.LEFT)
.with(r -> r.alias()),
- new Column().header("IMPLEMENTATION").dataAlign(HorizontalAlign.LEFT).with(r -> r.aliasImplementation()))));
+ new Column().header("IMPLEMENTATION").dataAlign(HorizontalAlign.LEFT).with(r -> r.aliasImplementation()),
+ new Column().header("DESCRIPTION").dataAlign(HorizontalAlign.LEFT).with(r -> r.description()))));
}
return 0;
}
- record Row(String alias, String aliasImplementation) {
+ record Row(String alias, String aliasImplementation, String description) {
+ }
+
+ private class InfraServiceAlias {
+ private final String description;
+ private final Set<String> aliasImplementation = new HashSet<>();
+
+ public InfraServiceAlias(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public Set<String> getAliasImplementation() {
+ return aliasImplementation;
+ }
}
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
index e201f86e8ea..f80321d9e23 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
@@ -16,31 +16,23 @@
*/
package org.apache.camel.dsl.jbang.core.commands.infra;
-import java.io.InputStream;
import java.lang.reflect.Method;
-import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Strings;
-import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.test.infra.common.services.InfrastructureService;
import picocli.CommandLine;
@CommandLine.Command(name = "run",
description = "Run an external service")
-public class InfraRun extends CamelCommand {
+public class InfraRun extends InfraBaseCommand {
@CommandLine.Parameters(description = "Service name", arity = "1")
private List<String> serviceName;
- @CommandLine.Option(names = { "--json" },
- description = "Output in JSON Format")
- boolean jsonOutput;
-
public InfraRun(CamelJBangMain main) {
super(main);
}
@@ -60,19 +52,9 @@ public class InfraRun extends CamelCommand {
}
private void run(String testService, String testServiceImplementation) throws Exception {
- List<InfraCommand.TestInfraService> metadata;
-
- try (InputStream is
- = this.getClass().getClassLoader().getResourceAsStream("META-INF/test-infra-metadata.json")) {
- String json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
-
- metadata = InfraCommand.JSON_MAPPER.readValue(json, new TypeReference<List<InfraCommand.TestInfraService>>() {
- });
- }
-
- List<InfraCommand.TestInfraService> services = metadata;
+ List<TestInfraService> services = getMetadata();
- InfraCommand.TestInfraService testInfraService = services
+ TestInfraService testInfraService = services
.stream()
.filter(service -> {
if (testServiceImplementation != null && !testServiceImplementation.isEmpty()
@@ -134,7 +116,7 @@ public class InfraRun extends CamelCommand {
}
}
- printer().println(InfraCommand.JSON_MAPPER.writeValueAsString(properties));
+ printer().println(jsonMapper.writeValueAsString(properties));
if (!jsonOutput) {
printer().println("To stop the execution press q");
diff --git a/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java b/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
index 3639949964a..c560e769b39 100755
--- a/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
+++ b/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
@@ -33,7 +33,7 @@ import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
public class CamelJBang {
public static void main(String... args) {
- CamelJBangMain.run(args);
+ CamelJBangMain.run("infra", "run", "kafka");
}
}
diff --git a/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java b/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
index 3639949964a..c560e769b39 100755
--- a/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
+++ b/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
@@ -33,7 +33,7 @@ import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
public class CamelJBang {
public static void main(String... args) {
- CamelJBangMain.run(args);
+ CamelJBangMain.run("infra", "run", "kafka");
}
}
diff --git a/test-infra/camel-test-infra-all/pom.xml b/test-infra/camel-test-infra-all/pom.xml
index 22ec93474db..d87898f777e 100644
--- a/test-infra/camel-test-infra-all/pom.xml
+++ b/test-infra/camel-test-infra-all/pom.xml
@@ -28,6 +28,7 @@
</parent>
<artifactId>camel-test-infra-all</artifactId>
+ <name>Camel :: Test Infra :: Collection of all test services</name>
<dependencies>
<dependency>
diff --git a/test-infra/camel-test-infra-all/src/generated/resources/META-INF/test-infra-metadata.json b/test-infra/camel-test-infra-all/src/generated/resources/META-INF/test-infra-metadata.json
index ff2c7f144fe..a4e3357fa78 100644
--- a/test-infra/camel-test-infra-all/src/generated/resources/META-INF/test-infra-metadata.json
+++ b/test-infra/camel-test-infra-all/src/generated/resources/META-INF/test-infra-metadata.json
@@ -1 +1 @@
-[{"service":"org.apache.camel.test.infra.milvus.services.MilvusInfraService","implementation":"org.apache.camel.test.infra.milvus.services.MilvusLocalContainerInfraService","alias":["milvus"],"aliasImplementation":[]},{"service":"org.apache.camel.test.infra.aws.common.services.AWSInfraService","implementation":"org.apache.camel.test.infra.aws2.services.AWSKinesisLocalContainerInfraService","alias":["kinesis","aws-kinesis"],"aliasImplementation":[]},{"service":"org.apache.camel.test.infra [...]
\ No newline at end of file
+[{"service":"org.apache.camel.test.infra.milvus.services.MilvusInfraService","description":"Milvus Vector Database","implementation":"org.apache.camel.test.infra.milvus.services.MilvusLocalContainerInfraService","alias":["milvus"],"aliasImplementation":[]},{"service":"org.apache.camel.test.infra.aws.common.services.AWSInfraService","description":"Local AWS Services with LocalStack","implementation":"org.apache.camel.test.infra.aws2.services.AWSKinesisLocalContainerInfraService","alias":[ [...]
\ No newline at end of file
diff --git a/test-infra/camel-test-infra-arangodb/src/main/java/org/apache/camel/test/infra/arangodb/services/ArangoDBLocalContainerInfraService.java b/test-infra/camel-test-infra-arangodb/src/main/java/org/apache/camel/test/infra/arangodb/services/ArangoDBLocalContainerInfraService.java
index 5ba269b5df5..a62ed60c47b 100644
--- a/test-infra/camel-test-infra-arangodb/src/main/java/org/apache/camel/test/infra/arangodb/services/ArangoDBLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-arangodb/src/main/java/org/apache/camel/test/infra/arangodb/services/ArangoDBLocalContainerInfraService.java
@@ -24,7 +24,9 @@ import org.apache.camel.test.infra.common.services.ContainerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = ArangoDBInfraService.class, serviceAlias = "arangodb")
+@InfraService(service = ArangoDBInfraService.class,
+ description = "ArangoDB is a multi-model database for high-performance applications.",
+ serviceAlias = "arangodb")
public class ArangoDBLocalContainerInfraService implements ArangoDBInfraService, ContainerService<ArangoDbContainer> {
private static final Logger LOG = LoggerFactory.getLogger(ArangoDBLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPInfraService.java b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPInfraService.java
index fbdd20cc3f6..9cb57be143c 100644
--- a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPInfraService.java
+++ b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPInfraService.java
@@ -33,7 +33,9 @@ import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.artemis.common.ArtemisProperties;
import org.apache.camel.test.infra.artemis.common.ArtemisRunException;
-@InfraService(service = ArtemisInfraService.class, serviceAlias = "artemis", serviceImplementationAlias = "amqp")
+@InfraService(service = ArtemisInfraService.class,
+ description = "Apache Artemis is an open source message broker",
+ serviceAlias = "artemis", serviceImplementationAlias = "amqp")
public class ArtemisAMQPInfraService extends AbstractArtemisEmbeddedService {
private String brokerURL;
diff --git a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTInfraService.java b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTInfraService.java
index 05a6aff6327..458b91ec011 100644
--- a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTInfraService.java
+++ b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTInfraService.java
@@ -22,7 +22,9 @@ import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.artemis.common.ArtemisRunException;
-@InfraService(service = ArtemisInfraService.class, serviceAlias = "artemis", serviceImplementationAlias = "mqtt")
+@InfraService(service = ArtemisInfraService.class,
+ description = "Apache Artemis is an open source message broker",
+ serviceAlias = "artemis", serviceImplementationAlias = "mqtt")
public class ArtemisMQTTInfraService extends AbstractArtemisEmbeddedService {
private String brokerURL;
diff --git a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMInfraService.java b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMInfraService.java
index bc2b65721c0..eba181205d5 100644
--- a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMInfraService.java
+++ b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMInfraService.java
@@ -24,7 +24,9 @@ import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.artemis.common.ArtemisRunException;
-@InfraService(service = ArtemisInfraService.class, serviceAlias = "artemis", serviceImplementationAlias = "persistent")
+@InfraService(service = ArtemisInfraService.class,
+ description = "Apache Artemis is an open source message broker",
+ serviceAlias = "artemis", serviceImplementationAlias = "persistent")
public class ArtemisPersistentVMInfraService extends AbstractArtemisEmbeddedService {
private String brokerURL;
diff --git a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisVMInfraService.java b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisVMInfraService.java
index e020aec6cd7..2bbe09d4832 100644
--- a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisVMInfraService.java
+++ b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisVMInfraService.java
@@ -25,7 +25,9 @@ import org.apache.camel.test.infra.artemis.common.ArtemisRunException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = ArtemisInfraService.class, serviceAlias = "artemis")
+@InfraService(service = ArtemisInfraService.class,
+ description = "Apache Artemis is an open source message broker",
+ serviceAlias = "artemis")
public class ArtemisVMInfraService extends AbstractArtemisEmbeddedService {
private static final Logger LOG = LoggerFactory.getLogger(ArtemisVMInfraService.class);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSCloudWatchLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSCloudWatchLocalContainerInfraService.java
index 6378345af99..83d2d5b0b16 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSCloudWatchLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSCloudWatchLocalContainerInfraService.java
@@ -20,7 +20,10 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "cloud-watch", "aws-cloud-watch" })
+@InfraService(
+ service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "cloud-watch")
public class AWSCloudWatchLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSCloudWatchLocalContainerInfraService() {
super(Service.CLOUD_WATCH);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSConfigLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSConfigLocalContainerInfraService.java
index 444d6a45b3e..04ff0b3df58 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSConfigLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSConfigLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-config" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "config")
public class AWSConfigLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSConfigLocalContainerInfraService() {
super(Service.CONFIG);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSDynamodbLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSDynamodbLocalContainerInfraService.java
index db80b28dc7a..004b6b43198 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSDynamodbLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSDynamodbLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "dynamodb", "aws-dynamo-db", "dynamo-db" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = { "dynamodb", "dynamo-db" })
public class AWSDynamodbLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSDynamodbLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEC2LocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEC2LocalContainerInfraService.java
index 5a6bae4c830..64921fe6a49 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEC2LocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEC2LocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "ec2", "aws-ec2" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "ec2")
public class AWSEC2LocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSEC2LocalContainerInfraService() {
super(Service.EC2);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEventBridgeLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEventBridgeLocalContainerInfraService.java
index 9a294ec67e2..1958e9f9f32 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEventBridgeLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEventBridgeLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "event-bridge", "aws-event-bridge" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "event-bridge")
public class AWSEventBridgeLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSEventBridgeLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSIAMLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSIAMLocalContainerInfraService.java
index aa76aa0aeff..34c54d2855a 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSIAMLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSIAMLocalContainerInfraService.java
@@ -19,7 +19,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-iam" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "iam")
public class AWSIAMLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSIAMLocalContainerInfraService() {
super(Service.IAM);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKMSLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKMSLocalContainerInfraService.java
index 492a2c50bc7..eaeb5e47ad6 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKMSLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKMSLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-kms" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "kms")
public class AWSKMSLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSKMSLocalContainerInfraService() {
super(Service.KMS);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java
index e46872181e5..eb490688582 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java
@@ -23,7 +23,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.core.SdkSystemSetting;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "kinesis", "aws-kinesis" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "kinesis")
public class AWSKinesisLocalContainerInfraService extends AWSLocalContainerInfraService {
private static final Logger LOG = LoggerFactory.getLogger(AWSKinesisLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLambdaLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLambdaLocalContainerInfraService.java
index 69feb90e07b..d5fcfb836ec 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLambdaLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLambdaLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "lambda", "aws-lambda" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "lambda")
public class AWSLambdaLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSLambdaLocalContainerInfraService() {
super(Service.LAMBDA);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSS3LocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSS3LocalContainerInfraService.java
index c7aa0c262b9..51fa3a3a02e 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSS3LocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSS3LocalContainerInfraService.java
@@ -22,7 +22,9 @@ import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "s3", "aws-s3" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "s3")
public class AWSS3LocalContainerInfraService extends AWSLocalContainerInfraService {
private static final Logger LOG = LoggerFactory.getLogger(AWSS3LocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerInfraService.java
index 34bfc4014ea..d859dce3aaf 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-sns" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "sns")
public class AWSSNSLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSSNSLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSQSLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSQSLocalContainerInfraService.java
index 70d54ea9238..67c93e6a50d 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSQSLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSQSLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-sqs" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "sqs")
public class AWSSQSLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSSQSLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSTSLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSTSLocalContainerInfraService.java
index 4ad73162ce9..85f9acdff1c 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSTSLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSTSLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-sts" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "sts")
public class AWSSTSLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSSTSLocalContainerInfraService() {
super(Service.STS);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerInfraService.java
index a76fb015f74..bebc22991a9 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.aws2.services;
import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
-@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-secrets-manager" })
+@InfraService(service = AWSInfraService.class,
+ description = "Local AWS Services with LocalStack",
+ serviceAlias = "aws", serviceImplementationAlias = "secrets-manager")
public class AWSSecretsManagerLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSSecretsManagerLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-azure-storage-blob/src/main/java/org/apache/camel/test/infra/azure/storage/blob/services/AzureStorageBlobLocalContainerInfraService.java b/test-infra/camel-test-infra-azure-storage-blob/src/main/java/org/apache/camel/test/infra/azure/storage/blob/services/AzureStorageBlobLocalContainerInfraService.java
index 8e0152f0471..42f077c7773 100644
--- a/test-infra/camel-test-infra-azure-storage-blob/src/main/java/org/apache/camel/test/infra/azure/storage/blob/services/AzureStorageBlobLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-azure-storage-blob/src/main/java/org/apache/camel/test/infra/azure/storage/blob/services/AzureStorageBlobLocalContainerInfraService.java
@@ -24,8 +24,9 @@ import org.apache.camel.test.infra.azure.common.services.AzureInfraService;
import org.apache.camel.test.infra.azure.common.services.AzureServices;
import org.apache.camel.test.infra.azure.common.services.AzureStorageInfraService;
-@InfraService(service = AzureInfraService.class, serviceAlias = { "azure-storage-blob", "azure" },
- serviceImplementationAlias = "storage-blob")
+@InfraService(service = AzureInfraService.class,
+ description = "Local Azure services with Azurite",
+ serviceAlias = "azure", serviceImplementationAlias = "storage-blob")
public class AzureStorageBlobLocalContainerInfraService extends AzureStorageInfraService {
@Override
diff --git a/test-infra/camel-test-infra-azure-storage-queue/src/main/java/org/apache/camel/test/infra/azure/storage/queue/services/AzureStorageQueueLocalContainerInfraService.java b/test-infra/camel-test-infra-azure-storage-queue/src/main/java/org/apache/camel/test/infra/azure/storage/queue/services/AzureStorageQueueLocalContainerInfraService.java
index 61d7f3f48de..49d1c206039 100644
--- a/test-infra/camel-test-infra-azure-storage-queue/src/main/java/org/apache/camel/test/infra/azure/storage/queue/services/AzureStorageQueueLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-azure-storage-queue/src/main/java/org/apache/camel/test/infra/azure/storage/queue/services/AzureStorageQueueLocalContainerInfraService.java
@@ -24,8 +24,9 @@ import org.apache.camel.test.infra.azure.common.services.AzureInfraService;
import org.apache.camel.test.infra.azure.common.services.AzureServices;
import org.apache.camel.test.infra.azure.common.services.AzureStorageInfraService;
-@InfraService(service = AzureInfraService.class, serviceAlias = { "azure-storage-queue", "azure" },
- serviceImplementationAlias = "storage-queue")
+@InfraService(service = AzureInfraService.class,
+ description = "Local Azure services with Azurite",
+ serviceAlias = "azure", serviceImplementationAlias = "storage-queue")
public class AzureStorageQueueLocalContainerInfraService extends AzureStorageInfraService {
@Override
diff --git a/test-infra/camel-test-infra-cassandra/src/main/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerInfraService.java b/test-infra/camel-test-infra-cassandra/src/main/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerInfraService.java
index 0f881ef8b27..eaa87960ec8 100644
--- a/test-infra/camel-test-infra-cassandra/src/main/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-cassandra/src/main/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerInfraService.java
@@ -28,7 +28,9 @@ import org.testcontainers.utility.DockerImageName;
/**
* A service for a local instance of Apache Cassandra running with TestContainers
*/
-@InfraService(service = CassandraInfraService.class, serviceAlias = { "cassandra" })
+@InfraService(service = CassandraInfraService.class,
+ description = "Apache Cassandra NoSQL Database",
+ serviceAlias = { "cassandra" })
public class CassandraLocalContainerInfraService implements CassandraInfraService, ContainerService<CassandraContainer> {
private static final Logger LOG = LoggerFactory.getLogger(CassandraLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-chatscript/src/main/java/org/apache/camel/test/infra/chatscript/services/ChatScriptLocalContainerInfraService.java b/test-infra/camel-test-infra-chatscript/src/main/java/org/apache/camel/test/infra/chatscript/services/ChatScriptLocalContainerInfraService.java
index 02213f3bddb..89d280a43b4 100644
--- a/test-infra/camel-test-infra-chatscript/src/main/java/org/apache/camel/test/infra/chatscript/services/ChatScriptLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-chatscript/src/main/java/org/apache/camel/test/infra/chatscript/services/ChatScriptLocalContainerInfraService.java
@@ -24,7 +24,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
-@InfraService(service = ChatScriptInfraService.class, serviceAlias = { "chatscript", "chat-script" })
+@InfraService(service = ChatScriptInfraService.class,
+ description = "ChatBot Engine",
+ serviceAlias = { "chatscript", "chat-script" })
public class ChatScriptLocalContainerInfraService implements ChatScriptInfraService, ContainerService<GenericContainer> {
private static final Logger LOG = LoggerFactory.getLogger(ChatScriptLocalContainerInfraService.class);
private static final int SERVICE_PORT = 1024;
diff --git a/test-infra/camel-test-infra-consul/src/main/java/org/apache/camel/test/infra/consul/services/ConsulLocalContainerInfraService.java b/test-infra/camel-test-infra-consul/src/main/java/org/apache/camel/test/infra/consul/services/ConsulLocalContainerInfraService.java
index adc85a2b3ef..b903b4aa29c 100644
--- a/test-infra/camel-test-infra-consul/src/main/java/org/apache/camel/test/infra/consul/services/ConsulLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-consul/src/main/java/org/apache/camel/test/infra/consul/services/ConsulLocalContainerInfraService.java
@@ -26,7 +26,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
-@InfraService(service = ConsulInfraService.class, serviceAlias = { "consul" })
+@InfraService(service = ConsulInfraService.class,
+ description = "Consul is a service networking solution",
+ serviceAlias = { "consul" })
public class ConsulLocalContainerInfraService implements ConsulInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "consul";
diff --git a/test-infra/camel-test-infra-couchbase/src/main/java/org/apache/camel/test/infra/couchbase/services/CouchbaseLocalContainerInfraService.java b/test-infra/camel-test-infra-couchbase/src/main/java/org/apache/camel/test/infra/couchbase/services/CouchbaseLocalContainerInfraService.java
index a892ce9ad2a..63c091eaca5 100644
--- a/test-infra/camel-test-infra-couchbase/src/main/java/org/apache/camel/test/infra/couchbase/services/CouchbaseLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-couchbase/src/main/java/org/apache/camel/test/infra/couchbase/services/CouchbaseLocalContainerInfraService.java
@@ -26,7 +26,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.couchbase.CouchbaseContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = CouchbaseInfraService.class, serviceAlias = { "couchbase" })
+@InfraService(service = CouchbaseInfraService.class,
+ description = "NoSQL database Couchbase",
+ serviceAlias = { "couchbase" })
public class CouchbaseLocalContainerInfraService implements CouchbaseInfraService, ContainerService<CouchbaseContainer> {
/*
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 ff0541c1b95..d7c649a2b0a 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
@@ -26,7 +26,9 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = CouchDbInfraService.class, serviceAlias = { "couchdb" })
+@InfraService(service = CouchDbInfraService.class,
+ description = "SQL Clustered database CouchDB",
+ serviceAlias = { "couchdb" })
public class CouchDbLocalContainerInfraService implements CouchDbInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "couchdb";
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 55d598e6503..d2fe3c47d30 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
@@ -36,7 +36,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
import org.testcontainers.elasticsearch.ElasticsearchContainer;
-@InfraService(service = ElasticSearchInfraService.class, serviceAlias = { "elasticsearch", "elastic-search" })
+@InfraService(service = ElasticSearchInfraService.class,
+ description = "NoSQL Database Elasticsearch",
+ serviceAlias = "elasticsearch")
public class ElasticSearchLocalContainerInfraService
implements ElasticSearchInfraService, ContainerService<ElasticsearchContainer> {
private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-etcd3/src/main/java/org/apache/camel/test/infra/etcd3/services/Etcd3LocalContainerInfraService.java b/test-infra/camel-test-infra-etcd3/src/main/java/org/apache/camel/test/infra/etcd3/services/Etcd3LocalContainerInfraService.java
index cd69c8c3675..f30970fa80a 100644
--- a/test-infra/camel-test-infra-etcd3/src/main/java/org/apache/camel/test/infra/etcd3/services/Etcd3LocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-etcd3/src/main/java/org/apache/camel/test/infra/etcd3/services/Etcd3LocalContainerInfraService.java
@@ -28,7 +28,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.wait.strategy.Wait;
-@InfraService(service = Etcd3InfraService.class, serviceAlias = { "etcd3" })
+@InfraService(service = Etcd3InfraService.class,
+ description = "Key Value store etcd3",
+ serviceAlias = { "etcd3" })
public class Etcd3LocalContainerInfraService implements Etcd3InfraService, ContainerService<EtcdContainer> {
public static final String CONTAINER_NAME = "etcd";
public static final int ETCD_CLIENT_PORT = 2379;
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 b59e60cc772..3b895ffaa00 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
@@ -27,7 +27,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
-@InfraService(service = FhirInfraService.class, serviceAlias = { "fhir" })
+@InfraService(service = FhirInfraService.class,
+ description = "HAPI FHIR RESTful test server",
+ serviceAlias = { "fhir" })
public class FhirLocalContainerInfraService implements FhirInfraService, ContainerService<GenericContainer> {
// needs https://github.com/hapifhir/hapi-fhir-jpaserver-starter/commit/54120f374eea5084634830d34c99a9137b22a310
public static final String CONTAINER_NAME = "fhir";
diff --git a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpEmbeddedInfraService.java b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpEmbeddedInfraService.java
index d8353764326..3d9a1c3025f 100644
--- a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpEmbeddedInfraService.java
@@ -46,7 +46,9 @@ import org.apache.ftpserver.usermanager.impl.WritePermission;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = FtpInfraService.class, serviceAlias = { "ftp" })
+@InfraService(service = FtpInfraService.class,
+ description = "Embedded FTP Server",
+ serviceAlias = { "ftp" })
public class FtpEmbeddedInfraService extends AbstractService implements FtpInfraService {
protected static final String DEFAULT_LISTENER = "default";
private static final Logger LOG = LoggerFactory.getLogger(FtpEmbeddedInfraService.class);
diff --git a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpsEmbeddedInfraService.java b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpsEmbeddedInfraService.java
index 4ef888d57f9..ab04f99ab6e 100644
--- a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpsEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpsEmbeddedInfraService.java
@@ -25,7 +25,9 @@ import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.ssl.SslConfigurationFactory;
-@InfraService(service = FtpInfraService.class, serviceAlias = { "ftps" })
+@InfraService(service = FtpInfraService.class,
+ description = "Embedded FTPS Server",
+ serviceAlias = { "ftps" })
public class FtpsEmbeddedInfraService extends FtpEmbeddedInfraService {
/**
diff --git a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/SftpEmbeddedInfraService.java b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/SftpEmbeddedInfraService.java
index f81e6522cac..6529efb77fd 100644
--- a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/SftpEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/SftpEmbeddedInfraService.java
@@ -44,7 +44,9 @@ import org.apache.sshd.sftp.server.SftpSubsystemFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = FtpInfraService.class, serviceAlias = { "sftp" })
+@InfraService(service = FtpInfraService.class,
+ description = "Embedded SFTP Server",
+ serviceAlias = { "sftp" })
public class SftpEmbeddedInfraService extends AbstractService implements FtpInfraService {
private static final Logger LOG = LoggerFactory.getLogger(SftpEmbeddedInfraService.class);
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 6cb160ad70c..f794fad90cd 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
@@ -25,7 +25,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.PubSubEmulatorContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = GooglePubSubInfraService.class, serviceAlias = { "google", "google-pub-sub" },
+@InfraService(service = GooglePubSubInfraService.class,
+ description = "Google Cloud SDK Tool",
+ serviceAlias = "google",
serviceImplementationAlias = "pub-sub")
public class GooglePubSubLocalContainerInfraService
implements GooglePubSubInfraService, ContainerService<PubSubEmulatorContainer> {
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 d92e39ba2d0..ad829a84669 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
@@ -45,7 +45,9 @@ import org.testcontainers.containers.output.OutputFrame;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.Wait;
-@InfraService(service = HashicorpVaultInfraService.class, serviceAlias = { "hashicorp-vault", "hashicorp" },
+@InfraService(service = HashicorpVaultInfraService.class,
+ description = "Vault is a tool for securely accessing secrets",
+ serviceAlias = "hashicorp",
serviceImplementationAlias = "vault")
public class HashicorpVaultLocalContainerInfraService
implements HashicorpVaultInfraService, ContainerService<GenericContainer<?>> {
diff --git a/test-infra/camel-test-infra-hazelcast/src/main/java/org/apache/camel/test/infra/hazelcast/services/HazelcastEmbeddedInfraService.java b/test-infra/camel-test-infra-hazelcast/src/main/java/org/apache/camel/test/infra/hazelcast/services/HazelcastEmbeddedInfraService.java
index 6a3ae550dc6..1af1ff86353 100644
--- a/test-infra/camel-test-infra-hazelcast/src/main/java/org/apache/camel/test/infra/hazelcast/services/HazelcastEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-hazelcast/src/main/java/org/apache/camel/test/infra/hazelcast/services/HazelcastEmbeddedInfraService.java
@@ -20,7 +20,9 @@ package org.apache.camel.test.infra.hazelcast.services;
import com.hazelcast.config.Config;
import org.apache.camel.spi.annotations.InfraService;
-@InfraService(service = HazelcastInfraService.class, serviceAlias = { "hazelcast" })
+@InfraService(service = HazelcastInfraService.class,
+ description = "In Memory Database Hazelcast",
+ serviceAlias = { "hazelcast" })
public class HazelcastEmbeddedInfraService implements HazelcastInfraService {
@Override
diff --git a/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQInfraService.java b/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQInfraService.java
index 2506c38eda9..a0acd8e06e2 100644
--- a/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQInfraService.java
+++ b/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQInfraService.java
@@ -22,7 +22,9 @@ import org.apache.camel.test.infra.hivemq.common.HiveMQProperties;
import org.testcontainers.hivemq.HiveMQContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = HiveMQInfraService.class, serviceAlias = { "hivemq", "hive-mq" })
+@InfraService(service = HiveMQInfraService.class,
+ description = "MQTT Platform HiveMQ",
+ serviceAlias = { "hivemq", "hive-mq" })
public class LocalHiveMQInfraService extends AbstractLocalHiveMQService<LocalHiveMQInfraService> {
LocalHiveMQInfraService() {
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 7ee36e269fc..0f64364b297 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
@@ -23,7 +23,9 @@ import org.testcontainers.hivemq.HiveMQContainer;
import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = HiveMQInfraService.class, serviceAlias = { "hivemq", "hive-mq" },
+@InfraService(service = HiveMQInfraService.class,
+ description = "MQTT Platform HiveMQ",
+ serviceAlias = { "hivemq", "hive-mq" },
serviceImplementationAlias = "sparkplug")
public class LocalHiveMQSparkplugTCKInfraService extends AbstractLocalHiveMQService<LocalHiveMQSparkplugTCKInfraService> {
diff --git a/test-infra/camel-test-infra-ignite/src/main/java/org/apache/camel/test/infra/ignite/services/IgniteEmbeddedInfraService.java b/test-infra/camel-test-infra-ignite/src/main/java/org/apache/camel/test/infra/ignite/services/IgniteEmbeddedInfraService.java
index d7428389178..aec3a25603d 100644
--- a/test-infra/camel-test-infra-ignite/src/main/java/org/apache/camel/test/infra/ignite/services/IgniteEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-ignite/src/main/java/org/apache/camel/test/infra/ignite/services/IgniteEmbeddedInfraService.java
@@ -32,7 +32,9 @@ import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = IgniteInfraService.class, serviceAlias = { "ignite" })
+@InfraService(service = IgniteInfraService.class,
+ description = "Distribuited Database Apache Ignite",
+ serviceAlias = { "ignite" })
public class IgniteEmbeddedInfraService implements IgniteInfraService {
private static final Logger LOG = LoggerFactory.getLogger(IgniteEmbeddedInfraService.class);
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 9baad3c9053..ab334c92090 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
@@ -30,7 +30,9 @@ import org.testcontainers.containers.output.OutputFrame;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.Wait;
-@InfraService(service = InfinispanInfraService.class, serviceAlias = { "infinispan" })
+@InfraService(service = InfinispanInfraService.class,
+ description = "Distributed Database For High‑Performance Applications With In‑Memory Speed",
+ serviceAlias = { "infinispan" })
public class InfinispanLocalContainerInfraService implements InfinispanInfraService, ContainerService<GenericContainer<?>> {
public static final String CONTAINER_NAME = "infinispan";
private static final String DEFAULT_USERNAME = "admin";
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 ef7569d49e9..e50b73494e7 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
@@ -26,7 +26,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.kafka.KafkaContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = KafkaInfraService.class, serviceAlias = "kafka")
+@InfraService(service = KafkaInfraService.class,
+ description = "Apache Kafka, Distributed event streaming platform",
+ serviceAlias = "kafka")
public class ContainerLocalKafkaInfraService implements KafkaInfraService, ContainerService<KafkaContainer> {
public static final String KAFKA3_IMAGE_NAME = LocalPropertyResolver.getProperty(
ContainerLocalKafkaInfraService.class,
diff --git a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaInfraService.java b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaInfraService.java
index 677e8b8c9a6..7803c0ab502 100644
--- a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaInfraService.java
+++ b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaInfraService.java
@@ -25,7 +25,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Network;
import org.testcontainers.redpanda.RedpandaContainer;
-@InfraService(service = KafkaInfraService.class, serviceAlias = "kafka", serviceImplementationAlias = "redpanda")
+@InfraService(service = KafkaInfraService.class,
+ description = "Apache Kafka, Distributed event streaming platform",
+ serviceAlias = "kafka", serviceImplementationAlias = "redpanda")
public class RedpandaInfraService implements KafkaInfraService, ContainerService<RedpandaContainer> {
private static final Logger LOG = LoggerFactory.getLogger(RedpandaInfraService.class);
diff --git a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/StrimziInfraService.java b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/StrimziInfraService.java
index 3803bfac220..623066ba0b9 100644
--- a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/StrimziInfraService.java
+++ b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/StrimziInfraService.java
@@ -25,7 +25,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Network;
-@InfraService(service = KafkaInfraService.class, serviceAlias = "kafka", serviceImplementationAlias = "strimzi")
+@InfraService(service = KafkaInfraService.class,
+ description = "Apache Kafka, Distributed event streaming platform",
+ serviceAlias = "kafka", serviceImplementationAlias = "strimzi")
public class StrimziInfraService implements KafkaInfraService, ContainerService<StrimziContainer> {
private static final Logger LOG = LoggerFactory.getLogger(StrimziInfraService.class);
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 066fdeb21b5..350b043ac2e 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
@@ -27,7 +27,11 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = MicroprofileLRAInfraService.class, serviceAlias = { "microprofile-lra", "microprofile" },
+@InfraService(service = MicroprofileLRAInfraService.class,
+ description = "MicroProfile LRA provides a simple, " +
+ "loosely coupled transaction model for microservices that is based on the SAGA pattern" +
+ " for distributed transaction.",
+ serviceAlias = { "microprofile" },
serviceImplementationAlias = "lra")
public class MicroprofileLRALocalContainerInfraService
implements MicroprofileLRAInfraService, ContainerService<GenericContainer> {
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 c580931c1cc..39325164df2 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
@@ -29,7 +29,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.milvus.MilvusContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = MilvusInfraService.class, serviceAlias = { "milvus" })
+@InfraService(service = MilvusInfraService.class,
+ description = "Milvus Vector Database",
+ serviceAlias = { "milvus" })
public class MilvusLocalContainerInfraService implements MilvusInfraService, ContainerService<MilvusContainer> {
private static final Logger LOG = LoggerFactory.getLogger(MilvusLocalContainerInfraService.class);
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 2e7b0fb2f09..c28003548fb 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
@@ -27,7 +27,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
-@InfraService(service = MinioInfraService.class, serviceAlias = { "minio" })
+@InfraService(service = MinioInfraService.class,
+ description = "MinIO Object Storage, S3 compatible",
+ serviceAlias = { "minio" })
public class MinioLocalContainerInfraService implements MinioInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "minio";
private static final String ACCESS_KEY;
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 15bbd95d00f..733b7ba54fc 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
@@ -26,7 +26,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.MongoDBContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = MongoDBInfraService.class, serviceAlias = { "mongodb" })
+@InfraService(service = MongoDBInfraService.class,
+ description = "MongoDB NoSql Database",
+ serviceAlias = { "mongodb" })
public class MongoDBLocalContainerInfraService implements MongoDBInfraService, ContainerService<MongoDBContainer> {
private static final Logger LOG = LoggerFactory.getLogger(MongoDBLocalContainerInfraService.class);
private static final int DEFAULT_MONGODB_PORT = 27017;
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 2d0bde91a0c..99e2d2bac70 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
@@ -27,7 +27,9 @@ import org.testcontainers.containers.FixedHostPortGenericContainer;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
-@InfraService(service = MosquittoInfraService.class, serviceAlias = { "mosquitto" })
+@InfraService(service = MosquittoInfraService.class,
+ description = "Mosquitto is a message broker that implements MQTT protocol",
+ serviceAlias = { "mosquitto" })
public class MosquittoLocalContainerInfraService implements MosquittoInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "mosquitto";
public static final int CONTAINER_PORT = 1883;
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 b1939327cdf..1fa3e8ad6fe 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
@@ -25,7 +25,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
-@InfraService(service = NatsInfraService.class, serviceAlias = { "nats" })
+@InfraService(service = NatsInfraService.class,
+ description = "Messaging Platform NATS",
+ serviceAlias = { "nats" })
public class NatsLocalContainerInfraService implements NatsInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "nats";
private static final int PORT = 4222;
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 a53aeac2cc4..c6896bab074 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
@@ -27,7 +27,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.ollama.OllamaContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = OllamaInfraService.class, serviceAlias = { "ollama" })
+@InfraService(service = OllamaInfraService.class,
+ description = "Build and run LLMs with Ollama",
+ serviceAlias = { "ollama" })
public class OllamaLocalContainerInfraService implements OllamaInfraService, ContainerService<OllamaContainer> {
private static class DefaultServiceConfiguration implements OllamaServiceConfiguration {
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 f3b2e3689b6..68978f1a00c 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
@@ -22,7 +22,9 @@ import org.apache.camel.test.infra.openldap.common.OpenldapProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = OpenldapInfraService.class, serviceAlias = { "openldap" })
+@InfraService(service = OpenldapInfraService.class,
+ description = "OpenLDAP is an implementation of the Lightweight Directory Access Protocol",
+ serviceAlias = { "openldap" })
public class OpenldapLocalContainerInfraService implements OpenldapInfraService, ContainerService<OpenLdapContainer> {
public static final int CONTAINER_PORT_LDAP = 389;
public static final int CONTAINER_PORT_LDAP_OVER_SSL = 636;
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 9ff3e51c73e..613c73894e8 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
@@ -25,7 +25,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = PostgresInfraService.class, serviceAlias = { "postgres" })
+@InfraService(service = PostgresInfraService.class,
+ description = "Postgres SQL Database",
+ serviceAlias = { "postgres" })
public class PostgresLocalContainerInfraService implements PostgresInfraService, ContainerService<PostgreSQLContainer> {
public static final String DEFAULT_POSTGRES_CONTAINER
= LocalPropertyResolver.getProperty(PostgresLocalContainerInfraService.class,
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 62946d75acf..5e268e5f34f 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
@@ -27,7 +27,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.PulsarContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = PulsarInfraService.class, serviceAlias = { "pulsar" })
+@InfraService(service = PulsarInfraService.class,
+ description = "Distributed messaging and streaming platform",
+ serviceAlias = { "pulsar" })
public class PulsarLocalContainerInfraService implements PulsarInfraService, ContainerService<PulsarContainer> {
private static final Logger LOG = LoggerFactory.getLogger(PulsarLocalContainerInfraService.class);
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 4998f3830d5..df64ddf6841 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
@@ -26,7 +26,9 @@ import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.qdrant.QdrantContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = QdrantInfraService.class, serviceAlias = { "qdrant" })
+@InfraService(service = QdrantInfraService.class,
+ description = "Vector Database and Vector Search Engine",
+ serviceAlias = { "qdrant" })
public class QdrantLocalContainerInfraService implements QdrantInfraService, ContainerService<QdrantContainer> {
public static final int HTTP_PORT = 6333;
public static final int GRPC_PORT = 6334;
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 8212e757de7..e101cef1e18 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
@@ -26,7 +26,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.RabbitMQContainer;
import org.testcontainers.utility.DockerImageName;
-@InfraService(service = RabbitMQInfraService.class, serviceAlias = { "rabbitmq" })
+@InfraService(service = RabbitMQInfraService.class,
+ description = "Messaging and streaming broker",
+ serviceAlias = { "rabbitmq" })
public class RabbitMQLocalContainerInfraService implements RabbitMQInfraService, ContainerService<RabbitMQContainer> {
private static final Logger LOG = LoggerFactory.getLogger(RabbitMQLocalContainerInfraService.class);
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 41a061e5e8e..9c1251ef14d 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
@@ -22,7 +22,9 @@ import org.apache.camel.test.infra.redis.common.RedisProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = RedisInfraService.class, serviceAlias = { "redis" })
+@InfraService(service = RedisInfraService.class,
+ description = "In Memory Database",
+ serviceAlias = { "redis" })
public class RedisLocalContainerInfraService implements RedisInfraService, ContainerService<RedisContainer> {
private static final Logger LOG = LoggerFactory.getLogger(RedisLocalContainerInfraService.class);
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 b406c6124cd..36aca171f80 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
@@ -29,7 +29,9 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Container;
import org.testcontainers.containers.Network;
-@InfraService(service = RocketMQInfraService.class, serviceAlias = { "rocketmq" })
+@InfraService(service = RocketMQInfraService.class,
+ description = "Apache RocketMQ is a distributed messaging and streaming platform",
+ serviceAlias = { "rocketmq" })
public class RocketMQContainerInfraService implements RocketMQInfraService, ContainerService<RocketMQNameserverContainer> {
private static final Logger LOG = LoggerFactory.getLogger(RocketMQContainerInfraService.class);
public static final String ROCKETMQ_VERSION = LocalPropertyResolver.getProperty(
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 d96763be8df..a6141779566 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
@@ -21,7 +21,9 @@ import org.apache.camel.util.IOHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = SmbLocalContainerInfraService.class, serviceAlias = { "smb" })
+@InfraService(service = SmbLocalContainerInfraService.class,
+ description = "SAMBA File Server",
+ serviceAlias = "smb")
public class SmbLocalContainerInfraService implements SmbInfraService {
protected static final Logger LOG = LoggerFactory.getLogger(SmbLocalContainerInfraService.class);
protected final SmbContainer container = new SmbContainer();
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 ca3b5ac8569..5784dc7d309 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
@@ -22,7 +22,9 @@ import org.apache.camel.test.infra.solr.common.SolrProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = SolrInfraService.class, serviceAlias = { "solr" })
+@InfraService(service = SolrInfraService.class,
+ description = "Apache Solr is a Search Platform",
+ serviceAlias = { "solr" })
public class SolrLocalContainerInfraService implements SolrInfraService, ContainerService<SolrContainer> {
private static final Logger LOG = LoggerFactory.getLogger(SolrLocalContainerInfraService.class);
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 9fd8a68392f..6db5574cd7b 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
@@ -27,7 +27,9 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;
import org.testcontainers.utility.MountableFile;
-@InfraService(service = TorchServeInfraService.class, serviceAlias = { "torch-serve" })
+@InfraService(service = TorchServeInfraService.class,
+ description = "TorchServe is a flexible tool for serving PyTorch",
+ serviceAlias = { "torch-serve" })
public class TorchServeLocalContainerInfraService implements TorchServeInfraService, ContainerService<GenericContainer<?>> {
private static final Logger LOG = LoggerFactory.getLogger(TorchServeLocalContainerInfraService.class);
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 b76a27bc982..aad09b7b955 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
@@ -23,7 +23,9 @@ import org.apache.camel.test.infra.xmpp.common.XmppProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = XmppInfraService.class, serviceAlias = { "xmpp" })
+@InfraService(service = XmppInfraService.class,
+ description = "Test XMPP Server",
+ serviceAlias = { "xmpp" })
public class XmppLocalContainerInfraService implements XmppInfraService, ContainerService<XmppServerContainer> {
private static final Logger LOG = LoggerFactory.getLogger(XmppLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-zookeeper/src/main/java/org/apache/camel/test/infra/zookeeper/services/ZooKeeperLocalContainerInfraService.java b/test-infra/camel-test-infra-zookeeper/src/main/java/org/apache/camel/test/infra/zookeeper/services/ZooKeeperLocalContainerInfraService.java
index dd22dcf4b82..7b89060a265 100644
--- a/test-infra/camel-test-infra-zookeeper/src/main/java/org/apache/camel/test/infra/zookeeper/services/ZooKeeperLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-zookeeper/src/main/java/org/apache/camel/test/infra/zookeeper/services/ZooKeeperLocalContainerInfraService.java
@@ -23,7 +23,9 @@ import org.apache.camel.test.infra.zookeeper.common.ZooKeeperProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@InfraService(service = ZooKeeperInfraService.class, serviceAlias = { "zookeeper" })
+@InfraService(service = ZooKeeperInfraService.class,
+ description = "Zookeeper is a server for highly reliable distributed coordination of cloud applications",
+ serviceAlias = { "zookeeper" })
public class ZooKeeperLocalContainerInfraService implements ZooKeeperInfraService, ContainerService<ZooKeeperContainer> {
private static final Logger LOG = LoggerFactory.getLogger(ZooKeeperLocalContainerInfraService.class);
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
index 63d8866e437..2becaf7f5cf 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
@@ -80,6 +80,8 @@ public class CamelTestInfraGenerateMetadataMojo extends AbstractGeneratorMojo {
infrastructureServiceModel.setAlias(Arrays.asList(av.asStringArray()));
} else if (av.name().equals("serviceImplementationAlias")) {
infrastructureServiceModel.getAliasImplementation().addAll(Arrays.asList(av.asStringArray()));
+ } else if (av.name().equals("description")) {
+ infrastructureServiceModel.setDescription(av.asString());
}
}
@@ -103,6 +105,7 @@ public class CamelTestInfraGenerateMetadataMojo extends AbstractGeneratorMojo {
private class InfrastructureServiceModel {
private String service;
+ private String description;
private String implementation;
private List<String> alias = new ArrayList<>();
private List<String> aliasImplementation = new ArrayList<>();
@@ -138,5 +141,13 @@ public class CamelTestInfraGenerateMetadataMojo extends AbstractGeneratorMojo {
public void setAliasImplementation(List<String> aliasImplementation) {
this.aliasImplementation = aliasImplementation;
}
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
}
}
diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
index 354fcce94c4..83fc356ab32 100644
--- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
@@ -42,6 +42,15 @@ public @interface InfraService {
*/
Class service();
+ /**
+ * Returns a description of this Service.
+ *
+ * This is used for documentation and tooling.
+ *
+ * @return
+ */
+ String description() default "";
+
/**
* List of names that can be used to run the service
*
(camel) 01/02: Execute test-infra services via Camel JBang
Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
fmariani pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2e8f169a398cf538c33e66db0ecfef73fe331105
Author: Croway <fe...@gmail.com>
AuthorDate: Tue Nov 19 11:53:53 2024 +0100
Execute test-infra services via Camel JBang
Add non-test-jar dependency for component test-infra
Signed-off-by: Tom Cunningham <tc...@redhat.com>
Revert "Add non-test-jar dependency for component test-infra"
This reverts commit 954da18afa17140d6302e42549b695db2318dc63.
Add non-test-jar dependency for component test-infra
CAMEL-21452 Changes to xmpp/zookeeper
CAMEL-21452 Decouple the infrastructure from the testing API
CAMEL-21452 Decouple the infrastructure from the testing API
aws
azure
cassandra
chatscript
consul
couchbase
couchdb
elasticsearch
etcd3
fhir
ftp
jms/artemis
Create a test-jar that contain main and test classes
Align all components
let camel compile
Fix langchain4j compilation
Revert Jetty test-infra
Rebase
Execute test-infra with camel jbang
Add Camel JBang command
Fix camel jbang infra run
let mvnd compile
Sort import
Remove yaml output in favor of json/table
Add javadoc
Use Camel standard workflow for generated sources
test-infra JUnit decouple documentation
Add Camel JBang Infra Docs
test infra metadata json
Use LinkedHashSet for ordering
---
components/camel-mongodb/pom.xml | 6 -
components/camel-solr/pom.xml | 1 +
components/camel-tahu/pom.xml | 6 -
.../java/org/apache/camel/test/AvailablePort.java | 52 ++
.../org/apache/camel/test/AvailablePortFinder.java | 28 +-
.../apache/camel/spi/annotations/InfraService.java | 63 +++
.../modules/ROOT/pages/camel-jbang.adoc | 78 +++
.../user-manual/modules/ROOT/pages/test-infra.adoc | 25 +-
dsl/camel-jbang/camel-jbang-core/pom.xml | 11 +
.../dsl/jbang/core/commands/CamelJBangMain.java | 6 +
.../jbang/core/commands/infra/InfraCommand.java | 55 ++
.../dsl/jbang/core/commands/infra/InfraList.java | 107 ++++
.../dsl/jbang/core/commands/infra/InfraRun.java | 149 ++++++
pom.xml | 1 +
test-infra/camel-test-infra-all/pom.xml | 563 +++++++++++++++++++++
.../resources/META-INF/test-infra-metadata.json | 1 +
.../ArangoDBLocalContainerInfraService.java | 2 +
.../artemis/services/ArtemisAMQPInfraService.java | 2 +
.../artemis/services/ArtemisMQTTInfraService.java | 2 +
.../services/ArtemisPersistentVMInfraService.java | 2 +
.../artemis/services/ArtemisVMInfraService.java | 2 +
.../AWSCloudWatchLocalContainerInfraService.java | 4 +
.../AWSConfigLocalContainerInfraService.java | 4 +
.../AWSDynamodbLocalContainerInfraService.java | 4 +
.../services/AWSEC2LocalContainerInfraService.java | 4 +
.../AWSEventBridgeLocalContainerInfraService.java | 4 +
.../services/AWSIAMLocalContainerInfraService.java | 4 +
.../services/AWSKMSLocalContainerInfraService.java | 4 +
.../AWSKinesisLocalContainerInfraService.java | 3 +
.../AWSLambdaLocalContainerInfraService.java | 4 +
.../services/AWSS3LocalContainerInfraService.java | 3 +
.../services/AWSSNSLocalContainerInfraService.java | 4 +
.../services/AWSSQSLocalContainerInfraService.java | 4 +
.../services/AWSSTSLocalContainerInfraService.java | 4 +
...WSSecretsManagerLocalContainerInfraService.java | 4 +
...AzureStorageBlobLocalContainerInfraService.java | 4 +
...zureStorageQueueLocalContainerInfraService.java | 4 +
.../CassandraLocalContainerInfraService.java | 2 +
.../ChatScriptLocalContainerInfraService.java | 2 +
.../services/ConsulLocalContainerInfraService.java | 2 +
.../CouchbaseLocalContainerInfraService.java | 2 +
.../CouchDbLocalContainerInfraService.java | 2 +
.../ElasticSearchLocalContainerInfraService.java | 2 +
.../services/Etcd3LocalContainerInfraService.java | 2 +
.../services/FhirLocalContainerInfraService.java | 2 +
.../services/embedded/FtpEmbeddedInfraService.java | 2 +
.../embedded/FtpsEmbeddedInfraService.java | 12 +-
.../embedded/SftpEmbeddedInfraService.java | 2 +
.../GooglePubSubLocalContainerInfraService.java | 3 +
.../HashicorpVaultLocalContainerInfraService.java | 3 +
.../services/HazelcastEmbeddedInfraService.java | 2 +
.../hivemq/services/LocalHiveMQInfraService.java | 2 +
.../LocalHiveMQSparkplugTCKInfraService.java | 3 +
.../services/IgniteEmbeddedInfraService.java | 2 +
.../InfinispanLocalContainerInfraService.java | 2 +
.../services/ContainerLocalKafkaInfraService.java | 2 +
.../infra/kafka/services/RedpandaInfraService.java | 2 +
.../RedpandaTransactionsEnabledContainer.java | 4 +-
.../infra/kafka/services/StrimziInfraService.java | 2 +
.../MicroprofileLRALocalContainerInfraService.java | 3 +
.../services/MilvusLocalContainerInfraService.java | 2 +
.../services/MinioLocalContainerInfraService.java | 2 +
.../MongoDBLocalContainerInfraService.java | 2 +
.../MosquittoLocalContainerInfraService.java | 2 +
.../services/NatsLocalContainerInfraService.java | 2 +
.../services/OllamaLocalContainerInfraService.java | 2 +
.../OpenldapLocalContainerInfraService.java | 2 +
.../PostgresLocalContainerInfraService.java | 6 +-
.../services/PulsarLocalContainerInfraService.java | 2 +
.../services/QdrantLocalContainerInfraService.java | 2 +
.../RabbitMQLocalContainerInfraService.java | 2 +
.../services/RedisLocalContainerInfraService.java | 2 +
.../services/RocketMQContainerInfraService.java | 2 +
.../services/SmbLocalContainerInfraService.java | 2 +
.../services/SolrLocalContainerInfraService.java | 2 +
.../TorchServeLocalContainerInfraService.java | 2 +
.../services/XmppLocalContainerInfraService.java | 2 +
.../ZooKeeperLocalContainerInfraService.java | 2 +
test-infra/pom.xml | 8 +
.../camel/itest/security/GreeterClientTest.java | 4 +-
tooling/maven/camel-package-maven-plugin/pom.xml | 5 +
.../CamelTestInfraGenerateMetadataMojo.java | 142 ++++++
.../apache/camel/spi/annotations/InfraService.java | 63 +++
83 files changed, 1496 insertions(+), 52 deletions(-)
diff --git a/components/camel-mongodb/pom.xml b/components/camel-mongodb/pom.xml
index e250c53bc1e..1d8de1ae825 100644
--- a/components/camel-mongodb/pom.xml
+++ b/components/camel-mongodb/pom.xml
@@ -66,12 +66,6 @@
</dependency>
<!-- test infra -->
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-infra-core</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test-infra-core</artifactId>
diff --git a/components/camel-solr/pom.xml b/components/camel-solr/pom.xml
index 0ada6d793b7..699a861a980 100644
--- a/components/camel-solr/pom.xml
+++ b/components/camel-solr/pom.xml
@@ -31,6 +31,7 @@
<description>Camel Solr Support</description>
<properties>
+ <skipITs.ppc64le>true</skipITs.ppc64le>
</properties>
<dependencies>
diff --git a/components/camel-tahu/pom.xml b/components/camel-tahu/pom.xml
index ff4005a4f8e..55c4d92eda7 100644
--- a/components/camel-tahu/pom.xml
+++ b/components/camel-tahu/pom.xml
@@ -172,12 +172,6 @@
</dependency>
<!-- test infra -->
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-infra-core</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test-infra-core</artifactId>
diff --git a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePort.java b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePort.java
new file mode 100644
index 00000000000..5140766b31c
--- /dev/null
+++ b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePort.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AvailablePort {
+ private static final Logger LOG = LoggerFactory.getLogger(AvailablePort.class);
+
+ /**
+ * Probe a port to see if it is free
+ *
+ * @param port an integer port number to be tested. If port is 0, then the next available port is
+ * returned.
+ * @throws IllegalStateException if the port is not free or, in case of port 0, if there are no ports available at
+ * all.
+ * @return the port number itself if the port is free or, in case of port 0, the first
+ * available port number.
+ */
+ public static int probePort(InetAddress address, int port) {
+
+ try (ServerSocket ss = new ServerSocket()) {
+ ss.setReuseAddress(true);
+ ss.bind(new InetSocketAddress(address, port), 1);
+ int probedPort = ss.getLocalPort();
+ LOG.info("Available port is -> {}", probedPort);
+ return probedPort;
+ } catch (IOException e) {
+ throw new IllegalStateException("Cannot find free port", e);
+ }
+ }
+}
diff --git a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
index 08d266309fc..459a1155e2c 100644
--- a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
+++ b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
@@ -16,10 +16,6 @@
*/
package org.apache.camel.test;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
@@ -201,29 +197,7 @@ public final class AvailablePortFinder {
* available port number.
*/
public static int probePort(int port) {
- return probePort(null, port);
- }
-
- /**
- * Probe a port to see if it is free
- *
- * @param port an integer port number to be tested. If port is 0, then the next available port is
- * returned.
- * @throws IllegalStateException if the port is not free or, in case of port 0, if there are no ports available at
- * all.
- * @return the port number itself if the port is free or, in case of port 0, the first
- * available port number.
- */
- public static int probePort(InetAddress address, int port) {
- try (ServerSocket ss = new ServerSocket()) {
- ss.setReuseAddress(true);
- ss.bind(new InetSocketAddress(address, port), 1);
- int probedPort = ss.getLocalPort();
- LOG.info("Available port is -> {}", probedPort);
- return probedPort;
- } catch (IOException e) {
- throw new IllegalStateException("Cannot find free port", e);
- }
+ return AvailablePort.probePort(null, port);
}
}
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
new file mode 100644
index 00000000000..354fcce94c4
--- /dev/null
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Marks a class as a Service that can be used by Camel JBang infra
+ *
+ * The marked class is analyzed by the mojo CamelTestInfraGenerateMetadataMojo
+ *
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ ElementType.TYPE })
+public @interface InfraService {
+
+ /**
+ * Interface that extends InfrastructureService
+ *
+ * the interface is used by Camel JBang infra run to retrieve testing information like port, endpoint, username...
+ *
+ * @return
+ */
+ Class service();
+
+ /**
+ * List of names that can be used to run the service
+ *
+ * @return
+ */
+ String[] serviceAlias();
+
+ /**
+ * Additional and optional Service name, in case of multiple Service implementations
+ *
+ * For example kafka has 3 implementations
+ *
+ * kafka - uses apache/kafka image as implementation kafka redpanda - uses redpandadata/redpanda image as
+ * implementation kafka strimzi - uses strimzi/kafka as image implementation
+ *
+ * @return
+ */
+ String[] serviceImplementationAlias() default {};
+}
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index 566bc1c61c0..ff79297617e 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -3977,3 +3977,81 @@ are downloaded to your local Maven repository `~/.m2`.
So if you find problems with running Camel JBang using what is seems like an outdated JAR, then you can
try to delete these directories or parts of it.
+
+== Infrastructure
+
+Camel JBang `infra` command can be used to `list` and `run` external services that can be used for fast prototyping and testing.
+Apache Camel test-infra Services are exposed via the `infra` command, in this way, the same infrastructure that is used to test
+Apache Camel itself, is exposed via Camel JBang, and services that are already proved to work with Apache Camel can be easily used.
+
+=== List Services
+
+Supported external services can be listed with the following command:
+
+[source,bash]
+----
+camel infra list
+----
+
+Following is the output for the above-mentioned configuration.
+
+[source,bash]
+----
+ALIAS IMPLEMENTATION
+ ignite
+ azure storage-queue
+ openldap
+ event-bridge
+ xmpp
+ kinesis
+ redis
+ ...
+----
+
+=== Run Service
+
+Supported external services can be run with the following command (Docker or Podman is required for most of the service):
+
+[source,bash]
+----
+camel infra run $SERVICE ($OPTIONAL_SERVICE_IMPLEMENTATION)
+----
+
+Once the service is up and running, information about the service are printed as json that can be easily used in the Camel Routes,
+for example:
+
+[source,bash]
+----
+$ camel infra run ftp
+
+Starting service ftp
+{
+ "getPort" : 52472,
+ "getFtpRootDir" : "file://path/to/current/directory/target/ftp/camel-test-infra-test-directory/camel-test-infra-configuration-test-directory"
+}
+To stop the execution press q
+----
+
+[source,bash]
+----
+$ camel infra run kafka redpanda
+
+Starting service kafka with implementation redpanda
+{
+ "getBootstrapServers" : "localhost:32771"
+}
+To stop the execution press q
+----
+
+[source,bash]
+----
+$ camel infra run openldap
+
+Starting service openldap
+{
+ "getPort" : 32774,
+ "getSslPort" : 32775,
+ "getHost" : "localhost"
+}
+To stop the execution press q
+----
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/test-infra.adoc b/docs/user-manual/modules/ROOT/pages/test-infra.adoc
index b1befa79242..2b2cc134def 100644
--- a/docs/user-manual/modules/ROOT/pages/test-infra.adoc
+++ b/docs/user-manual/modules/ROOT/pages/test-infra.adoc
@@ -106,13 +106,15 @@ maintenance.
==== Recommended Structure for Test Infrastructure Modules
-The service should provide an interface, named after the infrastructure being implemented, and this interface should
-extend the https://github.com/apache/camel/blob/main/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/TestService.java[TestService]
-interface. The services should try to minimize the test execution time and resource usage when running. As such,
-the https://junit.org/junit5/docs/5.1.1/api/org/junit/jupiter/api/extension/BeforeAllCallback.html[BeforeAllCallback]
-and https://junit.org/junit5/docs/5.1.1/api/org/junit/jupiter/api/extension/AfterAllCallback.html[AfterAllCallback]
-should be the preferred extensions whenever possible because they allow the instance of the infrastructure to be static
-throughout the test execution.
+The actual Service interface and implementation should be added under `src/main`, while the actual integration with JUnit
+can be added to `src/test`, in this way the classes needed to run the service (most of them, with testcontainers) are decoupled
+by JUnit and can be run separately.
+
+===== Main Sources
+
+The service should provide an interface, named after the infrastructure being implemented, and this interface should extend the
+https://github.com/apache/camel/blob/main/test-infra/camel-test-infra-common/src/main/java/org/apache/camel/test/infra/common/services/InfrastructureService.java[InfrastructureService]
+interface.
[NOTE]
====
@@ -141,6 +143,15 @@ service to choose between running as a local container or as remote instance, a
as `<name>.<parameter>`. More complex services may use the builder available through the factory classes to compose
the service accordingly.
+===== Test Sources
+
+Once the main sources are implemented, https://github.com/apache/camel/blob/main/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/services/TestService.java[TestService]
+interface can be used to integrate the actual Service implementation with JUnit and its lifecycle.
+The services should try to minimize the test execution time and resource usage when running. As such,
+the https://junit.org/junit5/docs/5.1.1/api/org/junit/jupiter/api/extension/BeforeAllCallback.html[BeforeAllCallback]
+and https://junit.org/junit5/docs/5.1.1/api/org/junit/jupiter/api/extension/AfterAllCallback.html[AfterAllCallback]
+should be the preferred extensions whenever possible because they allow the instance of the infrastructure to be static
+throughout the test execution.
==== Registering Properties
diff --git a/dsl/camel-jbang/camel-jbang-core/pom.xml b/dsl/camel-jbang/camel-jbang-core/pom.xml
index 8c29c6775c9..223607f1b03 100644
--- a/dsl/camel-jbang/camel-jbang-core/pom.xml
+++ b/dsl/camel-jbang/camel-jbang-core/pom.xml
@@ -146,6 +146,17 @@
<version>${jansi-version}</version>
</dependency>
+ <!-- test infra run -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-all</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jdk8</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-xml</artifactId>
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
index 9d470e9e0e7..05494fdcb0c 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
@@ -37,6 +37,9 @@ import org.apache.camel.dsl.jbang.core.commands.config.ConfigList;
import org.apache.camel.dsl.jbang.core.commands.config.ConfigSet;
import org.apache.camel.dsl.jbang.core.commands.config.ConfigUnset;
import org.apache.camel.dsl.jbang.core.commands.exceptionhandler.MissingPluginParameterExceptionHandler;
+import org.apache.camel.dsl.jbang.core.commands.infra.InfraCommand;
+import org.apache.camel.dsl.jbang.core.commands.infra.InfraList;
+import org.apache.camel.dsl.jbang.core.commands.infra.InfraRun;
import org.apache.camel.dsl.jbang.core.commands.plugin.PluginAdd;
import org.apache.camel.dsl.jbang.core.commands.plugin.PluginCommand;
import org.apache.camel.dsl.jbang.core.commands.plugin.PluginDelete;
@@ -161,6 +164,9 @@ public class CamelJBangMain implements Callable<Integer> {
.addSubcommand("get", new CommandLine(new VersionGet(main)))
.addSubcommand("set", new CommandLine(new VersionSet(main)))
.addSubcommand("list", new CommandLine(new VersionList(main))))
+ .addSubcommand("infra", new CommandLine(new InfraCommand(main))
+ .addSubcommand("list", new CommandLine(new InfraList(main)))
+ .addSubcommand("run", new CommandLine(new InfraRun(main))))
.setParameterExceptionHandler(new MissingPluginParameterExceptionHandler());
PluginHelper.addPlugins(commandLine, main, args);
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraCommand.java
new file mode 100644
index 00000000000..9369d9a4a76
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraCommand.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.commands.infra;
+
+import java.util.List;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "infra",
+ description = "List and Run external services for testing and prototyping")
+public class InfraCommand extends CamelCommand {
+
+ static final ObjectMapper JSON_MAPPER = new ObjectMapper();
+
+ {
+ JSON_MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+ JSON_MAPPER.registerModule(new JavaTimeModule());
+ JSON_MAPPER.registerModule(new Jdk8Module());
+ JSON_MAPPER.enable(SerializationFeature.INDENT_OUTPUT);
+ }
+
+ public InfraCommand(CamelJBangMain main) {
+ super(main);
+ }
+
+ @Override
+ public Integer doCall() throws Exception {
+ // defaults to list
+ new CommandLine(new InfraList(getMain())).execute();
+ return 0;
+ }
+
+ record TestInfraService(String service, String implementation, List<String> alias, List<String> aliasImplementation) {
+ }
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraList.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraList.java
new file mode 100644
index 00000000000..e73a3ede419
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraList.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.commands.infra;
+
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.github.freva.asciitable.AsciiTable;
+import com.github.freva.asciitable.Column;
+import com.github.freva.asciitable.HorizontalAlign;
+import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.util.json.Jsoner;
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "list", description = "Displays available external services", sortOptions = false,
+ showDefaultValues = true)
+public class InfraList extends CamelCommand {
+
+ @CommandLine.Option(names = { "--json" },
+ description = "Output in JSON Format")
+ boolean jsonOutput;
+
+ public InfraList(CamelJBangMain main) {
+ super(main);
+ }
+
+ @Override
+ public Integer doCall() throws Exception {
+ Map<String, Set<String>> services = new HashMap<>();
+
+ List<InfraCommand.TestInfraService> metadata;
+
+ try (InputStream is
+ = this.getClass().getClassLoader().getResourceAsStream("META-INF/test-infra-metadata.json")) {
+ String json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
+
+ metadata = InfraCommand.JSON_MAPPER.readValue(json, new TypeReference<List<InfraCommand.TestInfraService>>() {
+ });
+ }
+
+ List<Row> rows = new ArrayList<>(metadata.size());
+
+ for (InfraCommand.TestInfraService service : metadata) {
+ for (String alias : service.alias()) {
+ if (!services.containsKey(alias)) {
+ services.put(alias, new HashSet<>());
+ }
+
+ if (service.aliasImplementation() != null) {
+ for (String aliasImplementation : service.aliasImplementation()) {
+ services.get(alias).add(aliasImplementation);
+ }
+ }
+ }
+ }
+
+ int width = 0;
+ for (Map.Entry<String, Set<String>> entry : services.entrySet()) {
+ width = Math.max(width, entry.getKey().length());
+ rows.add(new Row(entry.getKey(), String.join(", ", entry.getValue())));
+ }
+
+ if (jsonOutput) {
+ printer().println(
+ Jsoner.serialize(
+ rows.stream().map(row -> Map.of(
+ "alias", row.alias(),
+ "aliasImplementation", row.aliasImplementation()))
+ .collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows, Arrays.asList(
+ new Column().header("ALIAS").minWidth(width + 5).dataAlign(HorizontalAlign.LEFT)
+ .with(r -> r.alias()),
+ new Column().header("IMPLEMENTATION").dataAlign(HorizontalAlign.LEFT).with(r -> r.aliasImplementation()))));
+ }
+
+ return 0;
+ }
+
+ record Row(String alias, String aliasImplementation) {
+ }
+
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
new file mode 100644
index 00000000000..e201f86e8ea
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
@@ -0,0 +1,149 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.commands.infra;
+
+import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Scanner;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.google.common.base.Strings;
+import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.test.infra.common.services.InfrastructureService;
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "run",
+ description = "Run an external service")
+public class InfraRun extends CamelCommand {
+
+ @CommandLine.Parameters(description = "Service name", arity = "1")
+ private List<String> serviceName;
+
+ @CommandLine.Option(names = { "--json" },
+ description = "Output in JSON Format")
+ boolean jsonOutput;
+
+ public InfraRun(CamelJBangMain main) {
+ super(main);
+ }
+
+ @Override
+ public Integer doCall() throws Exception {
+ if (serviceName == null || serviceName.isEmpty()) {
+ return 0;
+ }
+
+ String service = serviceName.get(0);
+ String serviceImplementation = serviceName.size() > 1 ? serviceName.get(1) : null;
+
+ run(service, serviceImplementation);
+
+ return 0;
+ }
+
+ private void run(String testService, String testServiceImplementation) throws Exception {
+ List<InfraCommand.TestInfraService> metadata;
+
+ try (InputStream is
+ = this.getClass().getClassLoader().getResourceAsStream("META-INF/test-infra-metadata.json")) {
+ String json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
+
+ metadata = InfraCommand.JSON_MAPPER.readValue(json, new TypeReference<List<InfraCommand.TestInfraService>>() {
+ });
+ }
+
+ List<InfraCommand.TestInfraService> services = metadata;
+
+ InfraCommand.TestInfraService testInfraService = services
+ .stream()
+ .filter(service -> {
+ if (testServiceImplementation != null && !testServiceImplementation.isEmpty()
+ && service.aliasImplementation() != null) {
+ return service.alias().contains(testService)
+ && service.aliasImplementation().contains(testServiceImplementation);
+ } else if (testServiceImplementation == null) {
+ return service.alias().contains(testService)
+ && (service.aliasImplementation() == null || service.aliasImplementation().isEmpty());
+ }
+
+ return false;
+ })
+ .findFirst()
+ .orElseThrow(() -> {
+ String message = ", use the list command for the available services";
+ if (testServiceImplementation != null) {
+ return new IllegalArgumentException(
+ "service " + testService + " with implementation " + testServiceImplementation + " not found"
+ + message);
+ }
+
+ return new IllegalArgumentException("service " + testService + " not found" + message);
+ });
+
+ String serviceInterface = testInfraService.service();
+ String serviceImpl = testInfraService.implementation();
+
+ if (!jsonOutput) {
+ String prefix = "";
+ if (!Strings.isNullOrEmpty(testServiceImplementation)) {
+ prefix = " with implementation " + testServiceImplementation;
+ }
+ printer().println("Starting service " + testService + prefix);
+ }
+
+ InfrastructureService actualService = (InfrastructureService) Class.forName(serviceImpl)
+ .getDeclaredConstructor(null)
+ .newInstance(null);
+
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+ if (actualService != null) {
+ try {
+ actualService.shutdown();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }));
+
+ actualService.initialize();
+
+ Method[] serviceMethods = Class.forName(serviceInterface).getDeclaredMethods();
+ HashMap properties = new HashMap();
+ for (Method method : serviceMethods) {
+ if (method.getParameterCount() == 0 && !method.getName().contains("registerProperties")) {
+ Object value = method.invoke(actualService);
+ properties.put(method.getName(), method.invoke(actualService));
+ }
+ }
+
+ printer().println(InfraCommand.JSON_MAPPER.writeValueAsString(properties));
+
+ if (!jsonOutput) {
+ printer().println("To stop the execution press q");
+ }
+ Scanner sc = new Scanner(System.in).useDelimiter("\n");
+
+ if (sc.nextLine().equals("q")) {
+ actualService.shutdown();
+ sc.close();
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index 83683b71d71..7a87c2f02b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -346,6 +346,7 @@
<exclude>**/FileSplitXPathCharsetTest-input.xml</exclude>
<exclude>**/.camel-jbang-run/**</exclude>
<exclude>**/camel-jbang-run.properties</exclude>
+ <exclude>**/javax.annotations.processing.Processor</exclude>
</excludes>
</licenseSet>
</licenseSets>
diff --git a/test-infra/camel-test-infra-all/pom.xml b/test-infra/camel-test-infra-all/pom.xml
new file mode 100644
index 00000000000..22ec93474db
--- /dev/null
+++ b/test-infra/camel-test-infra-all/pom.xml
@@ -0,0 +1,563 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>test-infra</artifactId>
+ <version>4.10.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>camel-test-infra-all</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-kafka</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-aws-v2</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-cassandra</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-elasticsearch</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-couchbase</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-mongodb</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-rabbitmq</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-azure-storage-blob</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-azure-storage-datalake</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-azure-storage-queue</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-artemis</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-dispatch-router</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-arangodb</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-google-pubsub</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-infinispan</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-microprofile-lra</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-minio</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-nats</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-pulsar</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-redis</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-rocketmq</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-solr</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-xmpp</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-zookeeper</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-postgres</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-couchdb</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-ftp</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-fhir</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-mosquitto</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-chatscript</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-openldap</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-ignite</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-hashicorp-vault</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-jetty</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-etcd3</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-opensearch</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-smb</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-qdrant</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-ollama</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-milvus</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-hazelcast</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-hivemq</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-torchserve</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-tensorflow-serving</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.smallrye</groupId>
+ <artifactId>jandex-maven-plugin</artifactId>
+ <version>${jandex-version}</version>
+ <executions>
+ <execution>
+ <id>make-index</id>
+ <goals>
+ <goal>jandex</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ <configuration>
+ <fileSets>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-arangodb</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-kafka</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-aws-v2</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-cassandra</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-elasticsearch</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-couchbase</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-mongodb</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-rabbitmq</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-azure-storage-blob</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-azure-storage-datalake</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-azure-storage-queue</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-artemis</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-google-pubsub</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-infinispan</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-microprofile-lra</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-minio</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-nats</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-pulsar</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-redis</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-rocketmq</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-solr</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-xmpp</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-zookeeper</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-postgres</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-couchdb</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-ftp</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-fhir</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-mosquitto</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-chatscript</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-openldap</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-ignite</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-hashicorp-vault</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-etcd3</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-opensearch</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-smb</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-qdrant</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-ollama</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-milvus</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-milvus</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-hazelcast</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-torchserve</artifactId>
+ </dependency>
+ </fileSet>
+ <fileSet>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-hivemq</artifactId>
+ </dependency>
+ </fileSet>
+ </fileSets>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-package-maven-plugin</artifactId>
+ <version>${project.version}</version>
+ <executions>
+ <execution>
+ <id>test-infra-generate-metadata</id>
+ <goals>
+ <goal>test-infra-generate-metadata</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-resource</goal>
+ </goals>
+ <configuration>
+ <resources>
+ <resource>
+ <directory>src/generated/resources</directory>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/test-infra/camel-test-infra-all/src/generated/resources/META-INF/test-infra-metadata.json b/test-infra/camel-test-infra-all/src/generated/resources/META-INF/test-infra-metadata.json
new file mode 100644
index 00000000000..ff2c7f144fe
--- /dev/null
+++ b/test-infra/camel-test-infra-all/src/generated/resources/META-INF/test-infra-metadata.json
@@ -0,0 +1 @@
+[{"service":"org.apache.camel.test.infra.milvus.services.MilvusInfraService","implementation":"org.apache.camel.test.infra.milvus.services.MilvusLocalContainerInfraService","alias":["milvus"],"aliasImplementation":[]},{"service":"org.apache.camel.test.infra.aws.common.services.AWSInfraService","implementation":"org.apache.camel.test.infra.aws2.services.AWSKinesisLocalContainerInfraService","alias":["kinesis","aws-kinesis"],"aliasImplementation":[]},{"service":"org.apache.camel.test.infra [...]
\ No newline at end of file
diff --git a/test-infra/camel-test-infra-arangodb/src/main/java/org/apache/camel/test/infra/arangodb/services/ArangoDBLocalContainerInfraService.java b/test-infra/camel-test-infra-arangodb/src/main/java/org/apache/camel/test/infra/arangodb/services/ArangoDBLocalContainerInfraService.java
index c7f787a1602..5ba269b5df5 100644
--- a/test-infra/camel-test-infra-arangodb/src/main/java/org/apache/camel/test/infra/arangodb/services/ArangoDBLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-arangodb/src/main/java/org/apache/camel/test/infra/arangodb/services/ArangoDBLocalContainerInfraService.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.test.infra.arangodb.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.arangodb.common.ArangoDBProperties;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
import org.apache.camel.test.infra.common.services.ContainerEnvironmentUtil;
@@ -23,6 +24,7 @@ import org.apache.camel.test.infra.common.services.ContainerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = ArangoDBInfraService.class, serviceAlias = "arangodb")
public class ArangoDBLocalContainerInfraService implements ArangoDBInfraService, ContainerService<ArangoDbContainer> {
private static final Logger LOG = LoggerFactory.getLogger(ArangoDBLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPInfraService.java b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPInfraService.java
index a1e1827464e..fbdd20cc3f6 100644
--- a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPInfraService.java
+++ b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPInfraService.java
@@ -29,9 +29,11 @@ import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
import org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager;
import org.apache.activemq.artemis.spi.core.security.jaas.InVMLoginModule;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.artemis.common.ArtemisProperties;
import org.apache.camel.test.infra.artemis.common.ArtemisRunException;
+@InfraService(service = ArtemisInfraService.class, serviceAlias = "artemis", serviceImplementationAlias = "amqp")
public class ArtemisAMQPInfraService extends AbstractArtemisEmbeddedService {
private String brokerURL;
diff --git a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTInfraService.java b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTInfraService.java
index cf61668f32f..05a6aff6327 100644
--- a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTInfraService.java
+++ b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTInfraService.java
@@ -19,8 +19,10 @@ package org.apache.camel.test.infra.artemis.services;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.artemis.common.ArtemisRunException;
+@InfraService(service = ArtemisInfraService.class, serviceAlias = "artemis", serviceImplementationAlias = "mqtt")
public class ArtemisMQTTInfraService extends AbstractArtemisEmbeddedService {
private String brokerURL;
diff --git a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMInfraService.java b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMInfraService.java
index 8fdf1ceb310..bc2b65721c0 100644
--- a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMInfraService.java
+++ b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMInfraService.java
@@ -21,8 +21,10 @@ import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.server.JournalType;
import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.artemis.common.ArtemisRunException;
+@InfraService(service = ArtemisInfraService.class, serviceAlias = "artemis", serviceImplementationAlias = "persistent")
public class ArtemisPersistentVMInfraService extends AbstractArtemisEmbeddedService {
private String brokerURL;
diff --git a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisVMInfraService.java b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisVMInfraService.java
index d28631ba4ff..e020aec6cd7 100644
--- a/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisVMInfraService.java
+++ b/test-infra/camel-test-infra-artemis/src/main/java/org/apache/camel/test/infra/artemis/services/ArtemisVMInfraService.java
@@ -20,10 +20,12 @@ import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.artemis.common.ArtemisRunException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = ArtemisInfraService.class, serviceAlias = "artemis")
public class ArtemisVMInfraService extends AbstractArtemisEmbeddedService {
private static final Logger LOG = LoggerFactory.getLogger(ArtemisVMInfraService.class);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSCloudWatchLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSCloudWatchLocalContainerInfraService.java
index 0dd22aa32cc..6378345af99 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSCloudWatchLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSCloudWatchLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "cloud-watch", "aws-cloud-watch" })
public class AWSCloudWatchLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSCloudWatchLocalContainerInfraService() {
super(Service.CLOUD_WATCH);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSConfigLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSConfigLocalContainerInfraService.java
index eb1aa190502..444d6a45b3e 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSConfigLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSConfigLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-config" })
public class AWSConfigLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSConfigLocalContainerInfraService() {
super(Service.CONFIG);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSDynamodbLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSDynamodbLocalContainerInfraService.java
index 4f929663717..db80b28dc7a 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSDynamodbLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSDynamodbLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "dynamodb", "aws-dynamo-db", "dynamo-db" })
public class AWSDynamodbLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSDynamodbLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEC2LocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEC2LocalContainerInfraService.java
index 23c132f6db0..5a6bae4c830 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEC2LocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEC2LocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "ec2", "aws-ec2" })
public class AWSEC2LocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSEC2LocalContainerInfraService() {
super(Service.EC2);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEventBridgeLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEventBridgeLocalContainerInfraService.java
index d06e103c87d..9a294ec67e2 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEventBridgeLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSEventBridgeLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "event-bridge", "aws-event-bridge" })
public class AWSEventBridgeLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSEventBridgeLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSIAMLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSIAMLocalContainerInfraService.java
index 18d7ac62a4b..aa76aa0aeff 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSIAMLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSIAMLocalContainerInfraService.java
@@ -16,6 +16,10 @@
*/
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-iam" })
public class AWSIAMLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSIAMLocalContainerInfraService() {
super(Service.IAM);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKMSLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKMSLocalContainerInfraService.java
index 490af2bf547..492a2c50bc7 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKMSLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKMSLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-kms" })
public class AWSKMSLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSKMSLocalContainerInfraService() {
super(Service.KMS);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java
index 253d5c2c227..e46872181e5 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSKinesisLocalContainerInfraService.java
@@ -17,10 +17,13 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.core.SdkSystemSetting;
+@InfraService(service = AWSInfraService.class, serviceAlias = { "kinesis", "aws-kinesis" })
public class AWSKinesisLocalContainerInfraService extends AWSLocalContainerInfraService {
private static final Logger LOG = LoggerFactory.getLogger(AWSKinesisLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLambdaLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLambdaLocalContainerInfraService.java
index d8518d7d87d..69feb90e07b 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLambdaLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSLambdaLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "lambda", "aws-lambda" })
public class AWSLambdaLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSLambdaLocalContainerInfraService() {
super(Service.LAMBDA);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSS3LocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSS3LocalContainerInfraService.java
index 4548812e7b3..c7aa0c262b9 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSS3LocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSS3LocalContainerInfraService.java
@@ -17,9 +17,12 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = AWSInfraService.class, serviceAlias = { "s3", "aws-s3" })
public class AWSS3LocalContainerInfraService extends AWSLocalContainerInfraService {
private static final Logger LOG = LoggerFactory.getLogger(AWSS3LocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerInfraService.java
index 1f6d55e53b2..34bfc4014ea 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-sns" })
public class AWSSNSLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSSNSLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSQSLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSQSLocalContainerInfraService.java
index 9e8d725531f..70d54ea9238 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSQSLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSQSLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-sqs" })
public class AWSSQSLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSSQSLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSTSLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSTSLocalContainerInfraService.java
index 82399f4244c..4ad73162ce9 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSTSLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSTSLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-sts" })
public class AWSSTSLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSSTSLocalContainerInfraService() {
super(Service.STS);
diff --git a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerInfraService.java b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerInfraService.java
index d2f319e7cea..a76fb015f74 100644
--- a/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/main/java/org/apache/camel/test/infra/aws2/services/AWSSecretsManagerLocalContainerInfraService.java
@@ -17,6 +17,10 @@
package org.apache.camel.test.infra.aws2.services;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.aws.common.services.AWSInfraService;
+
+@InfraService(service = AWSInfraService.class, serviceAlias = { "aws-secrets-manager" })
public class AWSSecretsManagerLocalContainerInfraService extends AWSLocalContainerInfraService {
public AWSSecretsManagerLocalContainerInfraService() {
diff --git a/test-infra/camel-test-infra-azure-storage-blob/src/main/java/org/apache/camel/test/infra/azure/storage/blob/services/AzureStorageBlobLocalContainerInfraService.java b/test-infra/camel-test-infra-azure-storage-blob/src/main/java/org/apache/camel/test/infra/azure/storage/blob/services/AzureStorageBlobLocalContainerInfraService.java
index 39e8af092ec..8e0152f0471 100644
--- a/test-infra/camel-test-infra-azure-storage-blob/src/main/java/org/apache/camel/test/infra/azure/storage/blob/services/AzureStorageBlobLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-azure-storage-blob/src/main/java/org/apache/camel/test/infra/azure/storage/blob/services/AzureStorageBlobLocalContainerInfraService.java
@@ -17,11 +17,15 @@
package org.apache.camel.test.infra.azure.storage.blob.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.azure.common.AzureConfigs;
import org.apache.camel.test.infra.azure.common.AzureCredentialsHolder;
+import org.apache.camel.test.infra.azure.common.services.AzureInfraService;
import org.apache.camel.test.infra.azure.common.services.AzureServices;
import org.apache.camel.test.infra.azure.common.services.AzureStorageInfraService;
+@InfraService(service = AzureInfraService.class, serviceAlias = { "azure-storage-blob", "azure" },
+ serviceImplementationAlias = "storage-blob")
public class AzureStorageBlobLocalContainerInfraService extends AzureStorageInfraService {
@Override
diff --git a/test-infra/camel-test-infra-azure-storage-queue/src/main/java/org/apache/camel/test/infra/azure/storage/queue/services/AzureStorageQueueLocalContainerInfraService.java b/test-infra/camel-test-infra-azure-storage-queue/src/main/java/org/apache/camel/test/infra/azure/storage/queue/services/AzureStorageQueueLocalContainerInfraService.java
index 6e005fe9750..61d7f3f48de 100644
--- a/test-infra/camel-test-infra-azure-storage-queue/src/main/java/org/apache/camel/test/infra/azure/storage/queue/services/AzureStorageQueueLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-azure-storage-queue/src/main/java/org/apache/camel/test/infra/azure/storage/queue/services/AzureStorageQueueLocalContainerInfraService.java
@@ -17,11 +17,15 @@
package org.apache.camel.test.infra.azure.storage.queue.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.azure.common.AzureConfigs;
import org.apache.camel.test.infra.azure.common.AzureCredentialsHolder;
+import org.apache.camel.test.infra.azure.common.services.AzureInfraService;
import org.apache.camel.test.infra.azure.common.services.AzureServices;
import org.apache.camel.test.infra.azure.common.services.AzureStorageInfraService;
+@InfraService(service = AzureInfraService.class, serviceAlias = { "azure-storage-queue", "azure" },
+ serviceImplementationAlias = "storage-queue")
public class AzureStorageQueueLocalContainerInfraService extends AzureStorageInfraService {
@Override
diff --git a/test-infra/camel-test-infra-cassandra/src/main/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerInfraService.java b/test-infra/camel-test-infra-cassandra/src/main/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerInfraService.java
index 79dd472f5d8..0f881ef8b27 100644
--- a/test-infra/camel-test-infra-cassandra/src/main/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-cassandra/src/main/java/org/apache/camel/test/infra/cassandra/services/CassandraLocalContainerInfraService.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.test.infra.cassandra.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.cassandra.common.CassandraProperties;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
import org.apache.camel.test.infra.common.services.ContainerService;
@@ -27,6 +28,7 @@ import org.testcontainers.utility.DockerImageName;
/**
* A service for a local instance of Apache Cassandra running with TestContainers
*/
+@InfraService(service = CassandraInfraService.class, serviceAlias = { "cassandra" })
public class CassandraLocalContainerInfraService implements CassandraInfraService, ContainerService<CassandraContainer> {
private static final Logger LOG = LoggerFactory.getLogger(CassandraLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-chatscript/src/main/java/org/apache/camel/test/infra/chatscript/services/ChatScriptLocalContainerInfraService.java b/test-infra/camel-test-infra-chatscript/src/main/java/org/apache/camel/test/infra/chatscript/services/ChatScriptLocalContainerInfraService.java
index 7caf76f06aa..02213f3bddb 100644
--- a/test-infra/camel-test-infra-chatscript/src/main/java/org/apache/camel/test/infra/chatscript/services/ChatScriptLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-chatscript/src/main/java/org/apache/camel/test/infra/chatscript/services/ChatScriptLocalContainerInfraService.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.test.infra.chatscript.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.chatscript.common.ChatScriptProperties;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
import org.apache.camel.test.infra.common.services.ContainerService;
@@ -23,6 +24,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
+@InfraService(service = ChatScriptInfraService.class, serviceAlias = { "chatscript", "chat-script" })
public class ChatScriptLocalContainerInfraService implements ChatScriptInfraService, ContainerService<GenericContainer> {
private static final Logger LOG = LoggerFactory.getLogger(ChatScriptLocalContainerInfraService.class);
private static final int SERVICE_PORT = 1024;
diff --git a/test-infra/camel-test-infra-consul/src/main/java/org/apache/camel/test/infra/consul/services/ConsulLocalContainerInfraService.java b/test-infra/camel-test-infra-consul/src/main/java/org/apache/camel/test/infra/consul/services/ConsulLocalContainerInfraService.java
index e8a5daa72ef..adc85a2b3ef 100644
--- a/test-infra/camel-test-infra-consul/src/main/java/org/apache/camel/test/infra/consul/services/ConsulLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-consul/src/main/java/org/apache/camel/test/infra/consul/services/ConsulLocalContainerInfraService.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.test.infra.consul.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.consul.common.ConsulProperties;
@@ -25,6 +26,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
+@InfraService(service = ConsulInfraService.class, serviceAlias = { "consul" })
public class ConsulLocalContainerInfraService implements ConsulInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "consul";
diff --git a/test-infra/camel-test-infra-couchbase/src/main/java/org/apache/camel/test/infra/couchbase/services/CouchbaseLocalContainerInfraService.java b/test-infra/camel-test-infra-couchbase/src/main/java/org/apache/camel/test/infra/couchbase/services/CouchbaseLocalContainerInfraService.java
index 4df4d3fe6ee..a892ce9ad2a 100644
--- a/test-infra/camel-test-infra-couchbase/src/main/java/org/apache/camel/test/infra/couchbase/services/CouchbaseLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-couchbase/src/main/java/org/apache/camel/test/infra/couchbase/services/CouchbaseLocalContainerInfraService.java
@@ -17,6 +17,7 @@
package org.apache.camel.test.infra.couchbase.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.couchbase.common.CouchbaseProperties;
@@ -25,6 +26,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.couchbase.CouchbaseContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = CouchbaseInfraService.class, serviceAlias = { "couchbase" })
public class CouchbaseLocalContainerInfraService implements CouchbaseInfraService, ContainerService<CouchbaseContainer> {
/*
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 036b72437d7..ff0541c1b95 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
@@ -16,6 +16,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.ContainerService;
import org.apache.camel.test.infra.couchdb.common.CouchDbProperties;
@@ -25,6 +26,7 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = CouchDbInfraService.class, serviceAlias = { "couchdb" })
public class CouchDbLocalContainerInfraService implements CouchDbInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "couchdb";
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 dcbf471892b..55d598e6503 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
@@ -26,6 +26,7 @@ import java.util.Optional;
import javax.net.ssl.SSLContext;
+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;
@@ -35,6 +36,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
import org.testcontainers.elasticsearch.ElasticsearchContainer;
+@InfraService(service = ElasticSearchInfraService.class, serviceAlias = { "elasticsearch", "elastic-search" })
public class ElasticSearchLocalContainerInfraService
implements ElasticSearchInfraService, ContainerService<ElasticsearchContainer> {
private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-etcd3/src/main/java/org/apache/camel/test/infra/etcd3/services/Etcd3LocalContainerInfraService.java b/test-infra/camel-test-infra-etcd3/src/main/java/org/apache/camel/test/infra/etcd3/services/Etcd3LocalContainerInfraService.java
index f2828ee0fcb..cd69c8c3675 100644
--- a/test-infra/camel-test-infra-etcd3/src/main/java/org/apache/camel/test/infra/etcd3/services/Etcd3LocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-etcd3/src/main/java/org/apache/camel/test/infra/etcd3/services/Etcd3LocalContainerInfraService.java
@@ -20,6 +20,7 @@ import java.util.List;
import java.util.UUID;
import io.etcd.jetcd.launcher.EtcdContainer;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.etcd3.common.Etcd3Properties;
@@ -27,6 +28,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.wait.strategy.Wait;
+@InfraService(service = Etcd3InfraService.class, serviceAlias = { "etcd3" })
public class Etcd3LocalContainerInfraService implements Etcd3InfraService, ContainerService<EtcdContainer> {
public static final String CONTAINER_NAME = "etcd";
public static final int ETCD_CLIENT_PORT = 2379;
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 7be625650cd..b59e60cc772 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
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.fhir.services;
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.ContainerService;
import org.apache.camel.test.infra.fhir.common.FhirProperties;
@@ -26,6 +27,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
+@InfraService(service = FhirInfraService.class, serviceAlias = { "fhir" })
public class FhirLocalContainerInfraService implements FhirInfraService, ContainerService<GenericContainer> {
// needs https://github.com/hapifhir/hapi-fhir-jpaserver-starter/commit/54120f374eea5084634830d34c99a9137b22a310
public static final String CONTAINER_NAME = "fhir";
diff --git a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpEmbeddedInfraService.java b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpEmbeddedInfraService.java
index 1827047ffb5..d8353764326 100644
--- a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpEmbeddedInfraService.java
@@ -24,6 +24,7 @@ import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.services.AbstractService;
import org.apache.camel.test.infra.ftp.common.FtpProperties;
import org.apache.camel.test.infra.ftp.services.FtpInfraService;
@@ -45,6 +46,7 @@ import org.apache.ftpserver.usermanager.impl.WritePermission;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = FtpInfraService.class, serviceAlias = { "ftp" })
public class FtpEmbeddedInfraService extends AbstractService implements FtpInfraService {
protected static final String DEFAULT_LISTENER = "default";
private static final Logger LOG = LoggerFactory.getLogger(FtpEmbeddedInfraService.class);
diff --git a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpsEmbeddedInfraService.java b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpsEmbeddedInfraService.java
index 0eb7b6420a9..4ef888d57f9 100644
--- a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpsEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/FtpsEmbeddedInfraService.java
@@ -19,13 +19,21 @@ package org.apache.camel.test.infra.ftp.services.embedded;
import java.io.File;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.test.infra.ftp.services.FtpInfraService;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.ssl.SslConfigurationFactory;
+@InfraService(service = FtpInfraService.class, serviceAlias = { "ftps" })
public class FtpsEmbeddedInfraService extends FtpEmbeddedInfraService {
- public FtpsEmbeddedInfraService(EmbeddedConfigurationBuilder embeddedConfigurationBuilder) {
- super(EmbeddedConfigurationBuilder.defaultFtpsConfigurationTemplate());
+
+ /**
+ * Use a default constructor with a default security configuration for camel jbang
+ */
+ public FtpsEmbeddedInfraService() {
+ super(EmbeddedConfigurationBuilder.defaultFtpsConfigurationTemplate()
+ .withSecurityConfiguration(false, "TLSv1.3", true));
}
public FtpsEmbeddedInfraService(EmbeddedConfiguration.SecurityConfiguration securityConfiguration) {
diff --git a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/SftpEmbeddedInfraService.java b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/SftpEmbeddedInfraService.java
index 016d6609c79..f81e6522cac 100644
--- a/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/SftpEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-ftp/src/main/java/org/apache/camel/test/infra/ftp/services/embedded/SftpEmbeddedInfraService.java
@@ -27,6 +27,7 @@ import java.util.Collections;
import java.util.List;
import java.util.function.BiConsumer;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.services.AbstractService;
import org.apache.camel.test.infra.ftp.common.FtpProperties;
import org.apache.camel.test.infra.ftp.services.FtpInfraService;
@@ -43,6 +44,7 @@ import org.apache.sshd.sftp.server.SftpSubsystemFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = FtpInfraService.class, serviceAlias = { "sftp" })
public class SftpEmbeddedInfraService extends AbstractService implements FtpInfraService {
private static final Logger LOG = LoggerFactory.getLogger(SftpEmbeddedInfraService.class);
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 4d0677fa3c2..6cb160ad70c 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
@@ -16,6 +16,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.ContainerService;
import org.apache.camel.test.infra.google.pubsub.common.GooglePubSubProperties;
@@ -24,6 +25,8 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.PubSubEmulatorContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = GooglePubSubInfraService.class, serviceAlias = { "google", "google-pub-sub" },
+ serviceImplementationAlias = "pub-sub")
public class GooglePubSubLocalContainerInfraService
implements GooglePubSubInfraService, ContainerService<PubSubEmulatorContainer> {
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 9b959ad6228..d92e39ba2d0 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
@@ -34,6 +34,7 @@ package org.apache.camel.test.infra.hashicorp.vault.services;
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.ContainerService;
import org.apache.camel.test.infra.hashicorp.vault.common.HashicorpVaultProperties;
@@ -44,6 +45,8 @@ import org.testcontainers.containers.output.OutputFrame;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.Wait;
+@InfraService(service = HashicorpVaultInfraService.class, serviceAlias = { "hashicorp-vault", "hashicorp" },
+ serviceImplementationAlias = "vault")
public class HashicorpVaultLocalContainerInfraService
implements HashicorpVaultInfraService, ContainerService<GenericContainer<?>> {
public static final String CONTAINER_NAME = "hashicorp-vault";
diff --git a/test-infra/camel-test-infra-hazelcast/src/main/java/org/apache/camel/test/infra/hazelcast/services/HazelcastEmbeddedInfraService.java b/test-infra/camel-test-infra-hazelcast/src/main/java/org/apache/camel/test/infra/hazelcast/services/HazelcastEmbeddedInfraService.java
index 53ce2392fa9..6a3ae550dc6 100644
--- a/test-infra/camel-test-infra-hazelcast/src/main/java/org/apache/camel/test/infra/hazelcast/services/HazelcastEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-hazelcast/src/main/java/org/apache/camel/test/infra/hazelcast/services/HazelcastEmbeddedInfraService.java
@@ -18,7 +18,9 @@
package org.apache.camel.test.infra.hazelcast.services;
import com.hazelcast.config.Config;
+import org.apache.camel.spi.annotations.InfraService;
+@InfraService(service = HazelcastInfraService.class, serviceAlias = { "hazelcast" })
public class HazelcastEmbeddedInfraService implements HazelcastInfraService {
@Override
diff --git a/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQInfraService.java b/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQInfraService.java
index 694966d9f81..2506c38eda9 100644
--- a/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQInfraService.java
+++ b/test-infra/camel-test-infra-hivemq/src/main/java/org/apache/camel/test/infra/hivemq/services/LocalHiveMQInfraService.java
@@ -16,11 +16,13 @@
*/
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.hivemq.common.HiveMQProperties;
import org.testcontainers.hivemq.HiveMQContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = HiveMQInfraService.class, serviceAlias = { "hivemq", "hive-mq" })
public class LocalHiveMQInfraService extends AbstractLocalHiveMQService<LocalHiveMQInfraService> {
LocalHiveMQInfraService() {
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 afa19f0acb8..7ee36e269fc 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
@@ -16,12 +16,15 @@
*/
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.hivemq.common.HiveMQProperties;
import org.testcontainers.hivemq.HiveMQContainer;
import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = HiveMQInfraService.class, serviceAlias = { "hivemq", "hive-mq" },
+ serviceImplementationAlias = "sparkplug")
public class LocalHiveMQSparkplugTCKInfraService extends AbstractLocalHiveMQService<LocalHiveMQSparkplugTCKInfraService> {
LocalHiveMQSparkplugTCKInfraService() {
diff --git a/test-infra/camel-test-infra-ignite/src/main/java/org/apache/camel/test/infra/ignite/services/IgniteEmbeddedInfraService.java b/test-infra/camel-test-infra-ignite/src/main/java/org/apache/camel/test/infra/ignite/services/IgniteEmbeddedInfraService.java
index 90b6524cac8..d7428389178 100644
--- a/test-infra/camel-test-infra-ignite/src/main/java/org/apache/camel/test/infra/ignite/services/IgniteEmbeddedInfraService.java
+++ b/test-infra/camel-test-infra-ignite/src/main/java/org/apache/camel/test/infra/ignite/services/IgniteEmbeddedInfraService.java
@@ -20,6 +20,7 @@ package org.apache.camel.test.infra.ignite.services;
import java.util.Collections;
import java.util.UUID;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -31,6 +32,7 @@ import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = IgniteInfraService.class, serviceAlias = { "ignite" })
public class IgniteEmbeddedInfraService implements IgniteInfraService {
private static final Logger LOG = LoggerFactory.getLogger(IgniteEmbeddedInfraService.class);
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 555e96ff481..9baad3c9053 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
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.infinispan.services;
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.ContainerService;
import org.apache.camel.test.infra.infinispan.common.InfinispanProperties;
@@ -29,6 +30,7 @@ import org.testcontainers.containers.output.OutputFrame;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.Wait;
+@InfraService(service = InfinispanInfraService.class, serviceAlias = { "infinispan" })
public class InfinispanLocalContainerInfraService implements InfinispanInfraService, ContainerService<GenericContainer<?>> {
public static final String CONTAINER_NAME = "infinispan";
private static final String DEFAULT_USERNAME = "admin";
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 0d7e48ce72c..ef7569d49e9 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
@@ -17,6 +17,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.ContainerService;
import org.apache.camel.test.infra.kafka.common.KafkaProperties;
@@ -25,6 +26,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.kafka.KafkaContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = KafkaInfraService.class, serviceAlias = "kafka")
public class ContainerLocalKafkaInfraService implements KafkaInfraService, ContainerService<KafkaContainer> {
public static final String KAFKA3_IMAGE_NAME = LocalPropertyResolver.getProperty(
ContainerLocalKafkaInfraService.class,
diff --git a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaInfraService.java b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaInfraService.java
index fb0a97e97bc..677e8b8c9a6 100644
--- a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaInfraService.java
+++ b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaInfraService.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.test.infra.kafka.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.TestUtils;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.kafka.common.KafkaProperties;
@@ -24,6 +25,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Network;
import org.testcontainers.redpanda.RedpandaContainer;
+@InfraService(service = KafkaInfraService.class, serviceAlias = "kafka", serviceImplementationAlias = "redpanda")
public class RedpandaInfraService implements KafkaInfraService, ContainerService<RedpandaContainer> {
private static final Logger LOG = LoggerFactory.getLogger(RedpandaInfraService.class);
diff --git a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaTransactionsEnabledContainer.java b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaTransactionsEnabledContainer.java
index 91d2adc9850..51b543d2486 100644
--- a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaTransactionsEnabledContainer.java
+++ b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/RedpandaTransactionsEnabledContainer.java
@@ -21,6 +21,7 @@ import org.apache.camel.test.infra.common.LocalPropertyResolver;
import org.apache.camel.test.infra.kafka.common.KafkaProperties;
import org.testcontainers.images.builder.Transferable;
import org.testcontainers.redpanda.RedpandaContainer;
+import org.testcontainers.utility.DockerImageName;
public class RedpandaTransactionsEnabledContainer extends RedpandaContainer {
public static final String REDPANDA_CONTAINER = LocalPropertyResolver.getProperty(
@@ -29,7 +30,8 @@ public class RedpandaTransactionsEnabledContainer extends RedpandaContainer {
public static final int REDPANDA_PORT = 9092;
public RedpandaTransactionsEnabledContainer(String image) {
- super(image);
+ super(DockerImageName.parse(System.getProperty(KafkaProperties.REDPANDA_CONTAINER, REDPANDA_CONTAINER))
+ .asCompatibleSubstituteFor("redpandadata/redpanda"));
}
protected void containerIsStarting(InspectContainerResponse containerInfo) {
diff --git a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/StrimziInfraService.java b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/StrimziInfraService.java
index 4334b73a20c..3803bfac220 100644
--- a/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/StrimziInfraService.java
+++ b/test-infra/camel-test-infra-kafka/src/main/java/org/apache/camel/test/infra/kafka/services/StrimziInfraService.java
@@ -17,6 +17,7 @@
package org.apache.camel.test.infra.kafka.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.TestUtils;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.kafka.common.KafkaProperties;
@@ -24,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Network;
+@InfraService(service = KafkaInfraService.class, serviceAlias = "kafka", serviceImplementationAlias = "strimzi")
public class StrimziInfraService implements KafkaInfraService, ContainerService<StrimziContainer> {
private static final Logger LOG = LoggerFactory.getLogger(StrimziInfraService.class);
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 e4f4db3d62f..066fdeb21b5 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
@@ -17,6 +17,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.ContainerService;
import org.apache.camel.test.infra.microprofile.lra.common.MicroprofileLRAProperties;
@@ -26,6 +27,8 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = MicroprofileLRAInfraService.class, serviceAlias = { "microprofile-lra", "microprofile" },
+ serviceImplementationAlias = "lra")
public class MicroprofileLRALocalContainerInfraService
implements MicroprofileLRAInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "microprofile-lra";
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 7d0af0663d3..c580931c1cc 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
@@ -20,6 +20,7 @@ import java.net.MalformedURLException;
import java.net.URL;
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.ContainerService;
import org.apache.camel.test.infra.milvus.common.MilvusProperties;
@@ -28,6 +29,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.milvus.MilvusContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = MilvusInfraService.class, serviceAlias = { "milvus" })
public class MilvusLocalContainerInfraService implements MilvusInfraService, ContainerService<MilvusContainer> {
private static final Logger LOG = LoggerFactory.getLogger(MilvusLocalContainerInfraService.class);
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 ed9417fb85a..2e7b0fb2f09 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
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.minio.services;
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.ContainerService;
import org.apache.camel.test.infra.minio.common.MinioProperties;
@@ -26,6 +27,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
+@InfraService(service = MinioInfraService.class, serviceAlias = { "minio" })
public class MinioLocalContainerInfraService implements MinioInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "minio";
private static final String ACCESS_KEY;
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 07b19490a69..15bbd95d00f 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
@@ -17,6 +17,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.ContainerService;
import org.apache.camel.test.infra.mongodb.common.MongoDBProperties;
@@ -25,6 +26,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.MongoDBContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = MongoDBInfraService.class, serviceAlias = { "mongodb" })
public class MongoDBLocalContainerInfraService implements MongoDBInfraService, ContainerService<MongoDBContainer> {
private static final Logger LOG = LoggerFactory.getLogger(MongoDBLocalContainerInfraService.class);
private static final int DEFAULT_MONGODB_PORT = 27017;
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 961aaddd23e..2d0bde91a0c 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
@@ -16,6 +16,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.ContainerService;
import org.apache.camel.test.infra.mosquitto.common.MosquittoProperties;
@@ -26,6 +27,7 @@ import org.testcontainers.containers.FixedHostPortGenericContainer;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
+@InfraService(service = MosquittoInfraService.class, serviceAlias = { "mosquitto" })
public class MosquittoLocalContainerInfraService implements MosquittoInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "mosquitto";
public static final int CONTAINER_PORT = 1883;
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 26744ab451a..b1939327cdf 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
@@ -16,6 +16,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.ContainerService;
import org.apache.camel.test.infra.nats.common.NatsProperties;
@@ -24,6 +25,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
+@InfraService(service = NatsInfraService.class, serviceAlias = { "nats" })
public class NatsLocalContainerInfraService implements NatsInfraService, ContainerService<GenericContainer> {
public static final String CONTAINER_NAME = "nats";
private static final int PORT = 4222;
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 9e3d206ecc2..a53aeac2cc4 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
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.ollama.services;
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.ContainerService;
import org.apache.camel.test.infra.ollama.commons.OllamaProperties;
@@ -26,6 +27,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.ollama.OllamaContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = OllamaInfraService.class, serviceAlias = { "ollama" })
public class OllamaLocalContainerInfraService implements OllamaInfraService, ContainerService<OllamaContainer> {
private static class DefaultServiceConfiguration implements OllamaServiceConfiguration {
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 edef96a0d1f..f3b2e3689b6 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
@@ -16,11 +16,13 @@
*/
package org.apache.camel.test.infra.openldap.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.openldap.common.OpenldapProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = OpenldapInfraService.class, serviceAlias = { "openldap" })
public class OpenldapLocalContainerInfraService implements OpenldapInfraService, ContainerService<OpenLdapContainer> {
public static final int CONTAINER_PORT_LDAP = 389;
public static final int CONTAINER_PORT_LDAP_OVER_SSL = 636;
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 1a7e80e0e94..9ff3e51c73e 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
@@ -16,13 +16,16 @@
*/
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.ContainerService;
import org.apache.camel.test.infra.postgres.common.PostgresProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.PostgreSQLContainer;
+import org.testcontainers.utility.DockerImageName;
+@InfraService(service = PostgresInfraService.class, serviceAlias = { "postgres" })
public class PostgresLocalContainerInfraService implements PostgresInfraService, ContainerService<PostgreSQLContainer> {
public static final String DEFAULT_POSTGRES_CONTAINER
= LocalPropertyResolver.getProperty(PostgresLocalContainerInfraService.class,
@@ -43,7 +46,8 @@ public class PostgresLocalContainerInfraService implements PostgresInfraService,
}
protected PostgreSQLContainer initContainer(String imageName) {
- return new PostgreSQLContainer(imageName);
+ return new PostgreSQLContainer(
+ DockerImageName.parse(imageName).asCompatibleSubstituteFor("postgres"));
}
@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 5db0f51aac1..62946d75acf 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
@@ -18,6 +18,7 @@ package org.apache.camel.test.infra.pulsar.services;
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.ContainerService;
import org.apache.camel.test.infra.pulsar.common.PulsarProperties;
@@ -26,6 +27,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.PulsarContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = PulsarInfraService.class, serviceAlias = { "pulsar" })
public class PulsarLocalContainerInfraService implements PulsarInfraService, ContainerService<PulsarContainer> {
private static final Logger LOG = LoggerFactory.getLogger(PulsarLocalContainerInfraService.class);
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 e0a24980d7d..4998f3830d5 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
@@ -16,6 +16,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.ContainerService;
import org.apache.camel.test.infra.qdrant.common.QdrantProperties;
@@ -25,6 +26,7 @@ import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.qdrant.QdrantContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = QdrantInfraService.class, serviceAlias = { "qdrant" })
public class QdrantLocalContainerInfraService implements QdrantInfraService, ContainerService<QdrantContainer> {
public static final int HTTP_PORT = 6333;
public static final int GRPC_PORT = 6334;
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 6fab9036efb..8212e757de7 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
@@ -17,6 +17,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.ContainerService;
import org.apache.camel.test.infra.rabbitmq.common.RabbitMQProperties;
@@ -25,6 +26,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.RabbitMQContainer;
import org.testcontainers.utility.DockerImageName;
+@InfraService(service = RabbitMQInfraService.class, serviceAlias = { "rabbitmq" })
public class RabbitMQLocalContainerInfraService implements RabbitMQInfraService, ContainerService<RabbitMQContainer> {
private static final Logger LOG = LoggerFactory.getLogger(RabbitMQLocalContainerInfraService.class);
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 1954a22b521..41a061e5e8e 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
@@ -16,11 +16,13 @@
*/
package org.apache.camel.test.infra.redis.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.redis.common.RedisProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = RedisInfraService.class, serviceAlias = { "redis" })
public class RedisLocalContainerInfraService implements RedisInfraService, ContainerService<RedisContainer> {
private static final Logger LOG = LoggerFactory.getLogger(RedisLocalContainerInfraService.class);
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 84c0f8dd5d7..b406c6124cd 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
@@ -19,6 +19,7 @@ package org.apache.camel.test.infra.rocketmq.services;
import java.io.IOException;
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.ContainerService;
import org.apache.camel.test.infra.rocketmq.common.RocketMQProperties;
@@ -28,6 +29,7 @@ import org.slf4j.LoggerFactory;
import org.testcontainers.containers.Container;
import org.testcontainers.containers.Network;
+@InfraService(service = RocketMQInfraService.class, serviceAlias = { "rocketmq" })
public class RocketMQContainerInfraService implements RocketMQInfraService, ContainerService<RocketMQNameserverContainer> {
private static final Logger LOG = LoggerFactory.getLogger(RocketMQContainerInfraService.class);
public static final String ROCKETMQ_VERSION = LocalPropertyResolver.getProperty(
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 241ec0c8533..d96763be8df 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
@@ -16,10 +16,12 @@
*/
package org.apache.camel.test.infra.smb.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.util.IOHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = SmbLocalContainerInfraService.class, serviceAlias = { "smb" })
public class SmbLocalContainerInfraService implements SmbInfraService {
protected static final Logger LOG = LoggerFactory.getLogger(SmbLocalContainerInfraService.class);
protected final SmbContainer container = new SmbContainer();
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 cca2af6ddf8..ca3b5ac8569 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
@@ -16,11 +16,13 @@
*/
package org.apache.camel.test.infra.solr.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.solr.common.SolrProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = SolrInfraService.class, serviceAlias = { "solr" })
public class SolrLocalContainerInfraService implements SolrInfraService, ContainerService<SolrContainer> {
private static final Logger LOG = LoggerFactory.getLogger(SolrLocalContainerInfraService.class);
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 84f43a3011d..9fd8a68392f 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
@@ -16,6 +16,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.ContainerService;
import org.apache.camel.test.infra.torchserve.common.TorchServeProperties;
@@ -26,6 +27,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;
import org.testcontainers.utility.MountableFile;
+@InfraService(service = TorchServeInfraService.class, serviceAlias = { "torch-serve" })
public class TorchServeLocalContainerInfraService implements TorchServeInfraService, ContainerService<GenericContainer<?>> {
private static final Logger LOG = LoggerFactory.getLogger(TorchServeLocalContainerInfraService.class);
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 aa93199d38b..b76a27bc982 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
@@ -16,12 +16,14 @@
*/
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.ContainerService;
import org.apache.camel.test.infra.xmpp.common.XmppProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = XmppInfraService.class, serviceAlias = { "xmpp" })
public class XmppLocalContainerInfraService implements XmppInfraService, ContainerService<XmppServerContainer> {
private static final Logger LOG = LoggerFactory.getLogger(XmppLocalContainerInfraService.class);
diff --git a/test-infra/camel-test-infra-zookeeper/src/main/java/org/apache/camel/test/infra/zookeeper/services/ZooKeeperLocalContainerInfraService.java b/test-infra/camel-test-infra-zookeeper/src/main/java/org/apache/camel/test/infra/zookeeper/services/ZooKeeperLocalContainerInfraService.java
index d35ffe9361f..dd22dcf4b82 100644
--- a/test-infra/camel-test-infra-zookeeper/src/main/java/org/apache/camel/test/infra/zookeeper/services/ZooKeeperLocalContainerInfraService.java
+++ b/test-infra/camel-test-infra-zookeeper/src/main/java/org/apache/camel/test/infra/zookeeper/services/ZooKeeperLocalContainerInfraService.java
@@ -16,12 +16,14 @@
*/
package org.apache.camel.test.infra.zookeeper.services;
+import org.apache.camel.spi.annotations.InfraService;
import org.apache.camel.test.infra.common.LocalPropertyResolver;
import org.apache.camel.test.infra.common.services.ContainerService;
import org.apache.camel.test.infra.zookeeper.common.ZooKeeperProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@InfraService(service = ZooKeeperInfraService.class, serviceAlias = { "zookeeper" })
public class ZooKeeperLocalContainerInfraService implements ZooKeeperInfraService, ContainerService<ZooKeeperContainer> {
private static final Logger LOG = LoggerFactory.getLogger(ZooKeeperLocalContainerInfraService.class);
diff --git a/test-infra/pom.xml b/test-infra/pom.xml
index 5a25e97b2d6..6b8e7e08d1f 100644
--- a/test-infra/pom.xml
+++ b/test-infra/pom.xml
@@ -89,8 +89,16 @@
<module>camel-test-infra-hivemq</module>
<module>camel-test-infra-torchserve</module>
<module>camel-test-infra-tensorflow-serving</module>
+ <module>camel-test-infra-all</module>
</modules>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>spi-annotations</artifactId>
+ </dependency>
+ </dependencies>
+
<build>
<plugins>
<plugin>
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
index 903a9728d76..995aaeff783 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
@@ -27,7 +27,7 @@ import jakarta.xml.ws.soap.SOAPFaultException;
import javax.xml.namespace.QName;
import org.apache.camel.CamelContext;
-import org.apache.camel.test.AvailablePortFinder;
+import org.apache.camel.test.AvailablePort;
import org.apache.camel.test.spring.junit5.CamelSpringTest;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
@@ -129,7 +129,7 @@ public class GreeterClientTest {
public static boolean isPortAvailable() {
try {
- AvailablePortFinder.probePort(InetAddress.getByName("localhost"), 9000);
+ AvailablePort.probePort(InetAddress.getByName("localhost"), 9000);
} catch (IllegalStateException | UnknownHostException e) {
return false;
}
diff --git a/tooling/maven/camel-package-maven-plugin/pom.xml b/tooling/maven/camel-package-maven-plugin/pom.xml
index 9f592b91abb..6bb7fb14a1f 100644
--- a/tooling/maven/camel-package-maven-plugin/pom.xml
+++ b/tooling/maven/camel-package-maven-plugin/pom.xml
@@ -154,6 +154,11 @@
<version>${velocity-version}</version>
</dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+
<!-- logging -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
new file mode 100644
index 00000000000..63d8866e437
--- /dev/null
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
@@ -0,0 +1,142 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.maven.packaging;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.inject.Inject;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.camel.maven.packaging.generics.PackagePluginUtils;
+import org.apache.camel.spi.annotations.InfraService;
+import org.apache.camel.tooling.util.FileUtil;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+import org.codehaus.plexus.build.BuildContext;
+import org.jboss.jandex.AnnotationInstance;
+import org.jboss.jandex.AnnotationValue;
+import org.jboss.jandex.DotName;
+
+/**
+ * Gather all classes annotated with @InfraService and create a JSON file containing all the metadata.
+ *
+ * The JSON can be used to retrieve the test-infra information and run the services (via Camel JBang for example)
+ */
+@Mojo(name = "test-infra-generate-metadata", threadSafe = true,
+ requiresDependencyResolution = ResolutionScope.COMPILE, defaultPhase = LifecyclePhase.PROCESS_CLASSES)
+public class CamelTestInfraGenerateMetadataMojo extends AbstractGeneratorMojo {
+
+ @Parameter(property = "project", required = true, readonly = true)
+ protected MavenProject project;
+ @Parameter(defaultValue = "${project.basedir}/src/generated/resources")
+ protected File generatedResourcesOutputDir;
+
+ public static final DotName INFRA_SERVICE = DotName.createSimple(InfraService.class.getName());
+
+ @Inject
+ protected CamelTestInfraGenerateMetadataMojo(MavenProjectHelper projectHelper, BuildContext buildContext) {
+ super(projectHelper, buildContext);
+ }
+
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ Set<InfrastructureServiceModel> models = new LinkedHashSet<>();
+
+ for (AnnotationInstance ai : PackagePluginUtils.readJandexIndexQuietly(project).getAnnotations(INFRA_SERVICE)) {
+
+ InfrastructureServiceModel infrastructureServiceModel = new InfrastructureServiceModel();
+
+ infrastructureServiceModel.setImplementation(ai.target().toString());
+ for (AnnotationValue av : ai.values()) {
+ if (av.name().equals("service")) {
+ infrastructureServiceModel.setService(av.asString());
+ } else if (av.name().equals("serviceAlias")) {
+ infrastructureServiceModel.setAlias(Arrays.asList(av.asStringArray()));
+ } else if (av.name().equals("serviceImplementationAlias")) {
+ infrastructureServiceModel.getAliasImplementation().addAll(Arrays.asList(av.asStringArray()));
+ }
+ }
+
+ models.add(infrastructureServiceModel);
+ }
+
+ try {
+ String modelsAsJson = new ObjectMapper().writeValueAsString(models);
+
+ if (generatedResourcesOutputDir == null) {
+ generatedResourcesOutputDir = new File(project.getBasedir(), "src/generated/java");
+ }
+
+ FileUtil.updateFile(generatedResourcesOutputDir.toPath()
+ .resolve("META-INF")
+ .resolve("test-infra-metadata.json"), modelsAsJson);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private class InfrastructureServiceModel {
+ private String service;
+ private String implementation;
+ private List<String> alias = new ArrayList<>();
+ private List<String> aliasImplementation = new ArrayList<>();
+
+ public String getService() {
+ return service;
+ }
+
+ public void setService(String service) {
+ this.service = service;
+ }
+
+ public String getImplementation() {
+ return implementation;
+ }
+
+ public void setImplementation(String implementation) {
+ this.implementation = implementation;
+ }
+
+ public List<String> getAlias() {
+ return alias;
+ }
+
+ public void setAlias(List<String> alias) {
+ this.alias = alias;
+ }
+
+ public List<String> getAliasImplementation() {
+ return aliasImplementation;
+ }
+
+ public void setAliasImplementation(List<String> aliasImplementation) {
+ this.aliasImplementation = aliasImplementation;
+ }
+ }
+}
diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
new file mode 100644
index 00000000000..354fcce94c4
--- /dev/null
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spi.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Marks a class as a Service that can be used by Camel JBang infra
+ *
+ * The marked class is analyzed by the mojo CamelTestInfraGenerateMetadataMojo
+ *
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ ElementType.TYPE })
+public @interface InfraService {
+
+ /**
+ * Interface that extends InfrastructureService
+ *
+ * the interface is used by Camel JBang infra run to retrieve testing information like port, endpoint, username...
+ *
+ * @return
+ */
+ Class service();
+
+ /**
+ * List of names that can be used to run the service
+ *
+ * @return
+ */
+ String[] serviceAlias();
+
+ /**
+ * Additional and optional Service name, in case of multiple Service implementations
+ *
+ * For example kafka has 3 implementations
+ *
+ * kafka - uses apache/kafka image as implementation kafka redpanda - uses redpandadata/redpanda image as
+ * implementation kafka strimzi - uses strimzi/kafka as image implementation
+ *
+ * @return
+ */
+ String[] serviceImplementationAlias() default {};
+}