Skip to content

test(e2e): run the Rust golden crate end to end, and assert http.route (#118) - #175

Merged
radra23 merged 1 commit into
mainfrom
feat/rust-e2e
Oct 3, 2026
Merged

radra23 merged 1 commit into
mainfrom
feat/rust-e2e

Conversation

@radra23

@radra23 radra23 commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Summary

Adds Rust to the end-to-end job. Follow-up to #162 and #163 (part of #118).

What changed

  • tests/e2e/run.sh and docker-compose.yml: a rust-app leg builds the golden crate with cargo run --locked on rust:1.88, exports OTLP/HTTP to the golden agent Collector config, and products-api is asserted in Jaeger with its service.* attributes
  • assert-traces.sh: new optional --expect-span k=v. The Rust leg uses it for http.route=/products/{id}, because the tower crate's axum feature is off by default and without it the server span exports with correct resource attributes but no route
  • assert-traces.test.sh covers the flag, including the route-less case
  • e2e job timeout 25 to 35 minutes for the cold cargo build; README, ROADMAP and e2e README updated. No plugin version bump (no command, agent, skill or hook changed)

Test plan

  • All hook, snapshot, drift and e2e unit tests pass locally

  • Docker is not available where this was written, so the compose leg has not run; its first run is this PR's CI. Do not merge until the e2e job is green

  • Without Docker: a freshly seeded copy of the golden crate builds with --locked on 1.88, and against a local Collector 0.161.0 it exports service.name=products-api, version 0.4.0, namespace storefront, deployment.environment.name=e2e, and a GET /products/{id} span with http.route=/products/{id}

  • Vendor, SDK and semantic-convention facts were verified against the source, not recalled — linked where it isn't obvious.

  • Nothing hardcoded that has a single source of truth (SEMCONV_VERSION, backends.txt, hooks/otel-paths.sh).

#118)

tests/e2e/run.sh gains a Rust leg: the golden crate (Cargo.lock included) is built with
cargo run --locked on rust:1.88, exports OTLP/HTTP to the golden agent Collector config, and
products-api is asserted in Jaeger with its service.* resource attributes.

assert-traces.sh gains --expect-span k=v. The Rust leg uses it for http.route=/products/{id},
because the tower crate's axum feature is off by default and without it the server span still
exports with correct resource attributes but carries no route. Resource-level assertions
cannot see that. assert-traces.test.sh covers the new flag, including the route-less case.

The e2e job timeout goes 25 -> 35 minutes for the cold cargo build. README, ROADMAP and the
e2e README are updated. No plugin version bump: no command, agent, skill or hook changed.

Verified locally without Docker (not available in this environment): the seeded directory
builds with --locked on 1.88, and run against a local Collector 0.161.0 it exports the
expected resource and GET /products/{id} with http.route=/products/{id}. The compose leg
itself has not been run; its first run is in CI.
@radra23
radra23 merged commit 04c01bd into main Oct 3, 2026
11 checks passed
@radra23
radra23 deleted the feat/rust-e2e branch October 3, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant