Skip to content

Commit

Permalink
Fix lambda tests on localstack apache#2595
Browse files Browse the repository at this point in the history
  • Loading branch information
aldettinger authored and ppalaga committed Sep 19, 2021
1 parent d9c62f0 commit 5d751ba
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 20 deletions.
Expand Up @@ -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
Expand All @@ -64,7 +65,7 @@ public Response createFunction(byte[] message, @PathParam("functionName") String
new LinkedHashMap<String, Object>() {
{
put(Lambda2Constants.ROLE, roleArn);
put(Lambda2Constants.RUNTIME, "nodejs12.x");
put(Lambda2Constants.RUNTIME, Runtime.PYTHON3_9);
put(Lambda2Constants.HANDLER, "index.handler");
}
},
Expand Down
Expand Up @@ -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 {

Expand Down
Expand Up @@ -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 {
Expand Down Expand Up @@ -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");
Expand All @@ -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) {
Expand All @@ -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";
}
Expand Up @@ -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;

Expand Down Expand Up @@ -71,6 +73,8 @@ public Map<String, String> 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(),
Expand Down

0 comments on commit 5d751ba

Please sign in to comment.