getsentry / getsentry/sentry-javascript

Port node-integration-tests to span streaming

Đang mở
#24,130 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
javascript Task
Ngôn ngữ chính
TypeScript
Star
8.7k
Fork
1.8k
Merge trung bình
1 ngày 17 giờ
Pull request đã merge (30 ngày)
523

Mô tả

Port `dev-packages/node-integration-tests` to span streaming. Span streaming is the default, so every suite that still pins `traceLifecycle: 'static'` covers behaviour we no longer ship.

Part of [SDK-1425](https://linear.app/getsentry/issue/SDK-1425/port-integration-tests-to-span-streaming), one tracking issue per integration test package.

## Scope

* 299 `traceLifecycle: 'static'` pins across 188 suite directories
* 111 suite directories assert on transaction envelopes and need a real rewrite
* 19 suites already have a `-streamed` twin next to the static original
* 20 suites use the env-gated `traceLifecycle: process.env.STREAMED === 'true' ? 'stream' : 'static'` pattern

## How to port a suite

1. Remove the `traceLifecycle: 'static'` pin from every `Sentry.init` in the suite.
2. If a `-streamed` twin exists, fold it back: delete the static original and rename the twin to the base name. Do not keep both, or the coverage doubles and the two copies drift.
3. If the suite uses the env-gated `STREAMED` switch, drop the switch and keep `'stream'`.
4. Rewrite the assertions from transaction envelopes to span v2:
* `.expect({ transaction })` becomes `.expect({ span })`, which gives a `SerializedStreamedSpanContainer`
* `event.transaction` becomes `span.name`
* `contexts.trace.op` becomes the `sentry.op` attribute plus `span.is_segment`
* `contexts.trace.data['x']` becomes `span.attributes['x']`, which has the shape `{ value, type }`
* `transaction_info.source` becomes the `sentry.segment.name.source` attribute
5. Streamed child spans arrive across several envelopes, so collect across envelopes wherever a test asserts on children of a segment span.

Watch for span names that become low cardinality under streaming: `http.server`, `http.client`, `db`, `cache`, `gen_ai` and `graphql`. Those assertions change, not just the helper.

Reference suite: `suites/tracing/httpIntegration-streamed`.

## Keep static trace lifecycle coverage

Do not add a `-static` copy per suite. `tracing/sampling-static` and `public-api/beforeSendSpan-static` already guard the static lifecycle for this package.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Start in dev-packages/node-integration-tests and compare suites against tracing/httpIntegration-streamed. Locate static and STREAMED traceLifecycle pins, then inspect transaction-envelope assertions and child-span collection in the affected suites. Done means the package uses span streaming throughout, streamed twins are folded back, assertions cover span v2, and tracing/sampling-static plus public-api/beforeSendSpan-static remain the static coverage.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
node.js, typescript
Lĩnh vực
testing-qa
Loại issue
Tái cấu trúc
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.