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


The following commit(s) were added to refs/heads/main by this push:
     new 351cc7d13b0 CAMEL-18280: Reuse AWS localstack for slower modules
351cc7d13b0 is described below

commit 351cc7d13b0a8416a98204f00728e91ef695a04d
Author: Croway <federico.mariani.1...@gmail.com>
AuthorDate: Tue May 21 12:08:40 2024 +0200

    CAMEL-18280: Reuse AWS localstack for slower modules
---
 .../component/aws2/ddb/localstack/Aws2DDBBase.java |  2 +-
 .../ddbstream/Ddb2StreamConsumerHealthCheckIT.java |  2 +-
 .../localstack/Aws2EventbridgeBase.java            |  2 +-
 .../localstack/EventbridgeEnableRuleIT.java        | 24 ++++++++++
 .../localstack/EventbridgePutRuleIT.java           | 14 ++++++
 .../Kinesis2ConsumerHealthCheckProfileCredsIT.java |  2 +-
 .../Kinesis2ConsumerHealthCheckStaticCredsIT.java  |  2 +-
 .../Kinesis2ConsumerHealthCustomClientIT.java      |  2 +-
 .../kinesis/integration/KinesisConsumerIT.java     |  2 +-
 .../KinesisConsumerResumeAfterRestartIT.java       |  2 +-
 .../integration/KinesisConsumerResumeIT.java       |  2 +-
 .../kinesis/integration/KinesisProducerIT.java     |  2 +-
 .../AWS2S3ConsumerHealthCheckProfileCredsIT.java   |  2 +-
 .../s3/AWS2S3ConsumerHealthCheckStaticCredsIT.java |  2 +-
 .../component/aws2/s3/integration/Aws2S3Base.java  | 12 ++++-
 .../aws2/s3/integration/S3ConsumerIT.java          |  5 ++-
 .../s3/integration/S3ConsumerIgnoreBodyIT.java     |  5 ++-
 .../s3/integration/S3ConsumerIncludeBodyIT.java    |  5 ++-
 .../S3CreateDownloadLinkOperationIT.java           | 10 ++---
 ...wnloadLinkWithProvidedPresignerOperationIT.java |  4 +-
 .../s3/integration/S3DeleteBucketOperationIT.java  |  4 +-
 .../s3/integration/S3GetObjectOperationIT.java     |  4 +-
 .../aws2/s3/integration/S3GzipOperationIT.java     |  9 ++--
 .../s3/integration/S3ListObjectsOperationIT.java   |  8 ++--
 .../integration/S3MultipartUploadOperationIT.java  |  4 +-
 .../S3SimpleEncryptedUploadOperationIT.java        |  6 +--
 .../s3/integration/S3SimpleUploadOperationIT.java  |  6 +--
 .../S3StreamUploadMultipartAsyncIT.java            |  7 ++-
 .../s3/integration/S3StreamUploadMultipartIT.java  |  7 ++-
 .../S3StreamUploadOperationAsyncIT.java            |  7 ++-
 .../s3/integration/S3StreamUploadOperationIT.java  |  7 ++-
 .../integration/S3StreamUploadS3MultipartIT.java   | 22 ++++-----
 .../s3/integration/S3StreamUploadTimeoutIT.java    |  7 ++-
 .../s3/integration/S3UploadWithUserMetadataIT.java |  4 +-
 .../Sqs2ConsumerHealthCheckIAMProfileCredsIT.java  |  2 +-
 .../sqs/Sqs2ConsumerHealthCheckProfileCredsIT.java |  2 +-
 .../sqs/Sqs2ConsumerHealthCheckStaticCredsIT.java  |  2 +-
 .../aws2/sqs/integration/Aws2SQSBaseTest.java      |  4 +-
 .../infra/aws2/services/AWSServiceFactory.java     | 52 ++++++++++++++++++++++
 .../test/infra/common/SharedNameGenerator.java     |  4 ++
 .../test/infra/common/TestEntityNameGenerator.java |  8 ++++
 41 files changed, 206 insertions(+), 73 deletions(-)

diff --git 
a/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddb/localstack/Aws2DDBBase.java
 
b/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddb/localstack/Aws2DDBBase.java
index 483e5c9273b..cd581f61921 100644
--- 
a/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddb/localstack/Aws2DDBBase.java
+++ 
b/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddb/localstack/Aws2DDBBase.java
@@ -30,7 +30,7 @@ import 
software.amazon.awssdk.services.dynamodb.DynamoDbClient;
 public class Aws2DDBBase extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = 
AWSServiceFactory.createDynamodbService();
+    public static AWSService service = 
AWSServiceFactory.createSingletonDynamoDBService();
 
     protected DynamoDbClient ddbClient;
 
diff --git 
a/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddbstream/Ddb2StreamConsumerHealthCheckIT.java
 
b/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddbstream/Ddb2StreamConsumerHealthCheckIT.java
index 174f0b31b42..6e23327e278 100644
--- 
a/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddbstream/Ddb2StreamConsumerHealthCheckIT.java
+++ 
b/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddbstream/Ddb2StreamConsumerHealthCheckIT.java
@@ -38,7 +38,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class Ddb2StreamConsumerHealthCheckIT extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createS3Service();
+    public static AWSService service = 
AWSServiceFactory.createSingletonS3Service();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/Aws2EventbridgeBase.java
 
