Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs/understand/weblogs/end-to-end_weblog.md
Original file line number Diff line number Diff line change
Expand Up @@ -972,6 +972,16 @@ These endpoints are used for the `Dynamic Instrumentation` tests.
Executes the same probe line `loops` times during one request. It is used to verify per-probe and global
Dynamic Instrumentation rate limits.

#### GET /debugger/correlation

Calls `Correlation`, `CorrelationMiddle`, and `CorrelationLeaf` in one request, pausing between the probed method exits. Used to check that snapshot sampling emits a whole probe chain together.

#### GET /debugger/correlation/loop/<count>

Runs a loop `count` times in one request, sleeping one second per iteration. The loop body and the line right
after the loop are probed. Used to check that a probe emits at most one snapshot per trace, without starving a
sibling probe in the same trace.

#### GET /debugger/snapshot/capture-timeout

Creates a collection containing `collectionSize` object chains. Each chain has a leaf wrapped by
Expand Down
3 changes: 3 additions & 0 deletions manifests/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -764,6 +764,7 @@ manifest:
weblog: [uds, poc]
- declaration: bug (DEBUG-4746)
excluded_weblog: [uds, poc]
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_per_trace_budget: missing_feature (per-trace snapshot budget of 1 not implemented)
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_span_probe_expression_budgets: irrelevant (Dotnet emits evaluation errors as span tags, not error snapshots to the debugger endpoint)
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots: v2.53.0
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots::test_default_max_length:
Expand All @@ -786,6 +787,8 @@ manifest:
- declaration: bug (DEBUG-5101)
component_version: '<3.45.0'
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Method_Probe_Statuses: v2.53.0
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling: v3.55.0 # DEBUG-5828: per-trace coordinated snapshot sampling (#9266)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling_Line_Probe: irrelevant (Line-probe variant is only used by Node.js)
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb: v2.53.0
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb::test_event_metadata: v3.44.0
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb::test_symdb_upload: # Modified by easy win activation script
Expand Down
3 changes: 3 additions & 0 deletions manifests/golang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1667,6 +1667,7 @@ manifest:
tests/debugger/test_debugger_pii.py::Test_Debugger_PII_Redaction: missing_feature (feature not implemented)
tests/debugger/test_debugger_pii.py::Test_Debugger_PII_Redaction_Excluded_Identifiers: missing_feature (feature not implemented)
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets: v2.2.3
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_per_trace_budget: missing_feature (per-trace snapshot budget of 1 not implemented)
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_span_probe_expression_budgets: missing_feature (span decoration probes not yet implemented for Go)
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots: v2.2.3
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots::test_default_max_collection_size: missing_feature (no /debugger/snapshot/limits endpoint)
Expand Down Expand Up @@ -1703,6 +1704,8 @@ manifest:
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Method_Probe_Statuses::test_metric_status: missing_feature (Not yet implemented)
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Method_Probe_Statuses::test_span_decoration_method_status: missing_feature (Not yet implemented)
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Method_Probe_Statuses::test_span_method_status: missing_feature (Not yet implemented)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling: missing_feature (no per-trace coordinated sampling; probabilistic per-trace rate not implemented)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling_Line_Probe: irrelevant (Line-probe variant is only used by Node.js)
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb: v2.2.3
# TODO(andrei): un-skip when datadog-agent v7.79.0 is released (Go's symdb upload comes from the agent, not from dd-trace-go)
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb::test_event_metadata: # TODO: a lower version might be supported
Expand Down
3 changes: 3 additions & 0 deletions manifests/java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3316,6 +3316,7 @@ manifest:
spring-boot-undertow: v1.38.0
spring-boot-wildfly: v1.38.0
uds-spring-boot: v1.38.0
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_per_trace_budget: incomplete_test_app (no /debugger/correlation/loop endpoint)
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_span_probe_expression_budgets: bug (DEBUG-3797)
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots:
- weblog_declaration:
Expand Down Expand Up @@ -3396,6 +3397,8 @@ manifest:
spring-boot-undertow: v1.38.0
spring-boot-wildfly: v1.38.0
uds-spring-boot: v1.38.0
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling: incomplete_test_app (no /debugger/correlation endpoint)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling_Line_Probe: irrelevant (Line-probe variant is only used by Node.js)
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb:
- weblog_declaration:
"*": missing_feature
Expand Down
7 changes: 7 additions & 0 deletions manifests/nodejs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ refs:
- &ref_6_17_0 '>=6.17.0 || ^5.128.0'
- &ref_6_20_0 '>=6.20.0 || ^5.131.0'
- &ref_6_20_1 '>=6.20.1 || ^5.131.1'
- &ref_6_21_0 '>=6.21.0 || ^5.132.0'
manifest:
tests/ai_guard/test_ai_guard_sdk.py::Test_AIGuardEvent_Tag:
- weblog_declaration:
Expand Down Expand Up @@ -1788,6 +1789,7 @@ manifest:
fastify: *ref_5_46_0
uds-express4: *ref_5_46_0
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_log_line_capture_expression_budgets: '>=6.16.0 || ^5.127.0'
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_per_trace_budget: *ref_6_21_0
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_span_probe_expression_budgets: missing_feature (Method probes are not supported by Node.js)
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots:
- weblog_declaration:
Expand Down Expand Up @@ -1846,6 +1848,11 @@ manifest:
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Line_Probe_Statuses::test_metric_line_status: missing_feature (Not yet implemented)
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Line_Probe_Statuses::test_span_decoration_line_status: missing_feature (Not yet implemented)
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Method_Probe_Statuses: missing_feature
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling: irrelevant (Method-probe variant is not used by Node.js)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling_Line_Probe:
- weblog_declaration:
"*": *ref_6_21_0
nextjs: irrelevant
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb: missing_feature (feature not implented)
tests/debugger/test_debugger_telemetry.py::Test_Debugger_Telemetry:
- weblog_declaration:
Expand Down
3 changes: 3 additions & 0 deletions manifests/php.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1190,6 +1190,7 @@ manifest:
laravel11x: incomplete_test_app
symfony7x: incomplete_test_app
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_log_line_capture_expression_budgets: missing_feature
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_per_trace_budget: missing_feature (per-trace snapshot budget of 1 not implemented)
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_span_probe_expression_budgets: irrelevant
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots: missing_feature
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots::test_process_tags_snapshot: missing_feature (Not yet implemented)
Expand Down Expand Up @@ -1219,6 +1220,8 @@ manifest:
apache-mod-8.0: v1.8.3
- declaration: flaky (DEBUG-3814)
component_version: '>1.8.3'
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling: missing_feature (no per-trace coordinated sampling; probabilistic per-trace rate not implemented)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling_Line_Probe: irrelevant (Line-probe variant is only used by Node.js)
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb: missing_feature
tests/debugger/test_debugger_telemetry.py::Test_Debugger_Telemetry:
- weblog_declaration:
Expand Down
3 changes: 3 additions & 0 deletions manifests/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2110,6 +2110,7 @@ manifest:
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_log_line_capture_expression_budgets:
- declaration: bug (DEBUG-5743)
component_version: <4.12.0
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_per_trace_budget: missing_feature (per-trace snapshot budget of 1 not implemented; tracer uses a time-based budget)
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_span_probe_expression_budgets: irrelevant (Python emits evaluation errors as span tags, not error snapshots to the debugger endpoint)
tests/debugger/test_debugger_probe_snapshot.py:
- weblog_declaration:
Expand Down Expand Up @@ -2169,6 +2170,8 @@ manifest:
component_version: 2.16.0
- declaration: bug (DEBUG-3127)
component_version: 2.16.1
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling: missing_feature (no per-trace coordinated sampling; probabilistic per-trace rate not implemented)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling_Line_Probe: irrelevant (Line-probe variant is only used by Node.js)
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb:
- weblog_declaration:
"*": missing_feature
Expand Down
3 changes: 3 additions & 0 deletions manifests/ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1998,6 +1998,7 @@ manifest:
rails80: missing_feature (feature not implemented)
uds-rails: missing_feature (feature not implemented)
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_log_line_budgets: missing_feature (Not yet implemented)
tests/debugger/test_debugger_probe_budgets.py::Test_Debugger_Probe_Budgets::test_per_trace_budget: missing_feature (per-trace snapshot budget of 1 not implemented)
tests/debugger/test_debugger_probe_snapshot.py::Test_Debugger_Line_Probe_Snaphots:
- weblog_declaration:
"*": irrelevant
Expand Down Expand Up @@ -2062,6 +2063,8 @@ manifest:
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Method_Probe_Statuses::test_metric_status: missing_feature (Not yet implemented)
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Method_Probe_Statuses::test_span_decoration_method_status: missing_feature (Not yet implemented)
tests/debugger/test_debugger_probe_status.py::Test_Debugger_Method_Probe_Statuses::test_span_method_status: missing_feature (Not yet implemented)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling: missing_feature (no per-trace coordinated sampling; probabilistic per-trace rate not implemented)
tests/debugger/test_debugger_snapshot_correlation.py::Test_Debugger_Coordinated_Sampling_Line_Probe: irrelevant (Line-probe variant is only used by Node.js)
tests/debugger/test_debugger_symdb.py::Test_Debugger_SymDb:
- weblog_declaration:
"*": irrelevant
Expand Down
32 changes: 16 additions & 16 deletions mirror_images.lock.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -110,26 +110,26 @@ images:
digest: sha256:c2d8a505dfd121933b113e0717f8fbe2e8352f4533d99c85cc5456d9aaf77bde
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:django-py3.13.base-8fa5fb488bac
tag: django-py3.13.base-8fa5fb488bac
datadog/system-tests:express4-typescript.base-be5138693a38:
digest: sha256:6e66aa1b5da64a0d04a108c78f35c3f9f26a941f8233160c5eb78f08d0d3834d
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:express4-typescript.base-be5138693a38
tag: express4-typescript.base-be5138693a38
datadog/system-tests:express4.base-7a16285d66a9:
digest: sha256:3b3365bb8748df3ff993459149705c08a127589ccba72a1a5691f8905b742db2
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:express4.base-7a16285d66a9
tag: express4.base-7a16285d66a9
datadog/system-tests:express5.base-fb385bd8cf2f:
digest: sha256:bd622fa20feba4e54e5c4aebe3e069b9f9b5ffb8a3d016c66749640e44c943fd
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:express5.base-fb385bd8cf2f
tag: express5.base-fb385bd8cf2f
datadog/system-tests:express4-typescript.base-070fd1ba6efd:
digest: sha256:c805fcf6a950f68d3b1fe25102dfbe4a3175374857475ad417154e1e53ebc959
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:express4-typescript.base-070fd1ba6efd
tag: express4-typescript.base-070fd1ba6efd
datadog/system-tests:express4.base-527c2a306057:
digest: sha256:5960fa4fcfdd56fee4754847c6400c78b6d1d4cc3f6093954ea9fa959ef6cd24
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:express4.base-527c2a306057
tag: express4.base-527c2a306057
datadog/system-tests:express5.base-5bff656d2059:
digest: sha256:56f6df4d24495b11e13e122f117d0938a3b86fc9b14c4d30e94bfb88e2999946
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:express5.base-5bff656d2059
tag: express5.base-5bff656d2059
datadog/system-tests:fastapi.base-7f1b67ecf0c2:
digest: sha256:6ee0374d82b4cb777189b4e5f9a6ceb8697ee92be2ab455691445b1c86e2df4a
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:fastapi.base-7f1b67ecf0c2
tag: fastapi.base-7f1b67ecf0c2
datadog/system-tests:fastify.base-8f4f6cf42bfb:
digest: sha256:4ebcb8a7ec9cf2152633cec3d907d90ce50c076420e98e15e2322f9bb25682d8
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:fastify.base-8f4f6cf42bfb
tag: fastify.base-8f4f6cf42bfb
datadog/system-tests:fastify.base-d8786a519f91:
digest: sha256:e7006ea8fb96c22809b44721f6aefaaa249f2d49de5cfaeff9ad5df290c13526
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:fastify.base-d8786a519f91
tag: fastify.base-d8786a519f91
datadog/system-tests:flask-poc.base-ac207107ea25:
digest: sha256:1df044be7f3766d2f8208420b010d485bf270f98f955344997029ac732b3fca4
target: registry.ddbuild.io/system-tests/mirror/datadog/system-tests:flask-poc.base-ac207107ea25
Expand Down
8 changes: 4 additions & 4 deletions mirror_images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@
- "datadog/system-tests:apache-mod-8.2.base-5771d89e2b55"
- "datadog/system-tests:django-poc.base-1d15b551f35b"
- "datadog/system-tests:django-py3.13.base-8fa5fb488bac"
- "datadog/system-tests:express4-typescript.base-be5138693a38"
- "datadog/system-tests:express4.base-7a16285d66a9"
- "datadog/system-tests:express5.base-fb385bd8cf2f"
- "datadog/system-tests:express4-typescript.base-070fd1ba6efd"
- "datadog/system-tests:express4.base-527c2a306057"
- "datadog/system-tests:express5.base-5bff656d2059"
- "datadog/system-tests:fastapi.base-7f1b67ecf0c2"
- "datadog/system-tests:fastify.base-8f4f6cf42bfb"
- "datadog/system-tests:fastify.base-d8786a519f91"
- "datadog/system-tests:flask-poc.base-ac207107ea25"
- "datadog/system-tests:golang_buddy-v2"
- "datadog/system-tests:java-lambda-runtime.base-e9a494d2bc57"
Expand Down
32 changes: 32 additions & 0 deletions tests/debugger/test_debugger_probe_budgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,3 +168,35 @@ def test_span_probe_expression_budgets(self):
f"{self.total_request_time:.1f}s), got {total_error_entries}. "
f"Span probe expression error logging should be rate-limited."
)

