Load test support for setting up message "per variable". #301
This file contains 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: CI | |
on: | |
push: | |
branches: | |
- '**' | |
tags: | |
- '[0-9]+.[0-9]+.[0-9]+' | |
permissions: | |
contents: read | |
jobs: | |
pre-commit-hook: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- name: Install pre-commit | |
run: python -m pip install pre-commit | |
shell: bash | |
- name: Show pre-commit requirements | |
run: python -m pip freeze --local | |
shell: bash | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pre-commit | |
key: pre-commit-3|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }} | |
- name: Run pre-commit for all files | |
run: pre-commit run --config './.pre-commit-config.yaml' --all-files --color=always --show-diff-on-failure | |
shell: bash | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the repo | |
uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: Build docker containers | |
run: docker compose --profile test build | |
- name: Start docker stack | |
run: DYNAMICTIME=false LOTIME=1000-01-01T00:00:00Z HITIME=9999-12-31T23:59:59Z docker compose up -d | |
- name: Test loader runs without errors | |
run: DYNAMICTIME=false LOTIME=1000-01-01T00:00:00Z HITIME=9999-12-31T23:59:59Z docker compose run --rm loader | |
- name: Integration test | |
run: DYNAMICTIME=false LOTIME=1000-01-01T00:00:00Z HITIME=9999-12-31T23:59:59Z docker compose run --rm integration | |
- name: Test client runs without errors | |
run: DYNAMICTIME=false LOTIME=1000-01-01T00:00:00Z HITIME=9999-12-31T23:59:59Z docker compose run --rm client | |
- name: Run load test | |
run: | | |
python --version | |
pip install -r load-test/requirements.txt | |
python -m grpc_tools.protoc --proto_path=datastore/protobuf datastore.proto --python_out=load-test --grpc_python_out=load-test | |
locust -f load-test/locustfile_write.py,load-test/locustfile_read.py --headless -u 5 -r 1 --run-time 300 --only-summary --csv load-test/store | |
- name: Archive load test artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: performance | |
path: load-test/store_*.csv | |
- name: Print results | |
run: | | |
pip install csvkit | |
echo "## Stats" >> $GITHUB_STEP_SUMMARY | |
csvlook load-test/store_stats.csv >> $GITHUB_STEP_SUMMARY | |
echo "## Stats history" >> $GITHUB_STEP_SUMMARY | |
csvlook load-test/store_stats_history.csv >> $GITHUB_STEP_SUMMARY | |
echo "## Failures" >> $GITHUB_STEP_SUMMARY | |
csvlook load-test/store_failures.csv >> $GITHUB_STEP_SUMMARY | |
- name: Cleanup | |
if: always() | |
run: docker compose down --volumes |