You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Having trouble? Reach out on slack: [#apm-shared-testing](https://dd.enterprise.slack.com/archives/C025TJ4RZ8X)
4
4
5
-
System-tests is a black-box testing workbench for Datadog tracer libraries. It runs the **same tests** against every tracer implementation -- Java, Node.js, Python, PHP, Ruby, C++, .NET, Go, and Rust -- so shared features stay consistent across languages.
5
+
System-tests is a black-box testing workbench for Datadog tracer libraries. It runs the **same tests** against every tracer implementation -- Java, Node.js, Python, PHP, Ruby, C, C++, .NET, Go, and Rust -- so shared features stay consistent across languages.
6
6
7
7
Key principles:
8
8
@@ -15,7 +15,7 @@ You need **bash**, **Docker** (20.10+), and **Python 3.12**.
15
15
16
16
```bash
17
17
# 1. Build images for the language you want to test
Copy file name to clipboardExpand all lines: docs/CI/system-tests-ci.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
## CI Workflow: Github Actions
2
2
3
-
Our System-tests repository is fully integrated with Github Actions, which helps us build, execute and report tests results automatically.
3
+
Our System-tests repository uses GitHub Actions to build, execute, and report most test results automatically. Native C end-to-end coverage runs in GitLab CI on DinD runners.
4
4
5
5
The System-tests repository contains **one main workflow**: `ci.yml`. It is triggered in these cases:
Copy file name to clipboardExpand all lines: docs/execute/binaries.md
+35-2Lines changed: 35 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -138,9 +138,36 @@ There are three ways to run system-tests with a custom node tracer.
138
138
## PHP library
139
139
140
140
- Place `datadog-setup.php` and `dd-library-php-[X.Y.Z+commitsha]-*-linux-gnu.tar.gz` in `/binaries` folder
141
-
- You can download the `.tar.gz` from the `package extension: [arm64, aarch64-unknown-linux-gnu]` (or the `amd64` if you're not on ARM) job artifacts (from the `package-trigger` sub-pipeline), from a CI run of your branch.
141
+
- You can download the `.tar.gz` from the `package extension: [arm64, aarch64-unknown-linux-gnu]` (or the `amd64` if you're not on ARM) job artifacts (from the `package-trigger` sub-pipeline of dd-trace-php's `gitlab.ddbuild.io`), from a CI run of your branch.
142
+
- **Via the browser:** open the pipeline for your branch, drill into the `package-trigger`
143
+
child pipeline, open the `package extension: [...]` job, and download its artifacts.
144
+
- **Via `glab` (for agents/CLI use):** the one-liners `glab ci artifact`/`glab job artifact`
145
+
only search the *top-level* pipeline's jobs, so they never find `package extension: [...]`
146
+
(it lives in the `package-trigger`**child** pipeline) — they just hang instead of failing
147
+
fast. Walk the GitLab API by hand instead (project is `DataDog/apm-reliability/dd-trace-php`,
148
+
project ID `355`; see [GitLab CLI setup](../ai/ai-tools-integration-guide.md#gitlab-cli-glab)).
149
+
These calls must target `gitlab.ddbuild.io` explicitly via `--hostname`, since `glab`'s
150
+
default host may point elsewhere:
151
+
```bash
152
+
# 1. Find the top-level pipeline for your commit
153
+
glab api --hostname gitlab.ddbuild.io "/projects/355/pipelines?sha=<commit-sha>"
154
+
155
+
# 2. List that pipeline's trigger bridges, find package-trigger's downstream_pipeline.id
156
+
glab api --hostname gitlab.ddbuild.io "/projects/355/pipelines/<pipeline-id>/bridges"
157
+
158
+
# 3. Find the job's numeric id in that child pipeline (paginate with &page=N if needed)
159
+
glab api --hostname gitlab.ddbuild.io "/projects/355/pipelines/<child-pipeline-id>/jobs?per_page=100"
160
+
161
+
# 4. Download the job's artifacts zip (large; can take a few minutes). `--output` selects
162
+
# glab's own response format (json/ndjson), not a file path, so redirect stdout instead.
163
+
glab api --hostname gitlab.ddbuild.io "/projects/355/jobs/<job-id>/artifacts"> artifacts.zip
164
+
165
+
# 5. Pull out just the tarball you need, matching your host/container architecture
166
+
# (<arch> is aarch64 or x86_64, matching `uname -m` inside the PHP weblog container)
- The `datadog-setup.php` can be copied from the dd-trace-php repository root.
143
-
- Copy it in the binaries folder
144
171
145
172
Then run the tests from the repo root folder:
146
173
@@ -155,6 +182,12 @@ Then run the tests from the repo root folder:
155
182
],
156
183
```
157
184
185
+
> :note: **Keep `binaries/` clean between runs**
186
+
> Only one PHP tarball should be present in`binaries/` at a time — a stale one left over from an earlier test causes `install_ddtrace.sh`'s "multiple dd-library-php tarballs found" error.
187
+
> This can also happen even when `binaries/` on the host is clean: the PHP base image (`apache-mod.base.Dockerfile`, tagged e.g. `datadog/system-tests:apache-mod-8.2.base-v1`) bakes in whatever was in `binaries/` at the time it was built, and it's only rebuilt if the tag is missing locally.
188
+
> If a stale tarball was baked into the base image, every later build adds a second tarball on top of it. Fix by removing the base image and letting it rebuild:
0 commit comments