Skip to content

Commit de3b757

Browse files
committed
Merge branch 'perf-baseline' into dev
2 parents 8624982 + d788a88 commit de3b757

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

.github/workflows/python-package.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ jobs:
6666
run: |
6767
python -m pip install --upgrade pip
6868
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
69+
- name: Setup an updatable cache for Performance Baselines
70+
uses: actions/cache@v3
71+
with:
72+
path: .perf.baseline
73+
key: ${{ runner.os }}-performance-${{ hashFiles('tests/test_benchmark.py') }}
74+
restore-keys: ${{ runner.os }}-performance-
6975
- name: Run benchmark
7076
run: pytest --benchmark-only --benchmark-json benchmark.json --log-cli-level INFO tests/test_benchmark.py
7177
- name: Render benchmark result

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,5 @@ docs/_build/
5858
tests/config.json
5959

6060

61-
.env
61+
.env
62+
.perf.baseline

requirements.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1-
.
2-
python-dotenv
3-
pytest-benchmark
1+
-e .
2+
3+
# python-dotenv 1.0+ no longer supports Python 3.7
4+
python-dotenv>=0.21,<2
5+
6+
pytest-benchmark>=4,<5
7+
perf_baseline>=0.1,<0.2
8+

tests/test_benchmark.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
11
from tests.simulator import ClientCredentialGrantSimulator as CcaTester
2+
from perf_baseline import Baseline
3+
4+
5+
baseline = Baseline(".perf.baseline", threshold=1.5) # Up to 1.5x slower than baseline
26

37
# Here come benchmark test cases, powered by pytest-benchmark
48
# Func names will become diag names.
59
def test_cca_1_tenant_with_10_tokens_per_tenant_and_cache_hit(benchmark):
610
tester = CcaTester(tokens_per_tenant=10, cache_hit=True)
11+
baseline.set_or_compare(tester.run)
712
benchmark(tester.run)
813

914
def test_cca_many_tenants_with_10_tokens_per_tenant_and_cache_hit(benchmark):
1015
tester = CcaTester(number_of_tenants=1000, tokens_per_tenant=10, cache_hit=True)
16+
baseline.set_or_compare(tester.run)
1117
benchmark(tester.run)
1218

1319
def test_cca_1_tenant_with_10_tokens_per_tenant_and_cache_miss(benchmark):
1420
tester = CcaTester(tokens_per_tenant=10, cache_hit=False)
21+
baseline.set_or_compare(tester.run)
1522
benchmark(tester.run)
1623

1724
def test_cca_many_tenants_with_10_tokens_per_tenant_and_cache_miss(benchmark):
1825
tester = CcaTester(number_of_tenants=1000, tokens_per_tenant=10, cache_hit=False)
26+
baseline.set_or_compare(tester.run)
1927
benchmark(tester.run)
2028

0 commit comments

Comments
 (0)