diff --git a/integration-test-groups/aws2/aws2-lambda/src/main/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaResource.java b/integration-test-groups/aws2/aws2-lambda/src/main/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaResource.java index 0992a3cd00b0..133554c769cc 100644 --- a/integration-test-groups/aws2/aws2-lambda/src/main/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaResource.java +++ b/integration-test-groups/aws2/aws2-lambda/src/main/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaResource.java @@ -43,6 +43,7 @@ import software.amazon.awssdk.services.lambda.model.FunctionConfiguration; import software.amazon.awssdk.services.lambda.model.InvalidParameterValueException; import software.amazon.awssdk.services.lambda.model.ListFunctionsResponse; +import software.amazon.awssdk.services.lambda.model.Runtime; @Path("/aws2-lambda") @ApplicationScoped @@ -64,7 +65,7 @@ public Response createFunction(byte[] message, @PathParam("functionName") String new LinkedHashMap() { { put(Lambda2Constants.ROLE, roleArn); - put(Lambda2Constants.RUNTIME, "nodejs12.x"); + put(Lambda2Constants.RUNTIME, Runtime.PYTHON3_9); put(Lambda2Constants.HANDLER, "index.handler"); } }, diff --git a/integration-test-groups/aws2/aws2-lambda/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaIT.java b/integration-test-groups/aws2/aws2-lambda/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaIT.java index 835ae791eb24..a347dd7d8ed5 100644 --- a/integration-test-groups/aws2/aws2-lambda/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaIT.java +++ b/integration-test-groups/aws2/aws2-lambda/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaIT.java @@ -17,10 +17,7 @@ package org.apache.camel.quarkus.component.aws2.lambda.it; import io.quarkus.test.junit.NativeImageTest; -import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; -//TODO disabled on Localstack, see https://github.com/apache/camel-quarkus/issues/2595 -@EnabledIfEnvironmentVariable(named = "AWS_ACCESS_KEY", matches = "[a-zA-Z0-9]+") @NativeImageTest class Aws2LambdaIT extends Aws2LambdaTest { diff --git a/integration-test-groups/aws2/aws2-lambda/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaTest.java b/integration-test-groups/aws2/aws2-lambda/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaTest.java index c68b6084df68..92098ea25c14 100644 --- a/integration-test-groups/aws2/aws2-lambda/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaTest.java +++ b/integration-test-groups/aws2/aws2-lambda/src/test/java/org/apache/camel/quarkus/component/aws2/lambda/it/Aws2LambdaTest.java @@ -33,10 +33,7 @@ import org.hamcrest.Matchers; import org.jboss.logging.Logger; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; -//TODO disabled on Localstack, see https://github.com/apache/camel-quarkus/issues/2595 -@EnabledIfEnvironmentVariable(named = "AWS_ACCESS_KEY", matches = "[a-zA-Z0-9]+") @QuarkusTest @QuarkusTestResource(Aws2TestResource.class) class Aws2LambdaTest { @@ -96,8 +93,8 @@ public void e2e() { .post("/aws2-lambda/invoke/" + functionName) .then() .extract(); - System.out.println("Function " + functionName + " returned " + response.statusCode() - + "; will retry until timeout"); + String format = "Execution of aws2-lambda/invoke/%s returned status %d and content %s"; + System.out.println(String.format(format, functionName, response.statusCode(), response.asString())); switch (response.statusCode()) { case 200: final String greetings = response.jsonPath().getString("greetings"); @@ -118,7 +115,7 @@ public void e2e() { static byte[] createFunctionZip() { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (ZipOutputStream out = new ZipOutputStream(baos)) { - out.putNextEntry(new ZipEntry("index.js")); + out.putNextEntry(new ZipEntry("index.py")); out.write(FUNCTION_SOURCE.getBytes(StandardCharsets.UTF_8)); out.closeEntry(); } catch (IOException e) { @@ -127,12 +124,9 @@ static byte[] createFunctionZip() { return baos.toByteArray(); } - private static final String FUNCTION_SOURCE = "exports.handler = function(event, context, callback) {\n" - + " console.log(\"Received event: \", event);\n" - + " var data = {\n" - + " \"greetings\": \"Hello \" + event.firstName\n" - + " };\n" - + " callback(null, data);\n" - + "}\n"; - + private static final String FUNCTION_SOURCE = "def handler(event, context):\n" + + " message = 'Hello {}'.format(event['firstName'])\n" + + " return {\n" + + " 'greetings' : message\n" + + " }\n"; } 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 a4fecb2a2b5e..d6a12e90f1be 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 @@ -26,14 +26,16 @@ import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; import org.apache.camel.quarkus.test.mock.backend.MockBackendUtils; -import org.jboss.logging.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.testcontainers.containers.localstack.LocalStackContainer; import org.testcontainers.containers.localstack.LocalStackContainer.Service; +import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.utility.DockerImageName; import software.amazon.awssdk.core.SdkClient; public final class Aws2TestResource implements QuarkusTestResourceLifecycleManager { - private static final Logger LOG = Logger.getLogger(Aws2TestResource.class); + private static final Logger LOG = LoggerFactory.getLogger(Aws2TestResource.class); private Aws2TestEnvContext envContext; @@ -71,6 +73,8 @@ public Map start() { LocalStackContainer localstack = new LocalStackContainer(DockerImageName.parse("localstack/localstack:0.12.11")) .withServices(services); + localstack.withEnv("LAMBDA_EXECUTOR", "local"); + localstack.withLogConsumer(new Slf4jLogConsumer(LOG)); localstack.start(); envContext = new Aws2TestEnvContext(localstack.getAccessKey(), localstack.getSecretKey(), localstack.getRegion(),