Upload new external data package for every benchmark run (#2100)

This commit is contained in:
Bart Louwers
2024-02-12 12:14:33 +01:00
committed by GitHub
parent 8df3d33d8c
commit 9ec8afff9d
2 changed files with 52 additions and 7 deletions

View File

@@ -26,12 +26,6 @@ jobs:
appFile: "MapboxGLAndroidSDKTestApp-drawable-release.apk",
name: "Android Benchmark",
testFilter: "org.maplibre.android.benchmark.Benchmark",
# echo '{"styleNames": [...], "styleURLs": [...], "resultsAPI: "..." }' > benchmark-input.json
# zip benchmark-input.zip benchmark-input.json
# aws devicefarm create-upload --project-arn <project_arn> --type EXTERNAL_DATA --name benchmark-input.zip
# curl -T benchmark-input.zip <upload_url>
# aws devicefarm get-upload <arn>
externalData: "arn:aws:devicefarm:us-west-2:373521797162:upload:20687d72-0e46-403e-8f03-0941850665bc/c27174c2-63f4-4cdb-9af9-68957d75ebed",
# top devices, query with `aws list-device-pools --arn <project_arn>`
devicePool: "arn:aws:devicefarm:us-west-2::devicepool:082d10e5-d7d7-48a5-ba5c-b33d66efa1f5",
# benchmark-android.yaml
@@ -83,6 +77,14 @@ jobs:
with:
files: "${{ matrix.test.testFile }}, ${{ matrix.test.appFile }}"
- name: Upload external data for benchmark
if: matrix.test.name == 'Android Benchmark'
run: |
export RESULTS_API=${{ secrets.MLN_RESULTS_API }}
export AWS_DEVICE_FARM_PROJECT_ARN=${{ vars.AWS_DEVICE_FARM_PROJECT_ARN }}
upload_arn="$(.github/workflows/android-device-test/upload-external-data.sh)"
echo external_data_arn="$upload_arn" >> "$GITHUB_ENV"
- uses: ./.github/actions/aws-device-farm-run
if: steps.check_files.outputs.files_exists == 'true' && (matrix.test.name != 'Android Benchmark' || steps.fc.outputs.comment-id)
with:
@@ -98,7 +100,7 @@ jobs:
AWS_ROLE_TO_ASSUME: ${{ vars.AWS_ROLE_TO_ASSUME }}
AWS_DEVICE_FARM_PROJECT_ARN: ${{ vars.AWS_DEVICE_FARM_PROJECT_ARN }}
AWS_DEVICE_FARM_DEVICE_POOL_ARN: ${{ matrix.test.devicePool }}
externalData: ${{ matrix.test.externalData }}
externalData: ${{ env.external_data_arn }}
testSpecArn: ${{ matrix.test.testSpecArn }}
- uses: LouisBrunner/checks-action@v2.0.0

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# Check if the required variables are defined
if [ -z "$RESULTS_API" ] || [ -z "$AWS_DEVICE_FARM_PROJECT_ARN" ]; then
echo "Error: Missing required variables."
usage
fi
cd "$(mktemp -d)"
cat << EOF > benchmark-input.json
{
"styleNames": ["Facebook Light", "MapTiler Basic", "Americana"],
"styleURLs": [
"https://external.xx.fbcdn.net/maps/vt/style/canterbury_1_0/?locale=en_US",
"https://api.maptiler.com/maps/basic-v2/style.json?key=get_your_own_OpIi9ZULNHzrESv6T2vL",
"https://zelonewolf.github.io/openstreetmap-americana/style.json"
],
"resultsAPI": "$RESULTS_API"
}
EOF
>&2 zip benchmark-input.zip benchmark-input.json
upload_json="$(aws devicefarm create-upload --project-arn "$AWS_DEVICE_FARM_PROJECT_ARN" --type EXTERNAL_DATA --name benchmark-input.zip --output json)"
upload_url="$(echo "$upload_json" | jq -r '.upload.url')"
upload_arn="$(echo "$upload_json" | jq -r '.upload.arn')"
curl -T benchmark-input.zip "$upload_url"
retries=5
while true; do
upload_status="$(aws devicefarm get-upload --arn "$upload_arn" --output text --query upload.status)"
>&2 echo "Upload $upload_status"
sleep 1
if [[ "$upload_status" == "SUCCEEDED" ]]; then
break
fi
if (( --retries == 0 )); then
exit 1
fi
done
echo "$upload_arn"