[SVLS-7168] Create tests for GCP PubSub Push Subscriptions Plugin #6414
Conversation
Overall package sizeSelf size: 13.67 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.3.0 | 20.73 MB | 20.74 MB | | @datadog/pprof | 5.12.0 | 11.19 MB | 11.57 MB | | @datadog/native-iast-taint-tracking | 4.1.0 | 9.01 MB | 9.02 MB | | @opentelemetry/resources | 1.30.1 | 557.67 kB | 7.71 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 2.95 MB | 5.83 MB | | @datadog/wasm-js-rewriter | 5.0.1 | 2.82 MB | 3.53 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api-logs | 0.208.0 | 199.48 kB | 1.42 MB | | @opentelemetry/api | 1.9.0 | 1.22 MB | 1.22 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.15.0 | 127.66 kB | 856.24 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | @datadog/openfeature-node-server | 0.2.0 | 118.51 kB | 437.19 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | @isaacs/ttlcache | 2.1.3 | 90.79 kB | 90.79 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB | | escape-string-regexp | 5.0.0 | 3.66 kB | 3.66 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
This comment has been minimized.
This comment has been minimized.
BenchmarksBenchmark execution time: 2025-12-11 14:02:16 Comparing candidate commit 7b95109 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 289 metrics, 31 unstable metrics. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## nina.rei/SVLS-7168/gcp-pubsub-synthetic-span #6414 +/- ##
================================================================================
- Coverage 84.05% 84.02% -0.04%
================================================================================
Files 517 517
Lines 22378 22378
================================================================================
- Hits 18809 18802 -7
- Misses 3569 3576 +7 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
128343d to
ee0b34e
Compare
63d6e01 to
29054ab
Compare
6ec410a to
c8815fe
Compare
29054ab to
3c237f0
Compare
c8815fe to
929f281
Compare
- Collect span links from messages 2-N (first becomes parent) - Extract parent context from first message trace context - Create pubsub.request span with span links metadata - Inject batch metadata into all messages (_dd.pubsub_request.*, _dd.batch.*) - Add 128-bit trace ID support (_dd.p.tid) - Add operation tag for batched vs single requests
- Add _reconstructPubSubContext to extract pubsub.request span ID from headers - Add span link to original trace context if different from pubsub.request - Supports same-trace parenting for better trace continuity
…acting from headers - HTTP plugin now checks if a delivery span is active in storage - If found, uses delivery span as parent for http.request - Ensures proper span hierarchy for push subscriptions
- Extract pubsub.request span ID from message attributes - Add span link correlation tags - Calculate delivery duration from publish start time - Add batch size and index tags for batched messages
1ad601a to
601a630
Compare
601a630 to
0371fac
Compare
3c237f0 to
b3688c4
Compare
6daa412 to
573b4f7
Compare
| } | ||
| }) | ||
|
|
||
| appListener = server.listen(0, 'localhost', () => { |
There was a problem hiding this comment.
Do these tests pass locally on your machine? E.g.
node packages/datadog-plugin-google-cloud-pubsub/test/pubsub-push-subscription.spec.jsSometimes on macOS it can fail binding on localhost and we'll need to use 127.0.0.1.
There was a problem hiding this comment.
Yes these test passed locally with PLUGINS=google-cloud-pubsub SPEC=index yarn test:plugins
….rei/SVLS-7168/gcp-push-pubsub-plugin-test
805f38e
into
nina.rei/SVLS-7168/gcp-pubsub-synthetic-span
* feat: add producer-side batch message handling with span linking
- Collect span links from messages 2-N (first becomes parent)
- Extract parent context from first message trace context
- Create pubsub.request span with span links metadata
- Inject batch metadata into all messages (_dd.pubsub_request.*, _dd.batch.*)
- Add 128-bit trace ID support (_dd.p.tid)
- Add operation tag for batched vs single requests
* feat: add ack context map and producer improvements for batching
- Add ack context map to preserve trace context across batched acknowledges
- Update producer to use batchSpan._startTime for accurate publish time
- Add explicit parent span support in client plugin
- Wrap Message.ack() to store context before batched gRPC acknowledge
- Update Subscription.emit to properly handle storage context
- Sync auto-load improvements from Branch 1
* fix: resolve linting errors in google-cloud-pubsub.js
* fix: remove trailing whitespace in client.js
* fix comments
* feat: add span linking from delivery span to pubsub.request
- Add _reconstructPubSubContext to extract pubsub.request span ID from headers
- Add span link to original trace context if different from pubsub.request
- Supports same-trace parenting for better trace continuity
* feat: check for pubsub.delivery span in AsyncLocalStorage before extracting from headers
- HTTP plugin now checks if a delivery span is active in storage
- If found, uses delivery span as parent for http.request
- Ensures proper span hierarchy for push subscriptions
* feat: add span linking and batch metadata to pull-based consumer
- Extract pubsub.request span ID from message attributes
- Add span link correlation tags
- Calculate delivery duration from publish start time
- Add batch size and index tags for batched messages
* feat: add comprehensive span linking for consumer and push subscriptions
- Add _reconstructPubSubRequestContext in consumer for proper span reparenting
- Reparent first message in batch to pubsub.request span
- Add comprehensive batch metadata and correlation tags
- Improve resource naming and service separation
- Add delivery duration calculation
- Update push subscription logging to warn level with better messages
- Add missing headers warning for troubleshooting
* Remove comments
* run npm lint
* fix test
* fix test
* fix test
* fix index.js test
* fix index.js test
* fix context error
* fix lint
* fix lint
* fix lint
* fix index.js test
* fix plugin
* add ctx
* test the index
* update consumer subscription bindstart
* update addhook subscription
* add debug logs
* Fix consumer span context loss with WeakMap and add comprehensive debug logging
* Fix double finish
* Fix consumer span type: explicitly set _type='worker' after startSpan
* Fix: use span.setTag('span.type', 'worker') instead of span._type
* Debug: Add type in startSpan options and via setTag, improve logging
* Fix: Use runStores for _dispense and publish for remove with improved logging
* add debug logs
* Fix: Guarantee test harness loads instrumentation before requiring @google-cloud/pubsub
* update subscription
* update subscription
* test fix for index.spec.js timeout
* fix test logic
* fix linter
* fix linter
* remove comments
* feat: add producer-side batch message handling with span linking
- Collect span links from messages 2-N (first becomes parent)
- Extract parent context from first message trace context
- Create pubsub.request span with span links metadata
- Inject batch metadata into all messages (_dd.pubsub_request.*, _dd.batch.*)
- Add 128-bit trace ID support (_dd.p.tid)
- Add operation tag for batched vs single requests
* feat: add ack context map and producer improvements for batching
- Add ack context map to preserve trace context across batched acknowledges
- Update producer to use batchSpan._startTime for accurate publish time
- Add explicit parent span support in client plugin
- Wrap Message.ack() to store context before batched gRPC acknowledge
- Update Subscription.emit to properly handle storage context
- Sync auto-load improvements from Branch 1
* fix: resolve linting errors in google-cloud-pubsub.js
* fix: remove trailing whitespace in client.js
* fix comments
* update from review
* addional cleanup
* [SVLS-7168] Create tests for GCP PubSub Push Subscriptions Plugin (#6414)
* feat: add producer-side batch message handling with span linking
- Collect span links from messages 2-N (first becomes parent)
- Extract parent context from first message trace context
- Create pubsub.request span with span links metadata
- Inject batch metadata into all messages (_dd.pubsub_request.*, _dd.batch.*)
- Add 128-bit trace ID support (_dd.p.tid)
- Add operation tag for batched vs single requests
* feat: add span linking from delivery span to pubsub.request
- Add _reconstructPubSubContext to extract pubsub.request span ID from headers
- Add span link to original trace context if different from pubsub.request
- Supports same-trace parenting for better trace continuity
* feat: check for pubsub.delivery span in AsyncLocalStorage before extracting from headers
- HTTP plugin now checks if a delivery span is active in storage
- If found, uses delivery span as parent for http.request
- Ensures proper span hierarchy for push subscriptions
* feat: add span linking and batch metadata to pull-based consumer
- Extract pubsub.request span ID from message attributes
- Add span link correlation tags
- Calculate delivery duration from publish start time
- Add batch size and index tags for batched messages
* remove comments
* new test file
* Fix push subscription test module resolution for CI
* Implement full HTTP+Pub/Sub integration tests
* run linter
* test other frameworks
* Fix push subscription tests
What does this PR do?
Creates New Test File:
pubsub-push-subscription.spec.jsin relation to the changes and new push subscription plugin created in #6260 #6782 #6415New Tests in
pubsub-push-subscription.spec.js:Should create BOTH
pubsub.deliveryspan AND HTTP span in same tracepubsub.delivery(not HTTP)Should propagate distributed trace context from producer to push delivery
Should add batch metadata to delivery span
Should set service name with -pubsub suffix
Should NOT create pubsub span for non-push-subscription requests
User-AgentShould NOT create pubsub span when missing required headers
x-goog-pubsub-message-idheaderUpdated Test in
index.spec.js:Motivation
Plugin Checklist
Additional Notes