Skip to content

chore(dev): add multiservice opentelemetry trace e2e test - #26554

Open
tessneau wants to merge 29 commits into
masterfrom
tess.neau-real-trace-testing
Open

tessneau wants to merge 29 commits into
masterfrom
tess.neau-real-trace-testing

Conversation

@tessneau

@tessneau tessneau commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds a manual OpenTelemetry trace test using the opentelemetry-demo app to Vector's e2e harness.

The existing opentelemetry-traces e2e test uses telemetrygen, which we could extend to cover more trace cases. However this app produced traces by multiple language SDKs and instrumentation libraries, so we get more varied and realistic input.

The main goal is to use this test against PRs against during the trace data model migration (see Trace data model RFC) so that we get the added confidence. This and the heavier application setup (24 Compose services, ~22 min in the earlier CI run) is why I've kept it manually triggered for now, since I'm not sure you'd want to run this continuously in CI.

Here's the test's architecture:
Multiservice trace test architecture

See the README for details.

References

Uses the shared harness cleanup from #26736 and metrics readiness fixes from #26778, both merged into master. This PR now contains only the multiservice trace test changes.

Related: Trace data model RFC.

Vector configuration

data/vector.yaml.

How did you test this PR?

The last full Demo CI run before the capture-finalization refactor passed on 6cf64848c0. Both HTTP and gRPC passed the round-trip validation and both comparator checks.

The job took 21m57s and used the former opt-in build cache. The test now uses the shared cleanup fix merged in #26736 to preserve compiled tests between transport runs while clearing test output.

The current head moves capture finalization into Compose, leaving Rust to validate completed files. Checked the helper locally with isolated Docker containers: it waits for delayed output, records drain timeouts, and leaves containers on other networks untouched. A small Compose run confirmed that detached startup waits for finalization. The full Demo run after the capture-finalization and shared-harness changes is still pending.

Before that refactor, also ran locally with:

cargo vdev e2e run opentelemetry-traces-multiservice --retries 0 --always-show-logs

Does this PR include user facing changes?

  • Yes. Please add a changelog fragment based on our guidelines.
  • No. A maintainer will apply the no-changelog label to this PR.

Contributor Guidelines

  • Please read our Vector contributor resources.
  • Do not hesitate to use @vectordotdev/vector to reach out to us regarding this PR.
  • Before pushing, follow our pre-push guidance.
  • After a review is requested, please avoid force pushes to help us review incrementally.
    • Feel free to push as many commits as you want. They will be squashed into one before merging.
    • For example, you can run git merge origin master and git push.

Reuse the existing vdev Compose harness and PR review trigger. Compare captured span semantics and multiplicities, require realistic trace coverage, and retain evidence for migration PRs.

Generated with GPT-6 (Codex).
@github-actions github-actions Bot added the domain: ci Anything related to Vector's CI environment label Oct 6, 2026
@tessneau tessneau changed the title Add manual OTel Demo trace E2E validation Add manual multiservice OpenTelemetry trace E2E validation Oct 7, 2026

@tessneau tessneau left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/ci-run-e2e-opentelemetry-traces-multiservice

@tessneau tessneau added the no-changelog Changes in this PR do not need user-facing explanations in the release changelog label Oct 7, 2026
@tessneau tessneau changed the title Add manual multiservice OpenTelemetry trace E2E validation chore(dev): add multiservice opentelemetry e2e test Oct 7, 2026

@thomasqueirozb thomasqueirozb left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/ci-run-e2e-opentelemetry-traces-multiservice

@tessneau tessneau changed the title chore(dev): add multiservice opentelemetry e2e test test(opentelemetry): add manual multiservice trace E2E validation Oct 8, 2026

@tessneau tessneau left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/ci-run-e2e-opentelemetry-traces-multiservice

@tessneau
tessneau marked this pull request as ready for review October 8, 2026 16:56
@tessneau
tessneau requested a review from a team as a code owner October 8, 2026 16:56
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T16:07:41.049001Z 1a9cdf2 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@tessneau
tessneau requested a review from bruceg October 8, 2026 16:56
@tessneau
tessneau marked this pull request as draft October 8, 2026 17:01

@datadoghq-integration datadoghq-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bits Code Review: FAIL