b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/Aws2EventbridgeBase.java
index 38fc7cb820e..19747aeed42 100644
--- 
a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/Aws2EventbridgeBase.java
+++ 
b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/Aws2EventbridgeBase.java
@@ -29,7 +29,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class Aws2EventbridgeBase extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = 
AWSServiceFactory.createEventBridgeService();
+    public static AWSService service = 
AWSServiceFactory.createSingletonEventBridgeService();
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
diff --git 
a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgeEnableRuleIT.java
 
b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgeEnableRuleIT.java
index 0247a71508d..76805f07796 100644
--- 
a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgeEnableRuleIT.java
+++ 
b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgeEnableRuleIT.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.aws2.eventbridge.localstack;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import org.apache.camel.EndpointInject;
@@ -96,6 +97,25 @@ public class EventbridgeEnableRuleIT extends 
Aws2EventbridgeBase {
         assertEquals(RuleState.ENABLED, resp.rules().get(0).state());
         MockEndpoint.assertIsSatisfied(context);
 
+        // Clean up eventbridge
+        template.send("direct:evs-deleteTargets", new Processor() {
+
+            @Override
+            public void process(Exchange exchange) {
+                exchange.getIn().setHeader(EventbridgeConstants.RULE_NAME, 
"firstrule");
+                Collection<String> targets = new ArrayList<>();
+                targets.add("sqs-queue");
+                exchange.getIn().setHeader(EventbridgeConstants.TARGETS_IDS, 
targets);
+            }
+        });
+
+        template.send("direct:evs-deleteRule", new Processor() {
+
+            @Override
+            public void process(Exchange exchange) {
+                exchange.getIn().setHeader(EventbridgeConstants.RULE_NAME, 
"firstrule");
+            }
+        });
     }
 
     @Override
@@ -106,14 +126,18 @@ public class EventbridgeEnableRuleIT extends 
Aws2EventbridgeBase {
                 String putRule
                         = 
"aws2-eventbridge://default?operation=putRule&eventPatternFile=file:src/test/resources/eventpattern.json";
                 String putTargets = 
"aws2-eventbridge://default?operation=putTargets";
+                String removeTargets = 
"aws2-eventbridge://default?operation=removeTargets";
                 String listRule = 
"aws2-eventbridge://default?operation=listRules";
                 String disableRule = 
"aws2-eventbridge://default?operation=disableRule";
                 String enableRule = 
"aws2-eventbridge://default?operation=enableRule";
+                String deleteRule = 
"aws2-eventbridge://default?operation=deleteRule";
 
                 from("direct:evs").to(putRule);
                 from("direct:evs-targets").to(putTargets);
                 from("direct:evs-listRules").to(listRule);
                 from("direct:evs-disableRule").to(disableRule);
+                from("direct:evs-deleteRule").to(deleteRule);
+                from("direct:evs-deleteTargets").to(removeTargets);
                 
from("direct:evs-enableRule").to(enableRule).log("${body}").to("mock:result");
             }
         };
diff --git 
a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgePutRuleIT.java
 
b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgePutRuleIT.java
index e8225c6f947..e0b93274343 100644
--- 
a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgePutRuleIT.java
+++ 
b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgePutRuleIT.java
@@ -67,6 +67,16 @@ public class EventbridgePutRuleIT extends 
Aws2EventbridgeBase {
         });
         MockEndpoint.assertIsSatisfied(context);
 
+        // cleanup rule
+        template.send("direct:evs-removeTargets", exchange -> {
+            exchange.getIn().setHeader(EventbridgeConstants.RULE_NAME, 
"firstrule");
+            List<String> targets = new ArrayList<>();
+            targets.add("sqs-queue");
+            exchange.getIn().setHeader(EventbridgeConstants.TARGETS_IDS, 
targets);
+        });
+
+        template.send("direct:evs-deleteRule",
+                exchange -> 
exchange.getIn().setHeader(EventbridgeConstants.RULE_NAME, "firstrule"));
     }
 
     @Override
@@ -77,8 +87,12 @@ public class EventbridgePutRuleIT extends 
Aws2EventbridgeBase {
                 String awsEndpoint
                         = 
"aws2-eventbridge://default?operation=putRule&eventPatternFile=file:src/test/resources/eventpattern.json";
                 String target = 
"aws2-eventbridge://default?operation=putTargets";
+                String removeTarget = 
"aws2-eventbridge://default?operation=removeTargets";
+                String deleteRule = 
"aws2-eventbridge://default?operation=deleteRule";
                 
from("direct:evs").to(awsEndpoint).log("${body}").to("mock:result");
                 
from("direct:evs-targets").to(target).log("${body}").to("mock:result1");
+                from("direct:evs-removeTargets").to(removeTarget);
+                from("direct:evs-deleteRule").to(deleteRule);
             }
         };
     }
diff --git 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCheckProfileCredsIT.java
 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCheckProfileCredsIT.java
index eed9ce5d389..24c52d1b892 100644
--- 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCheckProfileCredsIT.java
+++ 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCheckProfileCredsIT.java
@@ -39,7 +39,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class Kinesis2ConsumerHealthCheckProfileCredsIT extends 
CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createS3Service();
+    public static AWSService service = 
AWSServiceFactory.createSingletonS3Service();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCheckStaticCredsIT.java
 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCheckStaticCredsIT.java
