This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 0a6f53f242f776165da502cd588158d8c3e5c957 Author: JiriOndrusek <[email protected]> AuthorDate: Wed Oct 20 12:41:35 2021 +0200 Aws2 tests with localstack don't need to use long timeouts #3207 --- .../aws2/ddb/it/Aws2DdbTestEnvCustomizer.java | 15 ++++-------- .../aws2/s3/it/Aws2S3TestEnvCustomizer.java | 14 +++-------- .../component/aws2/sqs/it/Aws2SqsSnsTest.java | 8 ++++++- .../quarkus/test/support/aws2/Aws2LocalStack.java | 28 ++++++++++++++++++++++ .../test/support/aws2/Aws2TestEnvContext.java | 9 +++++++ .../test/support/aws2/Aws2TestResource.java | 19 +++++++++------ 6 files changed, 63 insertions(+), 30 deletions(-) diff --git a/integration-test-groups/aws2-quarkus-client/aws2-ddb/src/test/java/org/apache/camel/quarkus/component/aws2/ddb/it/Aws2DdbTestEnvCustomizer.java b/integration-test-groups/aws2-quarkus-client/aws2-ddb/src/test/java/org/apache/camel/quarkus/component/aws2/ddb/it/Aws2DdbTestEnvCustomizer.java index dbc1f5f..7b73115 100644 --- a/integration-test-groups/aws2-quarkus-client/aws2-ddb/src/test/java/org/apache/camel/quarkus/component/aws2/ddb/it/Aws2DdbTestEnvCustomizer.java +++ b/integration-test-groups/aws2-quarkus-client/aws2-ddb/src/test/java/org/apache/camel/quarkus/component/aws2/ddb/it/Aws2DdbTestEnvCustomizer.java @@ -25,7 +25,6 @@ import java.util.stream.Stream; import org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvContext; import org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer; -import org.apache.camel.quarkus.test.support.aws2.Aws2TestResource; import org.apache.commons.lang3.RandomStringUtils; import org.testcontainers.containers.localstack.LocalStackContainer.Service; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; @@ -86,16 +85,10 @@ public class Aws2DdbTestEnvCustomizer implements Aws2TestEnvCustomizer { } Map<String, String> envContextProperties = envContext.getProperies(); - String accessKey = envContextProperties.getOrDefault("camel.component.aws2-ddb.access-key", - System.getenv(Aws2TestResource.AWS_ACCESS_KEY)); - String secretKey = envContextProperties.getOrDefault("camel.component.aws2-ddb.secret-key", - System.getenv(Aws2TestResource.AWS_SECRET_KEY)); - String region = envContextProperties.getOrDefault("camel.component.aws2-ddb.region", - System.getenv(Aws2TestResource.AWS_REGION)); - - envContext.property("quarkus.dynamodb.aws.credentials.static-provider.access-key-id", accessKey); - envContext.property("quarkus.dynamodb.aws.credentials.static-provider.secret-access-key", secretKey); - envContext.property("quarkus.dynamodb.aws.region", region); + + envContext.property("quarkus.dynamodb.aws.credentials.static-provider.access-key-id", envContext.getAccessKey()); + envContext.property("quarkus.dynamodb.aws.credentials.static-provider.secret-access-key", envContext.getSecretKey()); + envContext.property("quarkus.dynamodb.aws.region", envContext.getRegion()); envContext.property("quarkus.dynamodb.aws.credentials.type", "static"); // Propagate localstack environment config to Quarkus AWS if required diff --git a/integration-test-groups/aws2-quarkus-client/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/s3/it/Aws2S3TestEnvCustomizer.java b/integration-test-groups/aws2-quarkus-client/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/s3/it/Aws2S3TestEnvCustomizer.java index 2a06ac7..7dd7cab 100644 --- a/integration-test-groups/aws2-quarkus-client/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/s3/it/Aws2S3TestEnvCustomizer.java +++ b/integration-test-groups/aws2-quarkus-client/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/s3/it/Aws2S3TestEnvCustomizer.java @@ -22,7 +22,6 @@ import java.util.Optional; import org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvContext; import org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer; -import org.apache.camel.quarkus.test.support.aws2.Aws2TestResource; import org.apache.commons.lang3.RandomStringUtils; import org.testcontainers.containers.localstack.LocalStackContainer.Service; import software.amazon.awssdk.services.kms.KmsClient; @@ -56,16 +55,9 @@ public class Aws2S3TestEnvCustomizer implements Aws2TestEnvCustomizer { Map<String, String> envContextProperties = envContext.getProperies(); - String accessKey = envContextProperties.getOrDefault("camel.component.aws2-s3.access-key", - System.getenv(Aws2TestResource.AWS_ACCESS_KEY)); - String secretKey = envContextProperties.getOrDefault("camel.component.aws2-s3.secret-key", - System.getenv(Aws2TestResource.AWS_SECRET_KEY)); - String region = envContextProperties.getOrDefault("camel.component.aws2-s3.region", - System.getenv(Aws2TestResource.AWS_REGION)); - - envContext.property("quarkus.s3.aws.credentials.static-provider.access-key-id", accessKey); - envContext.property("quarkus.s3.aws.credentials.static-provider.secret-access-key", secretKey); - envContext.property("quarkus.s3.aws.region", region); + envContext.property("quarkus.s3.aws.credentials.static-provider.access-key-id", envContext.getAccessKey()); + envContext.property("quarkus.s3.aws.credentials.static-provider.secret-access-key", envContext.getSecretKey()); + envContext.property("quarkus.s3.aws.region", envContext.getRegion()); envContext.property("quarkus.s3.aws.credentials.type", "static"); // Propagate localstack environment config to Quarkus AWS if required diff --git a/integration-test-groups/aws2/aws2-sqs-sns/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsSnsTest.java b/integration-test-groups/aws2/aws2-sqs-sns/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsSnsTest.java index 7c3dcb2..5cd02ae 100644 --- a/integration-test-groups/aws2/aws2-sqs-sns/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsSnsTest.java +++ b/integration-test-groups/aws2/aws2-sqs-sns/src/test/java/org/apache/camel/quarkus/component/aws2/sqs/it/Aws2SqsSnsTest.java @@ -32,6 +32,7 @@ import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.http.ContentType; +import org.apache.camel.quarkus.test.support.aws2.Aws2LocalStack; import org.apache.camel.quarkus.test.support.aws2.Aws2TestResource; import org.apache.commons.lang3.RandomStringUtils; import org.awaitility.Awaitility; @@ -48,6 +49,9 @@ import static org.hamcrest.core.Is.is; @QuarkusTestResource(Aws2TestResource.class) class Aws2SqsSnsTest { + @Aws2LocalStack + private boolean localStack; + @AfterEach public void purgeQueueAndWait() { String qName = getPredefinedQueueName(); @@ -55,7 +59,9 @@ class Aws2SqsSnsTest { // purge takes up to 60 seconds // all messages delivered within those 60 seconds might get deleted try { - TimeUnit.SECONDS.sleep(60); + if (!localStack) { + TimeUnit.SECONDS.sleep(60); + } } catch (InterruptedException ignored) { } Assertions.assertEquals(receiveMessageFromQueue(qName, false), ""); diff --git a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2LocalStack.java b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2LocalStack.java new file mode 100644 index 0000000..09fa1e8 --- /dev/null +++ b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2LocalStack.java @@ -0,0 +1,28 @@ +/* + * 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.test.support.aws2; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Aws2LocalStack { + +} diff --git a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java index a6f827e..a7db2ea 100644 --- a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java +++ b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestEnvContext.java @@ -194,7 +194,16 @@ public class Aws2TestEnvContext { return region; } + public String getAccessKey() { + return accessKey; + } + + public String getSecretKey() { + return secretKey; + } + public boolean isLocalStack() { return localstack.isPresent(); } + } diff --git a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestResource.java b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestResource.java index 0fa040f..a934165 100644 --- a/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestResource.java +++ b/integration-tests-support/aws2/src/main/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestResource.java @@ -37,18 +37,14 @@ import software.amazon.awssdk.core.SdkClient; public final class Aws2TestResource implements QuarkusTestResourceLifecycleManager { private static final Logger LOG = LoggerFactory.getLogger(Aws2TestResource.class); - public static final String AWS_ACCESS_KEY = "AWS_ACCESS_KEY"; - public static final String AWS_SECRET_KEY = "AWS_SECRET_KEY"; - public static final String AWS_REGION = "AWS_REGION"; - private Aws2TestEnvContext envContext; @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 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 boolean usingMockBackend = startMockBackend && !realCredentialsProvided; @@ -119,6 +115,15 @@ public final class Aws2TestResource implements QuarkusTestResourceLifecycleManag throw new RuntimeException("Could not set " + c.getName() + "." + f.getName(), e); } } + Aws2LocalStack localStackAnnot = f.getAnnotation(Aws2LocalStack.class); + if (localStackAnnot != null) { + f.setAccessible(true); + try { + f.set(testInstance, envContext.isLocalStack()); + } catch (IllegalArgumentException | IllegalAccessException e) { + throw new RuntimeException("Could not set " + c.getName() + "." + f.getName(), e); + } + } } c = c.getSuperclass(); }
