Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions .github/workflows/dotnet-lambda-layer-perf-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
## Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
## SPDX-License-Identifier: Apache-2.0

name: DotNet Lambda Layer Performance Test
on:
workflow_dispatch:
inputs:
test_runs:
description: 'Number of test runs to perform'
required: true
default: 20
type: number

dotnet-version:
description: 'dotnet version to use'
required: true
default: '8.0.x'
type: string

jobs:
dotnet-lambda-layer-performance-test:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read

env:
NUM_TEST_RUNS: ${{ github.event.inputs.test_runs }}

steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ACCOUNT_ID }}:role/${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ROLE_NAME }}
aws-region: us-east-1

- name: Checkout aws-otel-dotnet-instrumentation
uses: actions/checkout@v4
with:
repository: aws-observability/aws-otel-dotnet-instrumentation
path: aws-otel-dotnet-instrumentation

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ github.event.inputs.dotnet-version }}

- name: Setup AWS Lambda Tools
run: dotnet tool install -g Amazon.Lambda.Tools

- name: Setup Terraform
uses: hashicorp/setup-terraform@v2

- name: Build and Deploy .NET Sample App and Lambda Layer
run: |
cd aws-otel-dotnet-instrumentation/sample-applications/lambda-test-apps/SimpleLambdaFunction/
./build-and-deploy.sh

- name: Checkout current repository
uses: actions/checkout@v4
with:
path: current-repo

- name: Run Cold Start Iterations for Base Lambda + Lambda Layer
run: |
cd current-repo
chmod +x lambda-layer-perf-test/lambda-layer-run.sh
./lambda-layer-perf-test/lambda-layer-run.sh false SimpleLambdaFunction

- name: Remove Application Signals Lambda Layer
run: |
echo "Removing Lambda layer..."

OUTPUT=$(aws lambda update-function-configuration \
--function-name SimpleLambdaFunction \
--layers [])

echo "Lambda configuration:"
echo "$OUTPUT"

LAYERS=$(echo "$OUTPUT" | jq -r '.Layers | length')

if [ "$LAYERS" -ne 0 ]; then
echo "::error::Found $LAYERS layer(s) still attached to the function"
echo "::error::Layer details:"
echo "$OUTPUT" | jq -r '.Layers'
exit 1
else
echo "✅ Layers successfully removed"
fi

- name: Run Cold Start Iterations for Base Lambda
run: |
cd current-repo
chmod +x lambda-layer-perf-test/lambda-layer-run.sh
./lambda-layer-perf-test/lambda-layer-run.sh true SimpleLambdaFunction

- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: dotnet-performance-test-results
path: |
no_layer_results.txt
layer_results.txt
retention-days: 90

- name: Cleanup Terraform Resources
if: success() || failure() || cancelled()
run: |
cd aws-otel-dotnet-instrumentation/sample-applications/lambda-test-apps/SimpleLambdaFunction/terraform/lambda
echo "Starting Terraform cleanup..."
terraform init
terraform destroy -auto-approve
2 changes: 1 addition & 1 deletion .github/workflows/node-lambda-layer-perf-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ jobs:
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: performance-test-results
name: js-performance-test-results
path: |
no_layer_results.txt
layer_results.txt
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-lambda-layer-perf-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ jobs:
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: performance-test-results
name: python-performance-test-results
path: |
no_layer_results.txt
layer_results.txt
Expand Down