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();
         }

Reply via email to