This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 17408075ebbf804a0822f1366e5c806e1173e0be Author: Peter Palaga <ppal...@redhat.com> AuthorDate: Wed Feb 3 20:33:48 2021 +0100 Test AWS 2 S3 properly --- integration-tests/aws2-s3/README.adoc | 21 ++++ integration-tests/aws2-s3/pom.xml | 140 +++++++++++++++++++++ .../quarkus/component/aws2/Aws2S3Resource.java | 116 +++++++++++++++++ .../src/main/resources/application.properties | 23 ++++ .../camel/quarkus/component/aws2/Aws2S3IT.java | 24 ++++ .../camel/quarkus/component/aws2/Aws2S3Test.java | 127 +++++++++++++++++++ .../quarkus/component/aws2/AwsTestResource.java | 106 ++++++++++++++++ integration-tests/aws2/pom.xml | 17 --- .../camel/quarkus/component/aws2/CamelRoute.java | 6 - .../aws2/src/main/resources/application.properties | 4 - integration-tests/pom.xml | 1 + pom.xml | 3 +- poms/bom-test/pom.xml | 10 ++ tooling/scripts/test-categories.yaml | 1 + 14 files changed, 571 insertions(+), 28 deletions(-) diff --git a/integration-tests/aws2-s3/README.adoc b/integration-tests/aws2-s3/README.adoc new file mode 100644 index 0000000..c583472 --- /dev/null +++ b/integration-tests/aws2-s3/README.adoc @@ -0,0 +1,21 @@ +== AWS 2 S3 integration tests + +By default, the tests are run against a https://github.com/localstack/localstack[Localstack] container. + +To run the tests against the real AWS API, you need to + +* Export Your + https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys[AWS credentials] + (access key ID and secret access key) +* Export our preferred + https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions[AWS region]. + +[source,shell] +---- +export AWS_ACCESS_KEY=<your-access-key-id> +export AWS_SECRET_KEY=<your-secret-access-key> +export AWS_REGION=eu-central-1 +---- + +You may want to `export CAMEL_QUARKUS_START_MOCK_BACKEND=false` to force testing against +the real AWS API. \ No newline at end of file diff --git a/integration-tests/aws2-s3/pom.xml b/integration-tests/aws2-s3/pom.xml new file mode 100644 index 0000000..f7afa20 --- /dev/null +++ b/integration-tests/aws2-s3/pom.xml @@ -0,0 +1,140 @@ +<?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"> + <parent> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-integration-tests</artifactId> + <version>1.7.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>camel-quarkus-integration-test-aws2-s3</artifactId> + <name>Camel Quarkus :: Integration Tests :: AWS2 S3</name> + <description>The camel integration tests</description> + + <dependencies> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-main</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-aws2-s3</artifactId> + </dependency> + <dependency> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-resteasy</artifactId> + </dependency> + <dependency> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-resteasy-jackson</artifactId> + </dependency> + + <!-- test dependencies --> + <dependency> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-junit5</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>io.rest-assured</groupId> + <artifactId>rest-assured</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-integration-testcontainers-support</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-integration-test-support-mock-backend</artifactId> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>localstack</artifactId> + <scope>test</scope> + </dependency> + <dependency><!-- Workaround for https://github.com/testcontainers/testcontainers-java/issues/1442 --> + <groupId>com.amazonaws</groupId> + <artifactId>aws-java-sdk-core</artifactId> + <scope>test</scope> + </dependency> + + <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory --> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-aws2-s3-deployment</artifactId> + <version>${project.version}</version> + <type>pom</type> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-main-deployment</artifactId> + <version>${project.version}</version> + <type>pom</type> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + </dependencies> + + <profiles> + <profile> + <id>native</id> + <activation> + <property> + <name>native</name> + </property> + </activation> + <properties> + <quarkus.package.type>native</quarkus.package.type> + </properties> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>integration-test</goal> + <goal>verify</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + +</project> diff --git a/integration-tests/aws2-s3/src/main/java/org/apache/camel/quarkus/component/aws2/Aws2S3Resource.java b/integration-tests/aws2-s3/src/main/java/org/apache/camel/quarkus/component/aws2/Aws2S3Resource.java new file mode 100644 index 0000000..8d7903f --- /dev/null +++ b/integration-tests/aws2-s3/src/main/java/org/apache/camel/quarkus/component/aws2/Aws2S3Resource.java @@ -0,0 +1,116 @@ +/* + * 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.quarkus.component.aws2; + +import java.net.URI; +import java.util.List; +import java.util.stream.Collectors; + +import javax.enterprise.context.ApplicationScoped; +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import org.apache.camel.ConsumerTemplate; +import org.apache.camel.ProducerTemplate; +import org.apache.camel.component.aws2.s3.AWS2S3Constants; +import org.apache.camel.component.aws2.s3.AWS2S3Operations; +import org.eclipse.microprofile.config.inject.ConfigProperty; +import software.amazon.awssdk.services.s3.model.S3Object; + +@Path("/aws2") +@ApplicationScoped +public class Aws2S3Resource { + + @Inject + ProducerTemplate producerTemplate; + + @Inject + ConsumerTemplate consumerTemplate; + + @ConfigProperty(name = "aws-s3.bucket-name") + String bucketName; + + @Path("s3/object/{key}") + @POST + @Consumes(MediaType.TEXT_PLAIN) + public Response post(String message, @PathParam("key") String key) throws Exception { + producerTemplate.sendBodyAndHeader(componentUri(), + message, + AWS2S3Constants.KEY, + key); + return Response.created(new URI("https://camel.apache.org/")).build(); + } + + @Path("s3/object/{key}") + @GET + @Produces(MediaType.TEXT_PLAIN) + public String get(@PathParam("key") String key) throws Exception { + return producerTemplate.requestBodyAndHeader( + componentUri(AWS2S3Operations.getObject), + null, + AWS2S3Constants.KEY, + key, + String.class); + } + + @Path("s3/poll-object/{key}") + @GET + @Produces(MediaType.TEXT_PLAIN) + public String pollObject(@PathParam("key") String key) throws Exception { + return consumerTemplate.receiveBody(componentUri() + "?fileName=" + key, 10000, String.class); + } + + @Path("s3/object/{key}") + @DELETE + @Produces(MediaType.TEXT_PLAIN) + public Response read(@PathParam("key") String key) throws Exception { + producerTemplate.sendBodyAndHeader( + componentUri(AWS2S3Operations.deleteObject), + null, + AWS2S3Constants.KEY, + key); + return Response.noContent().build(); + } + + @Path("s3/object-keys") + @GET + @Produces(MediaType.APPLICATION_JSON) + public List<String> objectKey() throws Exception { + final List<S3Object> objects = (List<S3Object>) producerTemplate.requestBody( + componentUri(AWS2S3Operations.listObjects), + null, + List.class); + return objects.stream().map(S3Object::key).collect(Collectors.toList()); + } + + private String componentUri(final AWS2S3Operations operation) { + return String.format("aws2-s3://%s?operation=%s", bucketName, operation); + } + + private String componentUri() { + return String.format("aws2-s3://%s", bucketName); + } + +} diff --git a/integration-tests/aws2-s3/src/main/resources/application.properties b/integration-tests/aws2-s3/src/main/resources/application.properties new file mode 100644 index 0000000..967305c --- /dev/null +++ b/integration-tests/aws2-s3/src/main/resources/application.properties @@ -0,0 +1,23 @@ +## --------------------------------------------------------------------------- +## 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. +## --------------------------------------------------------------------------- + +# +# Camel :: AWS2 options +# +camel.component.aws2-s3.access-key=${AWS_ACCESS_KEY} +camel.component.aws2-s3.secret-key=${AWS_SECRET_KEY} +camel.component.aws2-s3.region=${AWS_REGION:us-east-1} diff --git a/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3IT.java b/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3IT.java new file mode 100644 index 0000000..3e29975 --- /dev/null +++ b/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3IT.java @@ -0,0 +1,24 @@ +/* + * 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.quarkus.component.aws2; + +import io.quarkus.test.junit.NativeImageTest; + +@NativeImageTest +class Aws2S3IT extends Aws2S3Test { + +} diff --git a/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3Test.java b/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3Test.java new file mode 100644 index 0000000..98d1233 --- /dev/null +++ b/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3Test.java @@ -0,0 +1,127 @@ +/* + * 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.quarkus.component.aws2; + +import java.util.UUID; +import java.util.stream.Stream; + +import io.quarkus.test.common.QuarkusTestResource; +import io.quarkus.test.junit.QuarkusTest; +import io.restassured.RestAssured; +import io.restassured.http.ContentType; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import static org.hamcrest.core.Is.is; + +@QuarkusTest +@QuarkusTestResource(AwsTestResource.class) +class Aws2S3Test { + + @Test + public void crud() { + + final String oid = UUID.randomUUID().toString(); + final String blobContent = "Hello " + oid; + + // Make sure the object does not exist yet + final String[] objects = RestAssured.given() + .get("/aws2/s3/object-keys") + .then() + .statusCode(200) + .extract() + .body().as(String[].class); + Assertions.assertTrue(Stream.of(objects).noneMatch(key -> key.equals(oid))); + + // Create + RestAssured.given() + .contentType(ContentType.TEXT) + .body(blobContent) + .post("/aws2/s3/object/" + oid) + .then() + .statusCode(201); + + // Read + RestAssured.get("/aws2/s3/object/" + oid) + .then() + .statusCode(200) + .body(is(blobContent)); + + // Update + final String updatedContent = blobContent + " updated"; + RestAssured.given() + .contentType(ContentType.TEXT) + .body(updatedContent) + .post("/aws2/s3/object/" + oid) + .then() + .statusCode(201); + + // Read updated + RestAssured.get("/aws2/s3/object/" + oid) + .then() + .statusCode(200) + .body(is(updatedContent)); + + // Delete + RestAssured.delete("/aws2/s3/object/" + oid) + .then() + .statusCode(204); + } + + @Test + public void consumer() { + final String oid = UUID.randomUUID().toString(); + final String blobContent = "Hello " + oid; + + // Make sure the object does not exist yet + { + final String[] objects = RestAssured.given() + .get("/aws2/s3/object-keys") + .then() + .statusCode(200) + .extract() + .body().as(String[].class); + Assertions.assertTrue(Stream.of(objects).noneMatch(key -> key.equals(oid))); + } + + // Create + RestAssured.given() + .contentType(ContentType.TEXT) + .body(blobContent) + .post("/aws2/s3/object/" + oid) + .then() + .statusCode(201); + + // Consumer + RestAssured.get("/aws2/s3/poll-object/" + oid) + .then() + .statusCode(200) + .body(is(blobContent)); + + // Make sure the consumer has removed the file from the bucket + { + final String[] objects = RestAssured.given() + .get("/aws2/s3/object-keys") + .then() + .statusCode(200) + .extract() + .body().as(String[].class); + Assertions.assertTrue(Stream.of(objects).noneMatch(key -> key.equals(oid))); + } + } + +} diff --git a/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/AwsTestResource.java b/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/AwsTestResource.java new file mode 100644 index 0000000..ae20d3c --- /dev/null +++ b/integration-tests/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/AwsTestResource.java @@ -0,0 +1,106 @@ +/* + * 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.quarkus.component.aws2; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; + +import org.apache.camel.quarkus.test.mock.backend.MockBackendUtils; +import org.apache.camel.quarkus.testcontainers.ContainerResourceLifecycleManager; +import org.apache.commons.lang3.RandomStringUtils; +import org.testcontainers.containers.localstack.LocalStackContainer; +import org.testcontainers.containers.localstack.LocalStackContainer.Service; +import org.testcontainers.utility.DockerImageName; +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.s3.S3Client; +import software.amazon.awssdk.services.s3.model.CreateBucketRequest; +import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; + +public class AwsTestResource implements ContainerResourceLifecycleManager { + + private LocalStackContainer localstack; + private S3Client s3Client; + private String bucketName; + + @SuppressWarnings("resource") + @Override + public Map<String, String> start() { + final String realKey = System.getenv("AWS_ACCESS_KEY"); + final String realSecret = System.getenv("AWS_SECRET_KEY"); + final String realRegion = System.getenv("AWS_REGION"); + final boolean realCredentialsProvided = realKey != null && realSecret != null && realRegion != null; + final boolean startMockBackend = MockBackendUtils.startMockBackend(false); + final Map<String, String> result = new LinkedHashMap<>(); + + bucketName = "camel-quarkus-" + RandomStringUtils.randomAlphanumeric(49).toLowerCase(Locale.ROOT); + + if (startMockBackend && !realCredentialsProvided) { + MockBackendUtils.logMockBackendUsed(); + localstack = new LocalStackContainer(DockerImageName.parse("localstack/localstack:0.11.3")) + .withServices(Service.S3); + localstack.start(); + + result.put("camel.component.aws2-s3.access-key", localstack.getAccessKey()); + result.put("camel.component.aws2-s3.secret-key", localstack.getSecretKey()); + result.put("camel.component.aws2-s3.override-endpoint", "true"); + result.put("camel.component.aws2-s3.uri-endpoint-override", localstack.getEndpointOverride(Service.S3).toString()); + result.put("camel.component.aws2-s3.region", localstack.getRegion()); + + s3Client = S3Client + .builder() + .endpointOverride(localstack.getEndpointOverride(LocalStackContainer.Service.S3)) + .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create( + localstack.getAccessKey(), localstack.getSecretKey()))) + .region(Region.of(localstack.getRegion())) + .build(); + + } else { + if (!startMockBackend && !realCredentialsProvided) { + throw new IllegalStateException( + "Set AWS_ACCESS_KEY, AWS_SECRET_KEY and AWS_REGION env vars if you set CAMEL_QUARKUS_START_MOCK_BACKEND=false"); + } + MockBackendUtils.logRealBackendUsed(); + s3Client = S3Client + .builder() + .credentialsProvider( + StaticCredentialsProvider.create(AwsBasicCredentials.create(realKey, realSecret))) + .region(Region.of(realRegion)) + .build(); + } + + s3Client.createBucket(CreateBucketRequest.builder().bucket(bucketName).build()); + + result.put("aws-s3.bucket-name", bucketName); + + return Collections.unmodifiableMap(result); + } + + @Override + public void stop() { + if (s3Client != null) { + s3Client.deleteBucket(DeleteBucketRequest.builder().bucket(bucketName).build()); + s3Client.close(); + } + if (localstack != null && localstack.isRunning()) { + localstack.stop(); + } + } +} diff --git a/integration-tests/aws2/pom.xml b/integration-tests/aws2/pom.xml index bb443e9..95e8a69 100644 --- a/integration-tests/aws2/pom.xml +++ b/integration-tests/aws2/pom.xml @@ -84,10 +84,6 @@ </dependency> <dependency> <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-aws2-s3</artifactId> - </dependency> - <dependency> - <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-aws2-sns</artifactId> </dependency> <dependency> @@ -278,19 +274,6 @@ </dependency> <dependency> <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-aws2-s3-deployment</artifactId> - <version>${project.version}</version> - <type>pom</type> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-aws2-sns-deployment</artifactId> <version>${project.version}</version> <type>pom</type> diff --git a/integration-tests/aws2/src/main/java/org/apache/camel/quarkus/component/aws2/CamelRoute.java b/integration-tests/aws2/src/main/java/org/apache/camel/quarkus/component/aws2/CamelRoute.java index a47939e..c30ec40 100644 --- a/integration-tests/aws2/src/main/java/org/apache/camel/quarkus/component/aws2/CamelRoute.java +++ b/integration-tests/aws2/src/main/java/org/apache/camel/quarkus/component/aws2/CamelRoute.java @@ -31,12 +31,6 @@ public class CamelRoute extends RouteBuilder { .to("aws2-sqs://camel-1?delaySeconds=5") .to("log:sf?showAll=true"); - from("timer:quarkus-s3?repeatCount=1") - .setHeader("CamelAwsS3Key", constant("testquarkus")) - .setBody(constant("Quarkus is great!")) - .to("aws2-s3://camel-kafka-connector") - .to("log:sf?showAll=true"); - from("timer:quarkus-sns?repeatCount=1") .setBody(constant("Quarkus is great!")) .to("aws2-sns://topic1") diff --git a/integration-tests/aws2/src/main/resources/application.properties b/integration-tests/aws2/src/main/resources/application.properties index db11723..3df0357 100644 --- a/integration-tests/aws2/src/main/resources/application.properties +++ b/integration-tests/aws2/src/main/resources/application.properties @@ -18,10 +18,6 @@ # # Camel :: AWS2 options # -camel.component.aws2-s3.access-key={{env:AWS_ACCESS_KEY}} -camel.component.aws2-s3.secret-key={{env:AWS_SECRET_KEY}} -camel.component.aws2-s3.region={{env:AWS_REGION}} - camel.component.aws2-sqs.access-key={{env:AWS_ACCESS_KEY}} camel.component.aws2-sqs.secret-key={{env:AWS_SECRET_KEY}} camel.component.aws2-sqs.region={{env:AWS_REGION}} diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index fbae048..ccb619b 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -68,6 +68,7 @@ <module>avro-rpc</module> <module>aws</module> <module>aws2</module> + <module>aws2-s3</module> <module>azure</module> <module>azure-eventhubs</module> <module>azure-storage-blob</module> diff --git a/pom.xml b/pom.xml index 869dbaa..04b09b5 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,8 @@ <animal-sniffer.version>1.18</animal-sniffer.version> <antlr3.version>3.5.2</antlr3.version><!-- Spark, Stringtemplate and probably others --> <avro.version>${avro-version}</avro.version> - <awssdk1-swf-libs.version>1.11.22</awssdk1-swf-libs.version> + <aws-java-sdk.version>${aws-java-sdk-version}</aws-java-sdk.version> + <awssdk1-swf-libs.version>${aws-java-sdk-swf-libs}</awssdk1-swf-libs.version> <!-- TODO: Use azure-sdk-bom once they start maintaining it properly https://github.com/Azure/azure-sdk-for-java/issues/18759 --> <azure-core.version>1.8.1</azure-core.version><!-- keep compatible with the azure artifacts below --> <azure-sdk-bom.version>1.0.1</azure-sdk-bom.version> diff --git a/poms/bom-test/pom.xml b/poms/bom-test/pom.xml index 5923b9d..1eecbb0 100644 --- a/poms/bom-test/pom.xml +++ b/poms/bom-test/pom.xml @@ -164,6 +164,11 @@ </dependency> <dependency> <groupId>org.testcontainers</groupId> + <artifactId>localstack</artifactId> + <version>${testcontainers.version}</version> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> <artifactId>mongodb</artifactId> <version>${testcontainers.version}</version> </dependency> @@ -216,6 +221,11 @@ <artifactId>zt-exec</artifactId> <version>${zt-exec.version}</version> </dependency> + <dependency> + <groupId>com.amazonaws</groupId> + <artifactId>aws-java-sdk-core</artifactId> + <version>${aws-java-sdk.version}</version> + </dependency> </dependencies> </dependencyManagement> diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml index 5f959ae..b17b719 100644 --- a/tooling/scripts/test-categories.yaml +++ b/tooling/scripts/test-categories.yaml @@ -164,6 +164,7 @@ platform: - rest - rest-openapi - csimple + - aws2-s3 saas: - box - github