martin/tests/test-aws-lambda.sh

35 lines
1.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
have () {
hash -- "$1" 2>&-
}
if ! have sam; then
echo "The AWS Serverless Application Model Command Line Interface (AWS SAM CLI) "
echo "must be installed: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html"
exit 1
fi
# Just send a single request using `sam local invoke` to verify that
# the server boots, finds a source to serve, and can handle a request.
# TODO Run the fuller integration suite against this.
# In doing so, switch from `sam local invoke`, which starts and stops the
# server, to `sam local start-api`, which keeps it running.
EVENT=$(sam local generate-event apigateway http-api-proxy \
| jq '.rawPath="/"|.requestContext.http.method="GET"')
# `sam build` will copy the _entire_ context to a temporary directory,
# so just give it the files we need
mkdir -p .github/files/lambda-layer/bin/
if ! install ${MARTIN_BIN:-target/debug/martin} .github/files/lambda-layer/bin/; then
echo "Specify the binary, e.g. MARTIN_BIN=target/x86_64-linux-unknown-musl/release/martin just test-lambda"
exit 1
fi
cp ./tests/fixtures/pmtiles2/webp2.pmtiles .github/files/lambda-function/
sam build -t .github/files/lambda.yaml
echo "$EVENT" | sam local invoke -e - \
| jq -ne 'input.statusCode==200'