-
Notifications
You must be signed in to change notification settings - Fork 11
74 lines (70 loc) · 2.45 KB
/
scale-tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
---
# yamllint disable rule:truthy rule:truthy rule:line-length
name: "Scale testing"
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
node_amount:
type: string
description: Number of nodes to use for scale testing
default: '10'
required: false
push:
branches:
- fac-scale-test-reporting
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
INFRAHUB_DB_USERNAME: neo4j
INFRAHUB_DB_PASSWORD: admin
INFRAHUB_DB_ADDRESS: localhost
INFRAHUB_DB_PORT: 7687
INFRAHUB_DB_PROTOCOL: bolt
INFRAHUB_BROKER_ADDRESS: message-queue
INFRAHUB_LOG_LEVEL: CRITICAL
INFRAHUB_IMAGE_NAME: "opsmill/infrahub"
INFRAHUB_IMAGE_VER: "testing"
jobs:
scale-tests:
runs-on:
group: huge-runners
timeout-minutes: 60
env:
INFRAHUB_DB_TYPE: neo4j
METRICS_ENDPOINT: ${{ secrets.METRICS_ENDPOINT }}
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
with:
ref: fac-scale-test-reporting
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: "Setup python environment"
run: |
pipx install poetry
poetry config virtualenvs.prefer-active-python true
pip install invoke toml
- name: "Install Package"
run: "poetry install --with test-scale"
- name: "Set environment variables"
run: echo INFRAHUB_BUILD_NAME=infrahub-${{ runner.name }} >> $GITHUB_ENV
- name: "Set environment variables"
run: echo INFRAHUB_IMAGE_VER=${{ runner.name }}-${{ github.sha }} >> $GITHUB_ENV
- name: "Clear docker environment"
run: docker compose -p $INFRAHUB_BUILD_NAME down -v --remove-orphans --rmi local
- name: "Start scale environment"
run: "invoke backend.test-scale-env-start -g 1"
- name: "Run test"
run: "invoke backend.test-scale --amount 10 -s backend/tests/scale/schema.yml --stager stage_infranode"
- name: "Push metrics"
run: "curl -v -d @metrics.csv 'http://localhost:8429/api/v1/import/csv?format=1:metric:scale_test_response_time,2:time:unix_ms,3:label:operation_name,4:label:node_amount,5:label:attrs_amount,6:label:rels_amount'"
- name: "Wait for vmagent to push metrics"
run: "sleep 10"
- name: "Destroy scale environment"
if: always()
run: "invoke backend.test-scale-env-destroy"