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 <orpi...@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;