Skip to content

[Debugger] Test SymDB upload event JSON and attachment metadata#6887

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit into
mainfrom
andrei/symdb-event-metadata
May 14, 2026
Merged

[Debugger] Test SymDB upload event JSON and attachment metadata#6887
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit into
mainfrom
andrei/symdb-event-metadata

Conversation

@andreimatei

@andreimatei andreimatei commented May 8, 2026

Copy link
Copy Markdown
Contributor

Test the upcoming extended schema of the EvP events associated to
symdb uploads and the matching fields in the gzipped attachment body.
The new test is initially "missing_feature" for every tracer; once the
different tracers are released, the manifest entries can be moved off
"missing_feature" to a version cap.

The event JSON gets the following fields at the root, in camelCase to
match the rest of the EvP event schema:

  • "ddsource" (was already required)
  • "service" (was already required)
  • "version"
  • "language"
  • "runtimeId" (was already required)
  • "type": "symdb"
  • "uploadId"
  • "batchNum" (1-indexed integer)
  • "final" (boolean)
  • "attachmentSize" (positive integer)

The attachment body gets the matching upload metadata at the root, in
snake_case to match the rest of the attachment scope schema
(scope_type, source_file, ...):

  • "upload_id"
  • "batch_num"
  • "final"

The test also cross-checks per upload that uploadId/batchNum in the
event equal upload_id/batch_num in the attachment.

The schema (utils/interfaces/schemas/library/symdb/v1/input-request.json)
keeps the original "ddsource"/"service"/"runtimeId" as required and
type-checks the new fields if present, so existing tracer versions are
not regressed by the schema. The strict presence check lives in the new
test_event_metadata method, which is gated per tracer/agent version via
the manifests.

Test harness changes:

  • BaseDebuggerTest gains a symdb_upload_events list field.
  • A new _collect_symdb_upload_events() walks every captured
    /symdb/v1/input request, picks the multipart parts whose
    Content-Disposition has name="event", and stores the parsed JSON.
  • collect() invokes it alongside _collect_symbols().

🛟 #apm-shared-testing 🛟

Reviewer checklist

  • Anything but tests/ or manifests/ is modified ? I have the approval from R&P team
  • A docker base image is modified?
    • the relevant build-XXX-image label is present
  • A scenario is added, removed or renamed?

@andreimatei
andreimatei requested review from a team as code owners May 8, 2026 19:54
@andreimatei
andreimatei requested review from KowalskiThomas, dromanol, manuel-alvarez-alvarez and taegyunkim and removed request for a team May 8, 2026 19:54

@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: 845a0bc469

ℹ️ 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/debugger/test_debugger_symdb.py
@andreimatei
andreimatei force-pushed the andrei/symdb-event-metadata branch from 845a0bc to 2140beb Compare May 8, 2026 19:57
@github-actions

github-actions Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

manifests/dotnet.yml                                                    @DataDog/apm-dotnet @DataDog/asm-dotnet
manifests/golang.yml                                                    @DataDog/dd-trace-go-guild
manifests/java.yml                                                      @DataDog/asm-java @DataDog/apm-java
manifests/python.yml                                                    @DataDog/apm-python @DataDog/asm-python
manifests/ruby.yml                                                      @DataDog/ruby-guild @DataDog/asm-ruby
tests/debugger/test_debugger_symdb.py                                   @DataDog/debugger @DataDog/system-tests-core
tests/debugger/utils.py                                                 @DataDog/debugger @DataDog/system-tests-core
tests/schemas/utils/library/symdb/v1/input-request.json                 @DataDog/system-tests-core
tests/test_the_test/scenarios.json                                      @DataDog/system-tests-core

@andreimatei
andreimatei force-pushed the andrei/symdb-event-metadata branch from 2140beb to 6fc9dbd Compare May 8, 2026 23:03
@andreimatei
andreimatei force-pushed the andrei/symdb-event-metadata branch from 6fc9dbd to c6b13d4 Compare May 12, 2026 19:49
@andreimatei andreimatei changed the title [Debugger] Test SymDB upload event JSON metadata [Debugger] Test SymDB upload event JSON and attachment metadata May 12, 2026
@datadog-prod-us1-4

datadog-prod-us1-4 Bot commented May 12, 2026

Copy link
Copy Markdown

Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 21ba712 | Docs | Datadog PR Page | Give us feedback!

Test the upcoming extended schema of the EvP events associated to
symdb uploads and the matching fields in the gzipped attachment body.
The new test is initially "missing_feature" for every tracer; once the
different tracers are released, the manifest entries can be moved off
"missing_feature" to a version cap.

The event JSON gets the following fields at the root, in camelCase to
match the rest of the EvP event schema:

- "ddsource"      (was already required)
- "service"       (was already required)
- "version"
- "language"
- "runtimeId"     (was already required)
- "type": "symdb"
- "uploadId"
- "batchNum"      (1-indexed integer)
- "final"         (boolean)
- "attachmentSize" (positive integer)

The attachment body gets the matching upload metadata at the root, in
snake_case to match the rest of the attachment scope schema
(scope_type, source_file, ...):

- "upload_id"
- "batch_num"
- "final"

The test also cross-checks per upload that uploadId/batchNum in the
event equal upload_id/batch_num in the attachment.

The schema (utils/interfaces/schemas/library/symdb/v1/input-request.json)
keeps the original "ddsource"/"service"/"runtimeId" as required and
type-checks the new fields if present, so existing tracer versions are
not regressed by the schema. The strict presence check lives in the new
test_event_metadata method, which is gated per tracer/agent version via
the manifests.

Test harness changes:
- BaseDebuggerTest gains a `symdb_upload_events` list field.
- A new `_collect_symdb_upload_events()` walks every captured
  /symdb/v1/input request, picks the multipart parts whose
  Content-Disposition has name="event", and stores the parsed JSON.
- collect() invokes it alongside _collect_symbols().
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants