|
1 | 1 | # Python downstream gate (dd-trace-py) |
2 | 2 |
|
3 | | -Paired **3.14 (baseline)** and **3.15 (candidate)** prof-correctness scenarios |
4 | | -exercise the Python profiling stack for the 3.14 → 3.15 migration. They are the |
5 | | -intended default set when dd-trace-py triggers downstream CI on profiling changes. |
6 | | - |
7 | | -**Scenarios land in follow-up PRs** (core families first, then feature-specific |
8 | | -pairs). This directory is an index only — not a runnable scenario. |
| 3 | +Six prof-correctness scenarios exercise the profiling stack on **3.14 |
| 4 | +(baseline)** and **3.15 (candidate)** for the same workloads. They are the |
| 5 | +default set when dd-trace-py triggers downstream CI on profiling changes. |
9 | 6 |
|
10 | 7 | ## Scenarios |
11 | 8 |
|
12 | | -| Family | 3.14 (baseline) | 3.15 (candidate) | PR | |
13 | | -|--------|-----------------|---------------------|-----| |
14 | | -| _(pending)_ | — | — | Core scenarios in follow-up PRs | |
| 9 | +| Family | 3.14 (baseline) | 3.15 (candidate) | |
| 10 | +|--------|-------------------|------------------| |
| 11 | +| exceptions | `python_exceptions_3.14` | `python_exceptions_3.15` | |
| 12 | +| async-gen | `python_async_gen_3.14` | `python_async_gen_3.15` | |
| 13 | +| lock | `python_lock_3.14` | `python_lock_3.15` | |
| 14 | + |
| 15 | +## Profiler coverage |
| 16 | + |
| 17 | +| Family | Profile type asserted | Collectors / setup | |
| 18 | +|--------|----------------------|--------------------| |
| 19 | +| exceptions | `exception-samples` + `exception type` | Exception profiler | |
| 20 | +| async-gen | `wall-time` | Full profiler via `ddtrace-run`; asyncio async-generator workload | |
| 21 | +| lock | `lock-acquire` + `lock-release` + `lock name` | Lock profiler; threaded lock churn | |
| 22 | + |
| 23 | +Feature-specific pairs (mem_domain, live_heap) and extended coverage (cpu, alloc, |
| 24 | +asyncio, …) land in follow-up PRs. |
15 | 25 |
|
16 | 26 | ## Default downstream regexp |
17 | 27 |
|
18 | | -Once scenarios are added, dd-trace-py should pass an explicit regexp (not the |
19 | | -downstream workflow default of `python.*`). The regexp grows as families merge; |
20 | | -see each PR for the current value. |
| 28 | +``` |
| 29 | +python_(exceptions|async_gen|lock)_3\.(14|15) |
| 30 | +``` |
21 | 31 |
|
22 | 32 | Override via `workflow_dispatch` → `test_scenarios`, or when triggering |
23 | 33 | [`downstream-python.yml`](../../.github/workflows/downstream-python.yml) manually. |
24 | 34 |
|
25 | 35 | ## Wheel install |
26 | 36 |
|
27 | | -Every scenario builds against a **dd-trace-py wheel** via `DDTRACE_INSTALL_URL` |
28 | | -(as `downstream-python.yml` does: |
29 | | -`https://dd-trace-py-builds.s3.amazonaws.com/<sha>/install.sh`), pre-installed in |
30 | | -the base image. |
31 | | - |
32 | | -- **All `*_3.15` folders** — PyPI wheels may not be published for 3.15 yet; |
33 | | - excluded from prof-correctness `main` CI (see `test_scenarios_exclude` in |
34 | | - [`.github/workflows/ci.yml`](../../.github/workflows/ci.yml)). |
35 | | -- **Wheel-only 3.14 folders** — scenarios that depend on unreleased ddtrace |
36 | | - features are also excluded from `main` CI until the feature ships. |
| 37 | +- **All `*_3.15` folders** use `DDTRACE_INSTALL_URL` (excluded from `main` CI). |
| 38 | +- **3.14 folders** run on prof-correctness `main` CI against PyPI ddtrace. |
37 | 39 |
|
38 | 40 | ## Local run |
39 | 41 |
|
40 | 42 | ```sh |
41 | 43 | export DDTRACE_INSTALL_URL="https://dd-trace-py-builds.s3.amazonaws.com/<commit-sha>/install.sh" |
42 | | -TEST_SCENARIOS='<gate-regexp>' go test -v -run TestScenarios |
| 44 | +TEST_SCENARIOS='python_(exceptions|async_gen|lock)_3\.(14|15)' go test -v -run TestScenarios |
43 | 45 | ``` |
44 | 46 |
|
45 | | -## Gate lifecycle |
46 | | - |
47 | | -This gate tests the **migration delta** (3.14 → 3.15). It is time-boxed: retire |
48 | | -the paired 14v15 framing at 3.15 GA and fold workloads into steady-state |
49 | | -prof-correctness on {oldest, newest} supported Python versions. |
50 | | - |
51 | 47 | ## Further reading |
52 | 48 |
|
| 49 | +- Gate infra: PR stacking from `vlad/gate-infra` |
53 | 50 | - prof-correctness downstream wiring: [README](../../README.md#downstream-from-dd-trace-py) |
0 commit comments