index cba4484e710..9edb0cfb038 100644
--- 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCheckStaticCredsIT.java
+++ 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCheckStaticCredsIT.java
@@ -39,7 +39,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class Kinesis2ConsumerHealthCheckStaticCredsIT extends CamelTestSupport 
{
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createS3Service();
+    public static AWSService service = 
AWSServiceFactory.createSingletonS3Service();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCustomClientIT.java
 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCustomClientIT.java
index cbb743abf96..9d99824a513 100644
--- 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCustomClientIT.java
+++ 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/Kinesis2ConsumerHealthCustomClientIT.java
@@ -47,7 +47,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class Kinesis2ConsumerHealthCustomClientIT extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createS3Service();
+    public static AWSService service = 
AWSServiceFactory.createSingletonS3Service();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerIT.java
 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerIT.java
index aa7c9da76bf..3ce4a00f8bf 100644
--- 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerIT.java
+++ 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerIT.java
@@ -66,7 +66,7 @@ public class KinesisConsumerIT extends CamelTestSupport {
     }
 
     @RegisterExtension
-    public static AWSService awsService = 
AWSServiceFactory.createKinesisService();
+    public static AWSService awsService = 
AWSServiceFactory.createSingletonKinesisService();
 
     private static final Logger LOG = 
LoggerFactory.getLogger(KinesisProducerIT.class);
 
diff --git 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerResumeAfterRestartIT.java
 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerResumeAfterRestartIT.java
index 01b71632295..662383c4858 100644
--- 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerResumeAfterRestartIT.java
+++ 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerResumeAfterRestartIT.java
@@ -42,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class KinesisConsumerResumeAfterRestartIT extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService awsService = 
AWSServiceFactory.createKinesisService();
+    public static AWSService awsService = 
AWSServiceFactory.createSingletonKinesisService();
     private KinesisClient client;
 
     String streamName = "my-stream";
diff --git 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerResumeIT.java
 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerResumeIT.java
index af890f72faf..4d8cfbc2483 100644
--- 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerResumeIT.java
+++ 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisConsumerResumeIT.java
@@ -113,7 +113,7 @@ public class KinesisConsumerResumeIT extends 
CamelTestSupport {
     }
 
     @RegisterExtension
-    public static AWSService awsService = 
AWSServiceFactory.createKinesisService();
+    public static AWSService awsService = 
AWSServiceFactory.createSingletonKinesisService();
 
     private static final Logger LOG = 
LoggerFactory.getLogger(KinesisProducerIT.class);
 
diff --git 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisProducerIT.java
 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisProducerIT.java
index 036f54f90e9..4b43ff03f40 100644
--- 
a/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisProducerIT.java
+++ 
b/components/camel-aws/camel-aws2-kinesis/src/test/java/org/apache/camel/component/aws2/kinesis/integration/KinesisProducerIT.java
@@ -52,7 +52,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class KinesisProducerIT extends CamelTestSupport {
     @RegisterExtension
-    public static AWSService awsService = 
AWSServiceFactory.createKinesisService();
+    public static AWSService awsService = 
AWSServiceFactory.createSingletonKinesisService();
 
     private static final Logger LOG = 
LoggerFactory.getLogger(KinesisProducerIT.class);
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ConsumerHealthCheckProfileCredsIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ConsumerHealthCheckProfileCredsIT.java
index eb394b956f8..8f1e13466e1 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ConsumerHealthCheckProfileCredsIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ConsumerHealthCheckProfileCredsIT.java
@@ -39,7 +39,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class AWS2S3ConsumerHealthCheckProfileCredsIT extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createS3Service();
+    public static AWSService service = 
AWSServiceFactory.createSingletonS3Service();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ConsumerHealthCheckStaticCredsIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ConsumerHealthCheckStaticCredsIT.java
index 40cfc18fbef..52f306aefee 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ConsumerHealthCheckStaticCredsIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ConsumerHealthCheckStaticCredsIT.java
@@ -38,7 +38,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class AWS2S3ConsumerHealthCheckStaticCredsIT extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createS3Service();
+    public static AWSService service = 
AWSServiceFactory.createSingletonS3Service();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/Aws2S3Base.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/Aws2S3Base.java
index a3fe7aa3878..4d8fd90a942 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/Aws2S3Base.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/Aws2S3Base.java
@@ -16,11 +16,16 @@
  */
 package org.apache.camel.component.aws2.s3.integration;
 
+import java.util.Locale;
+import java.util.function.Supplier;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.aws2.s3.AWS2S3Component;
 import org.apache.camel.test.infra.aws.common.services.AWSService;
 import org.apache.camel.test.infra.aws2.clients.AWSSDKClientUtils;
 import org.apache.camel.test.infra.aws2.services.AWSServiceFactory;
+import org.apache.camel.test.infra.common.SharedNameGenerator;
+import org.apache.camel.test.infra.common.TestEntityNameGenerator;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -29,7 +34,12 @@ import 
software.amazon.awssdk.services.kms.model.CreateKeyRequest;
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class Aws2S3Base extends CamelTestSupport {
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createS3Service();
+    public static AWSService service = 
AWSServiceFactory.createSingletonS3Service();
+
+    @RegisterExtension
+    public static SharedNameGenerator sharedNameGenerator = new 
TestEntityNameGenerator();
+
+    protected Supplier<String> name = () -> 
sharedNameGenerator.getClazz().toLowerCase(Locale.ROOT);
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIT.java
index a2773a8ec9f..7a72ec43a33 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIT.java
@@ -76,11 +76,12 @@ public class S3ConsumerIT extends Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = "aws2-s3://mycamel?autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true";
 
                 
from("direct:putObject").startupOrder(1).to(awsEndpoint).to("mock:result");
 
-                
from("aws2-s3://mycamel?moveAfterRead=true&destinationBucket=camel-kafka-connector&autoCreateBucket=true&destinationBucketPrefix=RAW(movedPrefix)&destinationBucketSuffix=RAW(movedSuffix)")
+                from("aws2-s3://" + name.get()
+                     + 
"?moveAfterRead=true&destinationBucket=camel-kafka-connector&autoCreateBucket=true&destinationBucketPrefix=RAW(movedPrefix)&destinationBucketSuffix=RAW(movedSuffix)")
                         .startupOrder(2).log("${body}");
 
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIgnoreBodyIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIgnoreBodyIT.java
index fe616f94b1d..ab14dabd249 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIgnoreBodyIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIgnoreBodyIT.java
@@ -60,11 +60,12 @@ public class S3ConsumerIgnoreBodyIT extends Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = "aws2-s3://mycamel?autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true";
 
                 from("direct:putObject").startupOrder(1).to(awsEndpoint);
 
-                
from("aws2-s3://mycamel?moveAfterRead=true&destinationBucket=camel-kafka-connector&autoCreateBucket=true&destinationBucketPrefix=RAW(movedPrefix)&destinationBucketSuffix=RAW(movedSuffix)&ignoreBody=true")
+                from("aws2-s3://" + name.get()
+                     + 
"?moveAfterRead=true&destinationBucket=camel-kafka-connector&autoCreateBucket=true&destinationBucketPrefix=RAW(movedPrefix)&destinationBucketSuffix=RAW(movedSuffix)&ignoreBody=true")
                         .startupOrder(2).log("${body}").to("mock:result");
 
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIncludeBodyIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIncludeBodyIT.java
index 274a30eb449..650b03ff606 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIncludeBodyIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ConsumerIncludeBodyIT.java
@@ -77,11 +77,12 @@ public class S3ConsumerIncludeBodyIT extends Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = "aws2-s3://mycamel?autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true";
 
                 
from("direct:putObject").startupOrder(1).to(awsEndpoint).to("mock:result");
 
-                
from("aws2-s3://mycamel?moveAfterRead=true&destinationBucket=camel-kafka-connector&autoCreateBucket=true&destinationBucketPrefix=RAW(movedPrefix)&destinationBucketSuffix=RAW(movedSuffix)&includeBody=false")
+                from("aws2-s3://" + name.get()
+                     + 
"?moveAfterRead=true&destinationBucket=camel-kafka-connector&autoCreateBucket=true&destinationBucketPrefix=RAW(movedPrefix)&destinationBucketSuffix=RAW(movedSuffix)&includeBody=false")
                         .startupOrder(2).to("mock:result");
 
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkOperationIT.java
index b78eab91459..45c37a803da 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkOperationIT.java
@@ -62,7 +62,7 @@ public class S3CreateDownloadLinkOperationIT extends 
Aws2S3Base {
         Exchange ex1 = template.request("direct:createDownloadLink", new 
Processor() {
             public void process(Exchange exchange) {
                 exchange.getIn().setHeader(AWS2S3Constants.KEY, 
"CamelUnitTest2");
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel2");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.createDownloadLink);
             }
         });
@@ -70,18 +70,18 @@ public class S3CreateDownloadLinkOperationIT extends 
Aws2S3Base {
         Exchange ex3 = 
template.request("direct:createDownloadLinkWithUriOverride", new Processor() {
             public void process(Exchange exchange) {
                 exchange.getIn().setHeader(AWS2S3Constants.KEY, 
"CamelUnitTest2");
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel2");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.createDownloadLink);
             }
         });
 
         String downloadLink = ex1.getMessage().getBody(String.class);
         assertNotNull(downloadLink);
-        
assertTrue(downloadLink.startsWith("https://mycamel2.s3.eu-west-1.amazonaws.com";));
+        assertTrue(downloadLink.startsWith("https://"; + name.get() + 
".s3.eu-west-1.amazonaws.com"));
 
         String downloadLinkWithUriOverride = 
ex3.getMessage().getBody(String.class);
         assertNotNull(downloadLinkWithUriOverride);
-        
assertTrue(downloadLinkWithUriOverride.startsWith("http://mycamel2.localhost:8080";));
+        assertTrue(downloadLinkWithUriOverride.startsWith("http://"; + 
name.get() + ".localhost:8080"));
 
         MockEndpoint.assertIsSatisfied(context);
     }
@@ -91,7 +91,7 @@ public class S3CreateDownloadLinkOperationIT extends 
Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = 
"aws2-s3://mycamel2?autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true";
 
                 from("direct:listBucket").to(awsEndpoint + 
"&accessKey=xxx&secretKey=yyy&region=eu-west-1");
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkWithProvidedPresignerOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkWithProvidedPresignerOperationIT.java
index b62ebadb503..3272d3fa909 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkWithProvidedPresignerOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3CreateDownloadLinkWithProvidedPresignerOperationIT.java
@@ -72,7 +72,7 @@ public class 
S3CreateDownloadLinkWithProvidedPresignerOperationIT extends Aws2S3
         Exchange ex1 = template.request("direct:createDownloadLink", new 
Processor() {
             public void process(Exchange exchange) {
                 exchange.getIn().setHeader(AWS2S3Constants.KEY, 
"CamelUnitTest2");
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel2");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.createDownloadLink);
             }
         });
@@ -86,7 +86,7 @@ public class 
S3CreateDownloadLinkWithProvidedPresignerOperationIT extends Aws2S3
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = 
"aws2-s3://mycamel2?autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true";
 
                 from("direct:listBucket").to(awsEndpoint);
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3DeleteBucketOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3DeleteBucketOperationIT.java
index a199ff36d16..45fd3d756dc 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3DeleteBucketOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3DeleteBucketOperationIT.java
@@ -50,7 +50,7 @@ public class S3DeleteBucketOperationIT extends Aws2S3Base {
 
             @Override
             public void process(Exchange exchange) {
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel2");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.deleteBucket);
             }
         });
@@ -63,7 +63,7 @@ public class S3DeleteBucketOperationIT extends Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = 
"aws2-s3://mycamel2?autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true";
 
                 from("direct:listBucket").to(awsEndpoint);
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3GetObjectOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3GetObjectOperationIT.java
index f76d4026744..aab1492b0e7 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3GetObjectOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3GetObjectOperationIT.java
@@ -59,7 +59,7 @@ public class S3GetObjectOperationIT extends Aws2S3Base {
 
             @Override
             public void process(Exchange exchange) {
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.KEY, "camel.txt");
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.getObject);
             }
@@ -77,7 +77,7 @@ public class S3GetObjectOperationIT extends Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = "aws2-s3://mycamel?autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true";
 
                 from("direct:putObject").to(awsEndpoint);
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3GzipOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3GzipOperationIT.java
index 9744ff26561..41f2da93e38 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3GzipOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3GzipOperationIT.java
@@ -59,7 +59,7 @@ public class S3GzipOperationIT extends Aws2S3Base {
 
         // delete the content
         fluentTemplate()
-                .to("aws2-s3://mycamel?autoCreateBucket=true")
+                .to("aws2-s3://" + name.get() + "?autoCreateBucket=true")
                 .withHeader(AWS2S3Constants.KEY, "hello.txt.gz")
                 .withHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.deleteObject)
                 .request();
@@ -72,11 +72,12 @@ public class S3GzipOperationIT extends Aws2S3Base {
             public void configure() {
                 from("direct:putObject")
                         .marshal().gzipDeflater()
-                        .to("aws2-s3://mycamel?autoCreateBucket=true");
+                        .to("aws2-s3://" + name.get() + 
"?autoCreateBucket=true");
                 from("direct:getObject")
-                        
.to("aws2-s3://mycamel?autoCreateBucket=true&deleteAfterRead=false&includeBody=true")
+                        .to("aws2-s3://" + name.get() + 
"?autoCreateBucket=true&deleteAfterRead=false&includeBody=true")
                         .unmarshal().gzipDeflater();
-                
from("aws2-s3://mycamel?autoCreateBucket=true&deleteAfterRead=false&includeBody=true&prefix=hello.txt.gz")
+                from("aws2-s3://" + name.get()
+                     + 
"?autoCreateBucket=true&deleteAfterRead=false&includeBody=true&prefix=hello.txt.gz")
                         .unmarshal().gzipDeflater()
                         .to("mock:poll");
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ListObjectsOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ListObjectsOperationIT.java
index 7c4eb22e2ff..1089585498b 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ListObjectsOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ListObjectsOperationIT.java
@@ -65,7 +65,7 @@ public class S3ListObjectsOperationIT extends Aws2S3Base {
 
             @Override
             public void process(Exchange exchange) {
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel2");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.listObjects);
             }
         });
@@ -77,7 +77,7 @@ public class S3ListObjectsOperationIT extends Aws2S3Base {
         template.send("direct:deleteObject", ExchangePattern.InOnly, new 
Processor() {
             public void process(Exchange exchange) {
                 exchange.getIn().setHeader(AWS2S3Constants.KEY, 
"CamelUnitTest2");
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel2");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.deleteObject);
             }
         });
@@ -86,7 +86,7 @@ public class S3ListObjectsOperationIT extends Aws2S3Base {
 
             @Override
             public void process(Exchange exchange) {
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel2");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.deleteBucket);
             }
         });
@@ -99,7 +99,7 @@ public class S3ListObjectsOperationIT extends Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = 
"aws2-s3://mycamel2?autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true";
 
                 from("direct:listBucket").to(awsEndpoint);
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3MultipartUploadOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3MultipartUploadOperationIT.java
index be6df3ead16..5020f678017 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3MultipartUploadOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3MultipartUploadOperationIT.java
@@ -75,7 +75,7 @@ public class S3MultipartUploadOperationIT extends Aws2S3Base {
 
         S3Client s = AWSSDKClientUtils.newS3Client();
         ResponseInputStream<GetObjectResponse> response
-                = 
s.getObject(GetObjectRequest.builder().bucket("mycamel").key("camel-content-type.txt").build());
+                = 
s.getObject(GetObjectRequest.builder().bucket(name.get()).key("camel-content-type.txt").build());
         assertEquals("application/text", response.response().contentType());
     }
 
@@ -103,7 +103,7 @@ public class S3MultipartUploadOperationIT extends 
Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = 
"aws2-s3://mycamel?multiPartUpload=true&autoCreateBucket=true";
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?multiPartUpload=true&autoCreateBucket=true";
 
                 from("direct:putObject").to(awsEndpoint).to("mock:result");
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleEncryptedUploadOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleEncryptedUploadOperationIT.java
index 080763bb6e1..fc478f62082 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleEncryptedUploadOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleEncryptedUploadOperationIT.java
@@ -60,7 +60,7 @@ public class S3SimpleEncryptedUploadOperationIT extends 
Aws2S3Base {
 
             @Override
             public void process(Exchange exchange) {
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.listObjects);
             }
         });
@@ -89,13 +89,13 @@ public class S3SimpleEncryptedUploadOperationIT extends 
Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = 
"aws2-s3://mycamel?autoCreateBucket=true&useAwsKMS=true&awsKMSKeyId=" + key;
+                String awsEndpoint = "aws2-s3://" + name.get() + 
"?autoCreateBucket=true&useAwsKMS=true&awsKMSKeyId=" + key;
 
                 from("direct:putObject").to(awsEndpoint);
 
                 from("direct:listObjects").to(awsEndpoint).to("mock:result");
 
-                
from("direct:getObject").to("aws2-s3://mycamel?autoCreateBucket=true").to("mock:resultGet");
+                from("direct:getObject").to("aws2-s3://" + name.get() + 
"?autoCreateBucket=true").to("mock:resultGet");
 
             }
         };
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleUploadOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleUploadOperationIT.java
index 96766dcd692..846948fd57b 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleUploadOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleUploadOperationIT.java
@@ -61,7 +61,7 @@ public class S3SimpleUploadOperationIT extends Aws2S3Base {
 
             @Override
             public void process(Exchange exchange) {
-                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
"mycamel");
+                exchange.getIn().setHeader(AWS2S3Constants.BUCKET_NAME, 
name.get());
                 exchange.getIn().setHeader(AWS2S3Constants.S3_OPERATION, 
AWS2S3Operations.listObjects);
             }
         });
