name: Integration load tests
on:
workflow_dispatch:
inputs:
duration:
description: HTTP workload duration
default: 30s
required: false
concurrency:
description: Concurrent HTTP workers
default: "50"
required: false
websocket_clients:
description: WebSocket clients
default: "1000"
required: false
permissions:
contents: read
jobs:
integration-load:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with:
persist-credentials: false
- name: Setup Rust
uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with:
toolchain: stable
- name: Cache cargo artifacts
uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae
- name: Install oha
run: cargo install oha --version 1.14.0 --locked
- name: Run integration workloads
env:
DURATION: ${{ inputs.duration || '30s' }}
CONCURRENCY: ${{ inputs.concurrency || '50' }}
WS_CLIENTS: ${{ inputs.websocket_clients || '1000' }}
RESULTS_DIR: load-tests/results/ci
run: ./scripts/load-test.sh
- name: Upload results
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 with:
name: tideway-load-results
path: load-tests/results/ci