The quote readiness probe reports success for a refused connection, allowing premature workload startup and false E2E failures. The inline replacement was verified to fail on a closed port and succeed on an open port.

Open Bits AI session

🤖 Bits Code Review · Commit 69aeb3a · @DataDog review to ask questions

Comment thread tests/e2e/opentelemetry-traces-multiservice/config/compose.yaml Outdated
@tessneau

tessneau commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

/ci-run-e2e-opentelemetry-traces-multiservice

@tessneau
tessneau marked this pull request as ready for review October 8, 2026 17:07
@tessneau tessneau changed the title test(opentelemetry): add manual multiservice trace E2E validation chore(dev): add multiservice opentelemetry trace e2e test Oct 8, 2026

@datadoghq-integration datadoghq-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bits Code Review: PASS

More details

Compose configuration validation passed. The multiservice round trip remains unverified in this environment because no Docker socket was available.

Was this helpful? React 👍 or 👎

Open Bits AI session

🤖 Bits Code Review · Commit d67df6e · @DataDog review to ask questions

@tessneau tessneau left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/ci-run-e2e-opentelemetry-traces-multiservice

@github-actions github-actions Bot added the domain:vdev Anything related to the vdev tooling label Oct 9, 2026
Comment thread .config/nextest.toml Outdated
Comment thread tests/e2e/opentelemetry-traces-multiservice/README.md Outdated
Comment thread tests/e2e/opentelemetry/multiservice_traces/mod.rs Outdated
@tessneau
tessneau changed the base branch from master to tess.neau/fix-compose-test-cleanup October 20, 2026 14:51
@github-actions github-actions Bot removed the domain:vdev Anything related to the vdev tooling label Oct 20, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1ee47be2bc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tests/e2e/opentelemetry-traces-multiservice/data/finalize.py

@datadoghq-integration datadoghq-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bits Code Review: PASS

More details

Static review identified no reportable defect in capture finalization or span preservation. Compose configuration validation passed, but the full multiservice HTTP/gRPC run remains unverified.

Was this helpful? React 👍 or 👎

Open Bits AI session

🤖 Bits Code Review · Commit 1ee47be

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 72bfca434d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Cargo.toml Outdated
Comment thread tests/e2e/opentelemetry-traces-multiservice/data/finalize.py

@pront pront left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assigning this PR to @thomasqueirozb since he recently worked on #24118

@pront
pront requested a review from thomasqueirozb October 20, 2026 18:08
Base automatically changed from tess.neau/fix-compose-test-cleanup to master October 21, 2026 15:08

@datadoghq-integration datadoghq-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bits Code Review: FAIL

Preserving compiled artifacts exposes a startup race in native OTLP metric validation: warm runs can read captures before generation and export finish, causing false failures.

Open Bits AI session

🤖 Bits Code Review · Commit 30092e4

"sh",
"-c",
&format!("rm -rf /output/{test_name}/*"),
&format!("rm -rf /output/{test_name}"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Wait for native OTLP captures before reusing compiled tests

On warm runs of opentelemetry-metrics-native, preserving compiled artifacts removes the compilation delay after Compose starts. Compose only waits for services to start, but vector_native_metrics_encode_to_otlp immediately reads and validates the capture while generators and collector exports may still be running. Missing or partial output can therefore fail a healthy pipeline. This suite never calls the newly polling internal-metrics helper. Add a bounded capture-readiness gate before its assertions.

React: 👍 useful · 👎 wrong · 😕 unclear · 👀 right, but not acting on it

What each reaction means
  • 👍 Useful: correct, and you're fixing it or will.
  • 👎 Wrong: the finding is incorrect, for example the bug can't happen or the code was misread.
  • 😕 Unclear: you can't tell what it means or why it matters.
  • 👀 Right, not acting: correct, but intended, out of scope for this PR, a known risk, or too minor.

🤖 Bits Code Review · Open Bits AI session

@tessneau tessneau Oct 21, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

feels viable but I haven't run into any failure in a few local test runs, and I'd rather follow up to avoid this PR getting any bigger 😅 and depending on compile time felt already shaky

short-term we could copy the same bounded wait as #26778 does for the opentelemetry-logs and datadog-metrics tests, maybe there's a better way

This branch has not been deployed

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

Labels

domain: ci Anything related to Vector's CI environment no-changelog Changes in this PR do not need user-facing explanations in the release changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants