Skip to content

Add OTLP trace export tests + Rust weblog [rust@brian.marks/otlp-trace-export][ruby@brian.marks/otlp-trace-export][php@brian.marks/otlp-trace-export]#7121

Draft
bm1549 wants to merge 2 commits into
mainfrom
brian.marks/otlp-trace-export
Draft

Add OTLP trace export tests + Rust weblog [rust@brian.marks/otlp-trace-export][ruby@brian.marks/otlp-trace-export][php@brian.marks/otlp-trace-export]#7121
bm1549 wants to merge 2 commits into
mainfrom
brian.marks/otlp-trace-export

Conversation

@bm1549

@bm1549 bm1549 commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Motivation

Cross-language OTLP Traces Export effort (RFC "OTLP Traces Export 2026Q1", Phase 1). The existing Test_Otel_Tracing_OTLP (scenario apm_tracing_otlp) was active for python/nodejs/golang/java/dotnet and missing_feature for rust/ruby/php. This PR activates it for rust, ruby, and php, and adds the Rust end-to-end weblog that was missing.

Changes

  • New Rust axum e2e weblog under utils/build/docker/rust/weblog/ (+ axum.Dockerfile): GET /, GET /make_distant_call?url=, GET /healthcheck, instrumented with dd-trace-rs from the brian.marks/otlp-trace-export branch (trace-only features). The server span sets http.request.headers.user-agent so get_otel_spans correlates the exported span to the request.
  • Activate Test_Otel_Tracing_OTLP in manifests/{rust,ruby,php}.yml (missing_featurev0.3.4-dev / v2.36.0-dev / v1.21.0-dev). No test logic changed; no language carve-outs.
  • docs/execute/build.md: list rust and its axum weblog.

Ruby (rails72) and PHP (apache-mod-8.0) weblogs already implement the required endpoints — no weblog changes there.

Workflow

  1. ⚠️ Created as draft.
  2. The [lang@branch] title annotations point CI at the tracer feature branches; they will be removed before merge once the tracer PRs land.
  3. Test logic is not modified (only a new weblog + manifests + docs).

Depends on the tracer PRs below being available (CI clones dd-trace-rs via rust-load-from-git). See Related PRs.

Reviewer checklist

  • Anything but tests/ or manifests/ is modified? — yes (new Rust weblog + docs); R&P review may be needed.
  • A docker base image is modified? — a new Rust weblog image is added.
  • A scenario is added/removed/renamed? — no (reuses apm_tracing_otlp).

Related PRs (cross-language OTLP traces export):

Merge order: libdatadog #2101 → dd-trace-php #3971 (re-bump the submodule to the released libdatadog commit). system-tests #7121 validates rust/ruby/php once the tracer branches are available.

🤖 Generated with Claude Code

bm1549 and others added 2 commits June 9, 2026 18:43
…y/php

Adds a minimal axum-based end-to-end weblog for the Datadog Rust tracer
(dd-trace-rs) under utils/build/docker/rust/weblog with a GET / endpoint
(single server span), GET /make_distant_call (server + outbound client span
for the 128-bit trace-id test), and the mandatory /healthcheck. The weblog
consumes datadog-opentelemetry from the dd-trace-rs feature branch via a
trace-only (no gRPC) path dependency and stamps a -dev version so the harness
treats it as an in-development build. Registered as the default rust weblog
(axum) via utils/build/docker/rust/axum.Dockerfile.

Activates tests/otel/test_tracing_otlp.py::Test_Otel_Tracing_OTLP for the
three feature branches by switching the manifest entries from missing_feature
to the unreleased dev versions:
- rust: v0.3.4-dev
- ruby: v2.36.0-dev
- php:  v1.21.0-dev

The ruby (rails72) and php (apache-mod-8.0) weblogs already implement / and
/make_distant_call, so no weblog changes were needed there.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…agent

The system-tests proxy reads the raw OTLP payload, where get_otel_spans
matches the injected rid token on http.request.headers.user-agent /
http.useragent — not the OTel user_agent.original key the weblog set, so
no spans were correlated and the OTLP tests would all fail. Also list
rust under build.md Libraries names.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bm1549 bm1549 added the ai-generated The pull request includes a significant amount of AI-generated code label Jun 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

utils/build/docker/rust/axum.Dockerfile                                 @DataDog/apm-rust @DataDog/system-tests-core
utils/build/docker/rust/weblog/.gitignore                               @DataDog/apm-rust @DataDog/system-tests-core
utils/build/docker/rust/weblog/Cargo.toml                               @DataDog/apm-rust @DataDog/system-tests-core
utils/build/docker/rust/weblog/install_ddtrace.sh                       @DataDog/apm-rust @DataDog/system-tests-core
utils/build/docker/rust/weblog/src/main.rs                              @DataDog/apm-rust @DataDog/system-tests-core
utils/build/docker/rust/weblog/system_tests_library_version.sh          @DataDog/apm-rust @DataDog/system-tests-core
docs/execute/build.md                                                   @DataDog/system-tests-core
manifests/php.yml                                                       @DataDog/apm-php @DataDog/asm-php
manifests/ruby.yml                                                      @DataDog/ruby-guild @DataDog/asm-ruby
manifests/rust.yml                                                      @DataDog/apm-rust

@datadog-official

datadog-official Bot commented Jun 10, 2026

Copy link
Copy Markdown

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 54 Pipeline jobs failed

Testing the test | System Tests (rust, prod) / End-to-end #1 / axum 1   View in Datadog   GitHub Actions

🧪 20 Tests failed

tests.ai_guard.test_ai_guard_sdk.Test_SDK_Disabled.test_sdk_disabled[axum] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: assert 404 == 200
 &#43;  where 404 = HttpResponse(status_code:404, headers:{&#39;content-length&#39;: &#39;0&#39;, &#39;date&#39;: &#39;Wed, 10 Jun 2026 01:20:10 GMT&#39;}, text:).status_code
 &#43;    where HttpResponse(status_code:404, headers:{&#39;content-length&#39;: &#39;0&#39;, &#39;date&#39;: &#39;Wed, 10 Jun 2026 01:20:10 GMT&#39;}, text:) = &lt;tests.ai_guard.test_ai_guard_sdk.Test_SDK_Disabled object at 0x7f3b55605100&gt;.request

self = &lt;tests.ai_guard.test_ai_guard_sdk.Test_SDK_Disabled object at 0x7f3b55605100&gt;

    def test_sdk_disabled(self):
        &#34;&#34;&#34;Test AI Guard disabled by default, it should always return ALLOW and no span should be generated&#34;&#34;&#34;
&gt;       assert self.request.status_code == 200
E       AssertionError: assert 404 == 200
...
tests.appsec.iast.sink.test_code_injection.TestCodeInjection_ExtendedLocation.test_extended_location_data[axum] from system_tests_suite   View in Datadog (Fix with Cursor)
AssertionError: No root spans found

self = &lt;tests.appsec.iast.sink.test_code_injection.TestCodeInjection_ExtendedLocation object at 0x7f3b5513cfb0&gt;

    def test_extended_location_data(self):
&gt;       validate_extended_location_data(self.r, self.vulnerability_type)

tests/appsec/iast/sink/test_code_injection.py:56: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/appsec/iast/utils.py:297: in validate_extended_location_data
...
View all 20 test failures

Testing the test | Fail if target branch is specified   View in Datadog   GitHub Actions

Testing the test | System Tests (php, dev) / End-to-end #1 / apache-mod-7.0 1   View in Datadog   GitHub Actions

View all 54 failed jobs.

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 07c1be2 | Docs | Datadog PR Page | Give us feedback!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-generated The pull request includes a significant amount of AI-generated code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant