You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2020/11/09 16:36:31 UTC

[camel] branch master updated: Added service for AWS v2 SNS (#4587)

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new a165bb4  Added service for AWS v2 SNS (#4587)
a165bb4 is described below

commit a165bb483031d7c9271081e1ef437e556c5d9402
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Mon Nov 9 17:36:13 2020 +0100

    Added service for AWS v2 SNS (#4587)
---
 test-infra/camel-test-infra-aws-v2/pom.xml         |  6 +++++
 .../test/infra/aws2/clients/AWSSDKClientUtils.java | 27 ++++++++++++++++++++++
 .../test/infra/aws2/services/AWSContainer.java     | 10 ++++++++
 .../aws2/services/AWSLocalContainerService.java    |  2 +-
 ...rvice.java => AWSSNSLocalContainerService.java} | 26 ++++++++++-----------
 .../infra/aws2/services/AWSServiceFactory.java     | 17 ++++++++++++++
 .../camel/test/infra/aws2/services/Service.java    |  3 ++-
 7 files changed, 75 insertions(+), 16 deletions(-)

diff --git a/test-infra/camel-test-infra-aws-v2/pom.xml b/test-infra/camel-test-infra-aws-v2/pom.xml
index c0e9819..383284f 100644
--- a/test-infra/camel-test-infra-aws-v2/pom.xml
+++ b/test-infra/camel-test-infra-aws-v2/pom.xml
@@ -72,6 +72,12 @@
 
         <dependency>
             <groupId>software.amazon.awssdk</groupId>
+            <artifactId>sns</artifactId>
+            <version>${aws-java-sdk2-version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>software.amazon.awssdk</groupId>
             <artifactId>apache-client</artifactId>
             <version>${aws-java-sdk2-version}</version>
         </dependency>
diff --git a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/clients/AWSSDKClientUtils.java b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/clients/AWSSDKClientUtils.java
index 0bdc4e0..82f985e 100644
--- a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/clients/AWSSDKClientUtils.java
+++ b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/clients/AWSSDKClientUtils.java
@@ -30,6 +30,8 @@ import software.amazon.awssdk.services.kinesis.KinesisClient;
 import software.amazon.awssdk.services.kinesis.KinesisClientBuilder;
 import software.amazon.awssdk.services.s3.S3Client;
 import software.amazon.awssdk.services.s3.S3ClientBuilder;
+import software.amazon.awssdk.services.sns.SnsClient;
+import software.amazon.awssdk.services.sns.SnsClientBuilder;
 import software.amazon.awssdk.services.sqs.SqsClient;
 import software.amazon.awssdk.services.sqs.SqsClientBuilder;
 
@@ -131,4 +133,29 @@ public final class AWSSDKClientUtils {
 
         return clientBuilder.build();
     }
+
+    public static SnsClient newSNSClient() {
+        LOG.debug("Creating a new SNS client");
+
+        String awsInstanceType = System.getProperty("aws-service.instance.type");
+
+        SnsClientBuilder clientBuilder = SnsClient.builder();
+
+        clientBuilder.region(Region.US_EAST_1);
+
+        URI endpoint = getEndpoint();
+
+        if (isLocalContainer(awsInstanceType) || endpoint != null) {
+            clientBuilder.endpointOverride(endpoint);
+        }
+
+        if (isLocalContainer(awsInstanceType)) {
+            clientBuilder.credentialsProvider(TestAWSCredentialsProvider.CONTAINER_LOCAL_DEFAULT_PROVIDER);
+
+        } else {
+            clientBuilder.credentialsProvider(new SystemPropertiesAWSCredentialsProvider());
+        }
+
+        return clientBuilder.build();
+    }
 }
diff --git a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSContainer.java b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSContainer.java
index 6c2f50e..475454f 100644
--- a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSContainer.java
+++ b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSContainer.java
@@ -51,6 +51,16 @@ public class AWSContainer extends GenericContainer<AWSContainer> {
                 .map(Service::serviceName)
                 .collect(Collectors.joining(","));
 
+        setupContainer(serviceList);
+    }
+
+    protected AWSContainer(String container, String serviceList) {
+        super(container);
+
+        setupContainer(serviceList);
+    }
+
+    protected void setupContainer(String serviceList) {
         LOG.debug("Creating services {}", serviceList);
         withEnv("SERVICE", serviceList);
         withExposedPorts(SERVICE_PORT);
diff --git a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerService.java b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerService.java
index c2f17b2..fe3ec31 100644
--- a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerService.java
+++ b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSLocalContainerService.java
@@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory;
 import software.amazon.awssdk.auth.credentials.AwsCredentials;
 import software.amazon.awssdk.regions.Region;
 
-abstract class AWSLocalContainerService<T> implements AWSService<T>, ContainerService<AWSContainer> {
+public abstract class AWSLocalContainerService<T> implements AWSService<T>, ContainerService<AWSContainer> {
     private static final Logger LOG = LoggerFactory.getLogger(AWSLocalContainerService.class);
     private AWSContainer container;
 
diff --git a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerService.java
similarity index 59%
copy from test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
copy to test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerService.java
index 099500b..3f34b53 100644
--- a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
+++ b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/AWSSNSLocalContainerService.java
@@ -17,22 +17,20 @@
 
 package org.apache.camel.test.infra.aws2.services;
 
-public enum Service {
-    KINESIS("kinesis"),
-    SQS("sqs"),
-    S3("s3");
+import org.apache.camel.test.infra.aws2.common.TestAWSCredentialsProvider;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.sqs.SqsClient;
 
-    private final String serviceName;
+public class AWSSNSLocalContainerService extends AWSLocalContainerService<SqsClient> {
 
-    Service(String serviceName) {
-        this.serviceName = serviceName;
-    }
-
-    public String getServiceName() {
-        return serviceName;
-    }
+    @Override
+    public SqsClient getClient() {
+        Region region = Region.US_EAST_1;
 
-    public static String serviceName(Service service) {
-        return service.serviceName;
+        return SqsClient.builder()
+                .region(region)
+                .credentialsProvider(TestAWSCredentialsProvider.CONTAINER_LOCAL_DEFAULT_PROVIDER)
+                .endpointOverride(getServiceEndpoint())
+                .build();
     }
 }
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 02b3242..a08f188 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
@@ -90,4 +90,21 @@ public final class AWSServiceFactory {
                 awsInstanceType);
         throw new UnsupportedOperationException("Invalid AWS instance type");
     }
+
+    public static AWSService<SqsClient> createSNSService() {
+        String awsInstanceType = System.getProperty("aws-service.instance.type");
+        LOG.info("Creating a {} AWS SNS instance", awsInstanceType);
+
+        if (awsInstanceType == null || awsInstanceType.equals("local-aws-container")) {
+            return new AWSSNSLocalContainerService();
+        }
+
+        if (awsInstanceType.equals("remote")) {
+            return new AWSRemoteService<>(AWSSDKClientUtils::newSQSClient);
+        }
+
+        LOG.error("Invalid AWS instance type: {}. Must be either 'remote' or 'local-aws-container'",
+                awsInstanceType);
+        throw new UnsupportedOperationException("Invalid AWS instance type");
+    }
 }
diff --git a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
index 099500b..1145399 100644
--- a/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
+++ b/test-infra/camel-test-infra-aws-v2/src/test/java/org/apache/camel/test/infra/aws2/services/Service.java
@@ -20,7 +20,8 @@ package org.apache.camel.test.infra.aws2.services;
 public enum Service {
     KINESIS("kinesis"),
     SQS("sqs"),
-    S3("s3");
+    S3("s3"),
+    SNS("sns");
 
     private final String serviceName;