def setup_per_trace_budget(self):
self.initialize_weblog_remote_config()

language = self.get_tracer()["language"]

probes = []
for method in ("CorrelationLoopBody", "CorrelationLoopSibling"):
probe = debugger.read_probes("probe_snapshot_log_correlation_loop")[0]
probe["id"] = debugger.generate_probe_id("log")
self._rewrite_where_for_lines([probe], self.method_and_language_to_line_number(method, language))
probes.append(probe)

self.set_probes(probes)
self.send_rc_probes()
self.wait_for_all_probes(statuses=["INSTALLED"])

# The loop sleeps one second per iteration, so a time-based budget would emit more than one
# snapshot while a trace-scoped budget emits exactly one.
self.send_weblog_request("/debugger/correlation/loop/3")

self.wait_for_all_probes(statuses=["EMITTING"])
self.wait_for_all_snapshots()

def test_per_trace_budget(self):
"""A probe in a loop emits one snapshot per trace and does not starve a sibling probe."""
self._assert()

# A single request is a single trace, so every probe must have emitted exactly once.
for probe_id in self.probe_ids:
count = len(self.probe_snapshots.get(probe_id, []))
assert count == 1, f"probe {probe_id} emitted {count} snapshots in one trace, expected exactly 1"
Loading
Loading