Skip to content

Commit 2507ab8

Browse files
committed
ci: migrate to new slo action
1 parent cea4669 commit 2507ab8

File tree

10 files changed

+60
-67
lines changed

10 files changed

+60
-67
lines changed

.github/workflows/slo.yml

Lines changed: 57 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,75 @@
1-
name: SLO
1+
name: slo
22

33
on:
4+
push:
5+
branches:
6+
- main
47
pull_request:
5-
branches: [main]
8+
branches:
9+
- main
10+
- release-*
611
workflow_dispatch:
12+
inputs:
13+
github_pull_request_number:
14+
required: true
15+
slo_workload_duration_seconds:
16+
default: '600'
17+
required: false
18+
slo_workload_read_max_rps:
19+
default: '1000'
20+
required: false
21+
slo_workload_write_max_rps:
22+
default: '100'
23+
required: false
724

825
jobs:
9-
test-slo:
10-
concurrency:
11-
group: slo-${{ github.ref }}
26+
ydb-slo-action-init:
1227
if: (!contains(github.event.pull_request.labels.*.name, 'no slo'))
1328

29+
name: Run YDB SLO Tests
1430
runs-on: ubuntu-latest
15-
name: SLO test
16-
permissions:
17-
checks: write
18-
pull-requests: write
19-
contents: read
20-
issues: write
31+
32+
strategy:
33+
matrix:
34+
sdk:
35+
- py-sync-table
36+
- py-sync-query
2137

2238
steps:
2339
- name: Checkout repository
24-
uses: actions/checkout@v3
25-
if: env.DOCKER_REPO != null
26-
env:
27-
DOCKER_REPO: ${{ secrets.SLO_DOCKER_REPO }}
40+
uses: actions/checkout@v4
2841

29-
- name: Run SLO
30-
uses: ydb-platform/slo-tests@main
31-
if: env.DOCKER_REPO != null
32-
env:
33-
DOCKER_REPO: ${{ secrets.SLO_DOCKER_REPO }}
34-
continue-on-error: true
42+
- name: Install Python3
43+
uses: actions/setup-python@v5
3544
with:
36-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37-
KUBECONFIG_B64: ${{ secrets.SLO_KUBE_CONFIG }}
38-
AWS_CREDENTIALS_B64: ${{ secrets.SLO_AWS_CREDENTIALS }}
39-
AWS_CONFIG_B64: ${{ secrets.SLO_AWS_CONFIG }}
40-
DOCKER_USERNAME: ${{ secrets.SLO_DOCKER_USERNAME }}
41-
DOCKER_PASSWORD: ${{ secrets.SLO_DOCKER_PASSWORD }}
42-
DOCKER_REPO: ${{ secrets.SLO_DOCKER_REPO }}
43-
DOCKER_FOLDER: ${{ secrets.SLO_DOCKER_FOLDER }}
44-
s3_endpoint: ${{ secrets.SLO_S3_ENDPOINT }}
45-
s3_images_folder: ${{ vars.SLO_S3_IMAGES_FOLDER }}
46-
grafana_domain: ${{ vars.SLO_GRAFANA_DOMAIN }}
47-
grafana_dashboard: ${{ vars.SLO_GRAFANA_DASHBOARD }}
48-
ydb_version: 'newest'
49-
timeBetweenPhases: 30
50-
shutdownTime: 30
45+
python-version: '3.8'
46+
cache: 'pip'
5147

52-
language_id0: sync-python-table
53-
language0: Python SDK over Table Service
54-
workload_path0: tests/slo
55-
workload_build_context0: ../..
56-
workload_build_options0: -f Dockerfile --build-arg SDK_SERVICE=sync-python-table
48+
- name: Install dependencies
49+
run: |
50+
python -m pip install --no-cache-dir --upgrade pip
51+
python -m pip install --no-cache-dir -e .
52+
python -m pip install --no-cache-dir -r tests/slo/requirements.txt
5753
58-
language_id1: sync-python-query
59-
language1: Python SDK over Query Service
60-
workload_path1: tests/slo
61-
workload_build_context1: ../..
62-
workload_build_options1: -f Dockerfile --build-arg SDK_SERVICE=sync-python-query
54+
- name: Initialize YDB SLO
55+
uses: ydb-platform/ydb-slo-action/init@main
56+
with:
57+
github_pull_request_number: ${{ github.event.inputs.github_pull_request_number }}
58+
github_token: ${{ secrets.GITHUB_TOKEN }}
59+
sdk_name: ${{ matrix.sdk }}
6360

64-
- uses: actions/upload-artifact@v3
65-
if: env.DOCKER_REPO != null
61+
- name: Run SLO Tests
6662
env:
67-
DOCKER_REPO: ${{ secrets.SLO_DOCKER_REPO }}
68-
with:
69-
name: slo-logs
70-
path: logs/
63+
SDK_SERVICE: '${{ matrix.sdk }}'
64+
run: |
65+
python ./tests/slo create grpc://localhost:2135 /Root/testdb
66+
python ./tests/slo run grpc://localhost:2135 /Root/testdb \
67+
--prom-pgw localhost:9091 \
68+
--report-period 250 \
69+
--read-rps ${{inputs.slo_workload_read_max_rps || 1000}} \
70+
--write-rps ${{inputs.slo_workload_write_max_rps || 100}} \
71+
--read-timeout 10000
72+
--write-timeout 10000
73+
--time ${{inputs.slo_workload_duration_seconds || 600}} \\
74+
--shutdown-time 30
75+
python ./tests/slo cleanup grpc://localhost:2135 /Root/testdb

tests/slo/Dockerfile

Lines changed: 0 additions & 11 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

tests/slo/src/metrics.py renamed to tests/slo/metrics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
JOB_READ_LABEL, JOB_WRITE_LABEL = "read", "write"
1414
JOB_STATUS_OK, JOB_STATUS_ERR = "ok", "err"
1515

16-
SDK_SERVICE_NAME = environ.get("SDK_SERVICE", "sync-python-table")
16+
SDK_SERVICE_NAME = environ.get("SDK_SERVICE", "py-sync-table")
1717

1818

1919
class Metrics:
File renamed without changes.

tests/slo/src/runner.py renamed to tests/slo/runner.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,13 @@ def run_slo(args, driver, tb_name):
9191
logger.info("Max ID: %s", max_id)
9292

9393
metrics = Metrics(args.prom_pgw)
94-
if SDK_SERVICE_NAME == "sync-python-table":
94+
if SDK_SERVICE_NAME == "py-sync-table":
9595
futures = (
9696
*run_read_jobs(args, driver, tb_name, max_id, metrics),
9797
*run_write_jobs(args, driver, tb_name, max_id, metrics),
9898
run_metric_job(args, metrics),
9999
)
100-
elif SDK_SERVICE_NAME == "sync-python-query":
100+
elif SDK_SERVICE_NAME == "py-sync-query":
101101
futures = (
102102
*run_read_jobs_query(args, driver, tb_name, max_id, metrics),
103103
*run_write_jobs_query(args, driver, tb_name, max_id, metrics),
@@ -121,7 +121,6 @@ def run_from_args(args):
121121
driver_config = ydb.DriverConfig(
122122
args.endpoint,
123123
database=args.db,
124-
credentials=ydb.credentials_from_env_variables(),
125124
grpc_keep_alive_timeout=5000,
126125
)
127126

File renamed without changes.

0 commit comments

Comments
 (0)