@@ -89,7 +89,7 @@ public class S3SimpleUploadOperationIT extends Aws2S3Base {
 
         S3Client s = AWSSDKClientUtils.newS3Client();
         ResponseInputStream<GetObjectResponse> response
-                = 
s.getObject(GetObjectRequest.builder().bucket("mycamel").key("camel-content-type.txt").build());
+                = 
s.getObject(GetObjectRequest.builder().bucket(name.get()).key("camel-content-type.txt").build());
         assertEquals("application/text", response.response().contentType());
     }
 
@@ -98,7 +98,7 @@ public class S3SimpleUploadOperationIT extends Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = "aws2-s3://mycamel?autoCreateBucket=true";
+                String awsEndpoint = 
String.format("aws2-s3://%s?autoCreateBucket=true", name.get());
 
                 from("direct:putObject").to(awsEndpoint);
 
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadMultipartAsyncIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadMultipartAsyncIT.java
index 27714d37710..c41b725a82f 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadMultipartAsyncIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadMultipartAsyncIT.java
@@ -86,11 +86,14 @@ public class S3StreamUploadMultipartAsyncIT extends 
Aws2S3Base {
             @Override
             public void configure() {
                 String awsEndpoint1
-                        = 
"aws2-s3://mycamel-1?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random";
+                        = String.format(
+                                
"aws2-s3://%s?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random",
+                                name.get());
 
                 from("direct:stream1").to(awsEndpoint1).to("mock:result");
 
-                String awsEndpoint = 
"aws2-s3://mycamel-1?autoCreateBucket=true";
+                String awsEndpoint = 
String.format("aws2-s3://%s?autoCreateBucket=true",
+                        name.get());
 
                 from("direct:listObjects").to(awsEndpoint);
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadMultipartIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadMultipartIT.java
index 835f7790d44..d4401155514 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadMultipartIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadMultipartIT.java
@@ -81,11 +81,14 @@ public class S3StreamUploadMultipartIT extends Aws2S3Base {
             @Override
             public void configure() {
                 String awsEndpoint1
-                        = 
"aws2-s3://mycamel-1?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random";
+                        = String.format(
+                                
"aws2-s3://%s?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random",
+                                name.get());
 
                 from("direct:stream1").to(awsEndpoint1).to("mock:result");
 
-                String awsEndpoint = 
"aws2-s3://mycamel-1?autoCreateBucket=true";
+                String awsEndpoint = 
String.format("aws2-s3://%s?autoCreateBucket=true",
+                        name.get());
 
                 from("direct:listObjects").to(awsEndpoint);
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadOperationAsyncIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadOperationAsyncIT.java
index 5dcb9f68480..d2638e27a15 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadOperationAsyncIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadOperationAsyncIT.java
@@ -71,11 +71,14 @@ public class S3StreamUploadOperationAsyncIT extends 
Aws2S3Base {
             @Override
             public void configure() {
                 String awsEndpoint1
-                        = 
"aws2-s3://mycamel-1?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random&streamingUploadTimeout=10000";
+                        = String.format(
+                                
"aws2-s3://%s?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random&streamingUploadTimeout=10000",
+                                name.get());
 
                 from("direct:stream1").to(awsEndpoint1).to("mock:result");
 
-                String awsEndpoint = 
"aws2-s3://mycamel-1?autoCreateBucket=true";
+                String awsEndpoint = 
String.format("aws2-s3://%s?autoCreateBucket=true",
+                        name.get());
 
                 from("direct:listObjects").to(awsEndpoint);
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadOperationIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadOperationIT.java
index c5e720d25cd..1350759439d 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadOperationIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadOperationIT.java
@@ -67,11 +67,14 @@ public class S3StreamUploadOperationIT extends Aws2S3Base {
             @Override
             public void configure() {
                 String awsEndpoint1
-                        = 
"aws2-s3://mycamel-1?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random";
+                        = String.format(
+                                
"aws2-s3://%s?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random",
+                                name.get());
 
                 from("direct:stream1").to(awsEndpoint1).to("mock:result");
 
-                String awsEndpoint = 
"aws2-s3://mycamel-1?autoCreateBucket=true";
+                String awsEndpoint = 
String.format("aws2-s3://%s?autoCreateBucket=true",
+                        name.get());
 
                 from("direct:listObjects").to(awsEndpoint);
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadS3MultipartIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadS3MultipartIT.java
index c78817420ba..3970d42255a 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadS3MultipartIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadS3MultipartIT.java
@@ -79,21 +79,23 @@ public class S3StreamUploadS3MultipartIT extends Aws2S3Base 
{
             @Override
             public void configure() {
                 String awsEndpoint1
-                        = "aws2-s3://mycamel-1?autoCreateBucket=true" +
-                          "&streamingUploadMode=true" +
-                          "&keyName=fileTest.txt" +
-                          "&batchMessageNumber=10" +
-                          "&batchSize=1000000000" +
-                          "&namingStrategy=random" +
-                          "&multiPartUpload=true" +
-                          "&bufferSize=0" +
-                          "&partSize=10000000";
+                        = String.format("aws2-s3://%s?autoCreateBucket=true" +
+                                        "&streamingUploadMode=true" +
+                                        "&keyName=fileTest.txt" +
+                                        "&batchMessageNumber=10" +
+                                        "&batchSize=1000000000" +
+                                        "&namingStrategy=random" +
+                                        "&multiPartUpload=true" +
+                                        "&bufferSize=0" +
+                                        "&partSize=10000000",
+                                name.get());
 
                 from("direct:stream1").process(exchange -> {
                 }).to(awsEndpoint1).process(exchange -> {
                 }).to("mock:result");
 
-                String awsEndpoint = 
"aws2-s3://mycamel-1?autoCreateBucket=true";
+                String awsEndpoint = 
String.format("aws2-s3://%s?autoCreateBucket=true",
+                        name.get());
 
                 from("direct:listObjects").to(awsEndpoint);
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadTimeoutIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadTimeoutIT.java
index d8d52d687ec..3fb218267ea 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadTimeoutIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3StreamUploadTimeoutIT.java
@@ -75,11 +75,14 @@ public class S3StreamUploadTimeoutIT extends Aws2S3Base {
             @Override
             public void configure() {
                 String awsEndpoint1
-                        = 
"aws2-s3://mycamel-1?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random&streamingUploadTimeout=10000";
+                        = String.format(
+                                
"aws2-s3://%s?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random&streamingUploadTimeout=10000",
+                                name.get());
 
                 from("direct:stream1").to(awsEndpoint1).to("mock:result");
 
-                String awsEndpoint = 
"aws2-s3://mycamel-1?autoCreateBucket=true";
+                String awsEndpoint = 
String.format("aws2-s3://%s?autoCreateBucket=true",
+                        name.get());
 
                 from("direct:listObjects").to(awsEndpoint);
             }
diff --git 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3UploadWithUserMetadataIT.java
 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3UploadWithUserMetadataIT.java
index bc4e4526e3f..ff84f2c014c 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3UploadWithUserMetadataIT.java
+++ 
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3UploadWithUserMetadataIT.java
@@ -53,7 +53,7 @@ public class S3UploadWithUserMetadataIT extends Aws2S3Base {
 
         S3Client s = AWSSDKClientUtils.newS3Client();
         ResponseInputStream<GetObjectResponse> response
-                = 
s.getObject(GetObjectRequest.builder().bucket("mycamel").key("camel-content-type.txt").build());
+                = 
s.getObject(GetObjectRequest.builder().bucket(name.get()).key("camel-content-type.txt").build());
         assertTrue(response.response().hasMetadata());
         assertEquals("MetadataFromCamel", 
response.response().metadata().get("user-metadata-example"));
     }
@@ -63,7 +63,7 @@ public class S3UploadWithUserMetadataIT extends Aws2S3Base {
         return new RouteBuilder() {
             @Override
             public void configure() {
-                String awsEndpoint = "aws2-s3://mycamel?autoCreateBucket=true";
+                String awsEndpoint = 
String.format("aws2-s3://%s?autoCreateBucket=true", name.get());
 
                 from("direct:putObject").to(awsEndpoint);
 
diff --git 
a/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckIAMProfileCredsIT.java
 
b/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckIAMProfileCredsIT.java
index 318ed76b9ae..095e1edaf54 100644
--- 
a/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckIAMProfileCredsIT.java
+++ 
b/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckIAMProfileCredsIT.java
@@ -38,7 +38,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class Sqs2ConsumerHealthCheckIAMProfileCredsIT extends CamelTestSupport 
{
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createSQSService();
+    public static AWSService service = 
AWSServiceFactory.createSingletonSQSService();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckProfileCredsIT.java
 
b/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckProfileCredsIT.java
index 411a7b6acfc..01ff2eb6d2d 100644
--- 
a/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckProfileCredsIT.java
+++ 
b/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckProfileCredsIT.java
@@ -38,7 +38,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class Sqs2ConsumerHealthCheckProfileCredsIT extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createSQSService();
+    public static AWSService service = 
AWSServiceFactory.createSingletonSQSService();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckStaticCredsIT.java
 
b/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckStaticCredsIT.java
index 2b52b49baea..54648d8cdd6 100644
--- 
a/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckStaticCredsIT.java
+++ 
b/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/Sqs2ConsumerHealthCheckStaticCredsIT.java
@@ -38,7 +38,7 @@ import static 
org.testcontainers.shaded.org.awaitility.Awaitility.await;
 public class Sqs2ConsumerHealthCheckStaticCredsIT extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createSQSService();
+    public static AWSService service = 
AWSServiceFactory.createSingletonSQSService();
 
     CamelContext context;
 
diff --git 
a/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/integration/Aws2SQSBaseTest.java
 
b/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/integration/Aws2SQSBaseTest.java
index e617110c40c..e0d65a929bf 100644
--- 
a/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/integration/Aws2SQSBaseTest.java
+++ 
b/components/camel-aws/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/integration/Aws2SQSBaseTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.component.aws2.sqs.integration;
 
-import org.apache.camel.CamelContext;
+import org.apache.camel.*;
 import org.apache.camel.component.aws2.sqs.Sqs2Component;
 import org.apache.camel.test.infra.aws.common.services.AWSService;
 import org.apache.camel.test.infra.aws2.clients.AWSSDKClientUtils;
@@ -31,7 +31,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public abstract class Aws2SQSBaseTest extends CamelTestSupport {
 
     @RegisterExtension
-    public static AWSService service = AWSServiceFactory.createSQSService();
+    public static AWSService service = 
AWSServiceFactory.createSingletonSQSService();
 
     @RegisterExtension
     public static SharedNameGenerator sharedNameGenerator = new 
TestEntityNameGenerator();
diff --git 
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSServiceFactory.java
 
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSServiceFactory.java
index dcb06c49cb6..0ec890e87fd 100644
--- 
a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSServiceFactory.java
+++ 
b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSServiceFactory.java
@@ -17,16 +17,31 @@
 
 package org.apache.camel.test.infra.aws2.services;
 
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Supplier;
 
 import org.apache.camel.test.infra.aws.common.services.AWSService;
 import org.apache.camel.test.infra.common.services.SimpleTestServiceBuilder;
+import org.apache.camel.test.infra.common.services.SingletonService;
 
 public final class AWSServiceFactory {
     private AWSServiceFactory() {
 
     }
 
+    private static class SingletonAWSService extends 
SingletonService<AWSService> implements AWSService {
+        public SingletonAWSService(AWSService service, String name) {
+            super(service, name);
+        }
+
+        @Override
+        public Properties getConnectionProperties() {
+            return getService().getConnectionProperties();
+        }
+    }
+
     public static <T extends AWSService> SimpleTestServiceBuilder<T> builder() 
{
         return new SimpleTestServiceBuilder<>("aws");
     }
@@ -94,4 +109,41 @@ public final class AWSServiceFactory {
     public static AWSService createDynamodbService() {
         return createService(AWSDynamodbLocalContainerService::new);
     }
+
+    public static AWSService createSingletonDynamoDBService() {
+        return SingletonServiceHolder.getInstance(new 
AWSDynamodbLocalContainerService(), "dynamoDB");
+    }
+
+    public static AWSService createSingletonS3Service() {
+        return SingletonServiceHolder.getInstance(new 
AWSS3LocalContainerService(), "s3");
+    }
+
+    public static AWSService createSingletonSQSService() {
+        return SingletonServiceHolder.getInstance(new 
AWSSQSLocalContainerService(), "sqs");
+    }
+
+    public static AWSService createSingletonEventBridgeService() {
+        return SingletonServiceHolder.getInstance(new 
AWSEventBridgeLocalContainerService(), "eventBridge");
+    }
+
+    public static AWSService createSingletonKinesisService() {
+        return SingletonServiceHolder.getInstance(new 
AWSKinesisLocalContainerService(), "kinesis");
+    }
+
+    private static class SingletonServiceHolder {
+        private static final Map<String, AWSService> INSTANCES_HOLDER = new 
ConcurrentHashMap<>();
+
+        public synchronized static AWSService getInstance(AWSService service, 
String name) {
+            if (INSTANCES_HOLDER.get(name) == null) {
+                SimpleTestServiceBuilder<AWSService> instance = builder();
+                instance.addLocalMapping(() -> new 
SingletonAWSService(service, name))
+                        .addRemoteMapping(AWSRemoteService::new)
+                        .build();
+
+                INSTANCES_HOLDER.put(name, instance.build());
+            }
+
+            return INSTANCES_HOLDER.get(name);
+        }
+    }
 }
diff --git 
a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/SharedNameGenerator.java
 
b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/SharedNameGenerator.java
index 5e7af4be7a2..3f4f2698df5 100644
--- 
a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/SharedNameGenerator.java
+++ 
b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/SharedNameGenerator.java
@@ -22,4 +22,8 @@ import org.junit.jupiter.api.extension.BeforeEachCallback;
 
 public interface SharedNameGenerator extends BeforeAllCallback, 
BeforeEachCallback {
     String getName();
+
+    String getClazz();
+
+    String getMethod();
 }
diff --git 
a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/TestEntityNameGenerator.java
 
b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/TestEntityNameGenerator.java
index dca6388c5e5..e4c01bdcb30 100644
--- 
a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/TestEntityNameGenerator.java
+++ 
b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/TestEntityNameGenerator.java
@@ -38,4 +38,12 @@ public class TestEntityNameGenerator implements 
SharedNameGenerator {
     public String getName() {
         return testClass + testName;
     }
+
+    public String getClazz() {
+        return testClass;
+    }
+
+    public String getMethod() {
+        return testName;
+    }
 }

Reply via email to