Skip to content

Performance Testing [workflow_dispatch][53-support-quicly-go] - 35.163.142.7/500ms delay #509

Performance Testing [workflow_dispatch][53-support-quicly-go] - 35.163.142.7/500ms delay

Performance Testing [workflow_dispatch][53-support-quicly-go] - 35.163.142.7/500ms delay #509

Workflow file for this run

name: PerformanceTests
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
AWS_INSTANCE_ID: ${{ secrets.AWS_INSTANCE_ID }}
on:
schedule:
- cron: '1 1 * * *'
workflow_dispatch:
inputs:
server_public_address:
description: 'public address for the server'
type: string
default: 35.163.142.7
required: true
server_private_address:
description: 'private address for the server'
type: string
default: 172.31.38.198
required: true
client_listen_address:
description: 'address for the client to listen on'
type: string
default: 172.31.21.30
required: true
connection_delay_device:
description: 'serverside network device to set delay on'
type: string
default: eth0
required: true
keep_aws_running:
description: 'keeps aws vm running for subsequent runs'
type: boolean
default: false
required: true
run-name: Performance Testing [${{ github.event_name }}][${{ github.head_ref || github.ref_name }}] - ${{ inputs.server_public_address || '35.163.142.7' }}/${{ inputs.connect_delay_ms || '500' }}ms delay
jobs:
launch-aws-vm:
runs-on: ubuntu-latest
steps:
- name: Install AWS cli
id: install-aws-cli
uses: unfor19/install-aws-cli-action@master
with:
version: "2"
- run: |
aws --version
# run the instance
aws ec2 start-instances --instance-ids ${{ secrets.AWS_INSTANCE_ID }}
shell: bash
- run: |
# assure that the instance is stopped on error
aws ec2 stop-instances --instance-ids ${{ secrets.AWS_INSTANCE_ID }}
shell: bash
if: ${{ failure() && ! inputs.keep_aws_running }}
stop-aws-vm:
runs-on: ubuntu-latest
needs: performance-run
if: ${{ always() && ! inputs.keep_aws_running }}
steps:
- name: Install AWS cli
id: install-aws-cli
uses: unfor19/install-aws-cli-action@master
with:
version: "2"
- run: |
# assure that the instance is stopped even on error
aws ec2 stop-instances --instance-ids ${{ secrets.AWS_INSTANCE_ID }}
shell: bash
performance-run:
needs: launch-aws-vm
strategy:
max-parallel: 1
matrix:
backend: [ 'quic-go', 'quicly-go' ]
cca: [ 'reno' ]
slowstart: [ 'search' ]
connection_delay_ms: [ 0, 500 ]
# backend: [ 'quic-go', 'quicly-go' ]
# cca: [ 'reno', 'cubic' ]
# slowstart: [ 'basic', 'search' ]
# connection_delay_ms: [ 0, 500 ]
# exclude:
# - backend: 'quic-go'
# slowstart: 'search'
# - backend: 'quic-go'
# cca: 'cubic'
uses: './.github/workflows/common-performance.yml'
with:
server_public_address: ${{ inputs.server_public_address }}
server_private_address: ${{ inputs.server_private_address }}
client_listen_address: ${{ inputs.client_listen_address }}
connection_delay_device: ${{ inputs.connection_delay_device }}
connection_delay_ms: ${{ matrix.connection_delay_ms }}
backend: ${{ matrix.backend }}
cca: ${{ matrix.cca }}
slowstart: ${{ matrix.slowstart }}
secrets: inherit
performance-results:
needs: performance-run
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}
ARTIFACT_KEY: results-${{ github.head_ref || github.ref_name }}-${{ github.sha }}
steps:
- name: Install the github cli
uses: sersoft-gmbh/setup-gh-cli-action@v2
with:
version:
stable
- name: Download results artifacts
run: |
CURRENT_RUN=$(gh run list --json databaseId -w PerformanceTests -L 1 -q .[].databaseId)
if [[ "${CURRENT_RUN}" -eq "" ]]; then
exit 1
fi
echo "CURRENT_RUN=${CURRENT_RUN}" >> $GITHUB_ENV
gh run download ${CURRENT_RUN} -p client_*
gh run download ${CURRENT_RUN} -p server_*
- name: Generate results artifact
uses: actions/upload-artifact@v4
if: success()
with:
name: ${{ env.ARTIFACT_KEY }}
path: |
client_*
server_*
- name: Delete results artifacts
if: success()
run: |
if [[ "${CURRENT_RUN}" -eq "" ]]; then
exit 1
fi
ARTIFACTS=$(gh api https://api.github.com/repos/project-faster/qpep/actions/artifacts -q ".artifacts[]|select(.workflow_run.id==${CURRENT_RUN})|.id")
for $id in $ARTIFACTS do
gh api -X DELETE https://api.github.com/repos/project-faster/qpep/actions/artifacts/$id || true
done