test: add x_ray assertion #763
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Integration Tests | |
| on: | |
| pull_request: | |
| branches: [ main ] | |
| permissions: | |
| contents: read | |
| id-token: write | |
| jobs: | |
| integration-tests: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.13"] | |
| steps: | |
| - name: Checkout Language SDK (this PR) | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| path: language-sdk | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Hatch | |
| run: python -m pip install hatch==1.16.5 | |
| - name: Setup and run tests | |
| working-directory: language-sdk | |
| run: | | |
| echo "Running SDK tests..." | |
| hatch run types:check | |
| hatch run test:cov | |
| - name: Verify package build | |
| working-directory: language-sdk/packages/aws-durable-execution-sdk-python | |
| run: hatch build | |
| e2e-tests: | |
| needs: integration-tests | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| env: | |
| AWS_REGION: us-west-2 | |
| steps: | |
| - name: Checkout Language SDK (this PR) | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| path: language-sdk | |
| - name: Set up Python 3.13 | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: '3.13' | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6.2.0 | |
| with: | |
| role-to-assume: "${{ secrets.ACTIONS_INTEGRATION_ROLE_NAME }}" | |
| role-session-name: languageSDKIntegrationTest | |
| aws-region: ${{ env.AWS_REGION }} | |
| - name: Install Hatch | |
| run: python -m pip install hatch==1.16.5 | |
| - name: Get integration examples | |
| id: get-examples | |
| working-directory: language-sdk/packages/aws-durable-execution-sdk-python-examples | |
| run: | | |
| echo "examples=$(jq -c '.examples | map(select(.integration == true)) | .[0:2]' examples-catalog.json)" >> $GITHUB_OUTPUT | |
| - name: Install AWS CLI v2 | |
| run: | | |
| curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "/tmp/awscliv2.zip" | |
| unzip -q /tmp/awscliv2.zip -d /tmp | |
| rm /tmp/awscliv2.zip | |
| sudo /tmp/aws/install --update | |
| rm -rf /tmp/aws/ | |
| - name: Deploy and test examples | |
| working-directory: language-sdk | |
| env: | |
| AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
| LAMBDA_ENDPOINT: "https://lambda.us-west-2.amazonaws.com" | |
| INVOKE_ACCOUNT_ID: ${{ secrets.INVOKE_ACCOUNT_ID }} | |
| KMS_KEY_ARN: ${{ secrets.KMS_KEY_ARN }} | |
| run: | | |
| echo "Building examples..." | |
| hatch run examples:build | |
| # Get first integration example for testing | |
| EXAMPLE_NAME=$(echo '${{ steps.get-examples.outputs.examples }}' | jq -r '.[0].name') | |
| EXAMPLE_NAME_CLEAN=$(echo "$EXAMPLE_NAME" | sed 's/ //g') | |
| FUNCTION_NAME="${EXAMPLE_NAME_CLEAN}-LanguageSDK-PR-${{ github.event.number }}" | |
| echo "Deploying example: $EXAMPLE_NAME as $FUNCTION_NAME" | |
| hatch run examples:deploy "$EXAMPLE_NAME" --function-name "$FUNCTION_NAME" | |
| QUALIFIED_FUNCTION_NAME="$FUNCTION_NAME:\$LATEST" | |
| echo "Waiting for function to be ready..." | |
| aws lambda wait function-active --function-name "$FUNCTION_NAME" --endpoint-url "$LAMBDA_ENDPOINT" --region "${{ env.AWS_REGION }}" | |
| echo "Invoking Lambda function: $QUALIFIED_FUNCTION_NAME" | |
| aws lambda invoke \ | |
| --function-name "$QUALIFIED_FUNCTION_NAME" \ | |
| --cli-binary-format raw-in-base64-out \ | |
| --payload '{"name": "World"}' \ | |
| --region "${{ env.AWS_REGION }}" \ | |
| --endpoint-url "$LAMBDA_ENDPOINT" \ | |
| /tmp/response.json \ | |
| > /tmp/invoke_response.json | |
| echo "Response:" | |
| cat /tmp/response.json | |
| # Check for function errors | |
| FUNCTION_ERROR=$(jq -r '.FunctionError // empty' /tmp/invoke_response.json) | |
| if [ -n "$FUNCTION_ERROR" ]; then | |
| echo "ERROR: Lambda function failed with error: $FUNCTION_ERROR" | |
| cat /tmp/response.json | |
| exit 1 | |
| fi | |
| echo "Getting durable executions..." | |
| aws lambda list-durable-executions-by-function \ | |
| --function-name "$QUALIFIED_FUNCTION_NAME" \ | |
| --statuses SUCCEEDED \ | |
| --region "${{ env.AWS_REGION }}" \ | |
| --endpoint-url "$LAMBDA_ENDPOINT" \ | |
| --cli-binary-format raw-in-base64-out \ | |
| > /tmp/executions.json | |
| echo "Durable Executions:" | |
| cat /tmp/executions.json | |
| # Cleanup | |
| echo "Cleaning up function: $FUNCTION_NAME" | |
| aws lambda delete-function \ | |
| --function-name "$FUNCTION_NAME" \ | |
| --endpoint-url "$LAMBDA_ENDPOINT" \ | |
| --region "${{ env.AWS_REGION }}" || echo "Function cleanup failed or already deleted" |