Skip to content

intial test gatherer#23938

Draft
HadhemiDD wants to merge 3 commits into
hs/dispatcher-test-runnerfrom
hs/dispatcher-test-gatherer
Draft

intial test gatherer#23938
HadhemiDD wants to merge 3 commits into
hs/dispatcher-test-runnerfrom
hs/dispatcher-test-gatherer

Conversation

@HadhemiDD
Copy link
Copy Markdown
Contributor

What does this PR do?

It builds the part of the test system that collects and reports test results.

Here's the bigger picture: our CI splits a huge pile of integration tests into smaller groups ("batches") and runs each as a separate GitHub Actions workflow, to get around GitHub's limit on how many jobs one workflow can have. The first half of this system (already built) launches those workflows and downloads their results. This PR adds the second half: the piece that looks at what came back and figures out what passed, what failed, and why.

When a batch of tests finishes, this new code:

  1. Looks at the downloaded results on disk (it never calls GitHub — it just reads the files that were already fetched).
  2. Figures out, job by job, what happened — which integration/environment passed, which failed, and which step broke.
  3. Reads the JUnit test reports to pull out exactly which individual tests failed.
  4. Tidies the files away — coverage reports and test reports get copied into neat folders with clear names, so they can be used later (e.g. to publish coverage).
  5. Posts an updated summary so the pull request comment always reflects the latest status as each batch comes in.

The new pieces:

  • JUnit reader — opens test report files and lists the failures (and safely refuses suspicious files).
  • The Gatherer — the coordinator that ties it all together: read results → sort out pass/fail → organize files → send an update.
  • A small shared helper — translates GitHub's status words into a simple "passed / failed / skipped".
  • Supporting plumbing — a few new data shapes and a GitHub lookup, used to pass job details along.

In short: the runner launches tests and grabs the output; this PR makes sense of that output and keeps the PR comment up to date.

Motivation

Review checklist (to be filled by reviewers)

  • Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
  • Add qa/required if this PR needs QA validation, or qa/skip-qa if it does not. Exactly one of the two is required.
  • If you need to backport this PR to another branch, you can add the backport/<branch-name> label to the PR and it will automatically open a backport PR once this one is merged

@dd-octo-sts dd-octo-sts Bot added the ddev label Jun 5, 2026
@datadog-datadog-prod-us1
Copy link
Copy Markdown
Contributor

datadog-datadog-prod-us1 Bot commented Jun 5, 2026

Pipelines  Tests  Code Coverage

Fix all issues with BitsAI

⚠️ Warnings

🚦 5 Pipeline jobs failed

PR All | test / j06ca546 / SNMP   View in Datadog   GitHub Actions

See error Max retries exceeded with HTTPSConnection to 'ddintegrations.blob.core.windows.net'. Failed to resolve the hostname.

PR All | test / j46da136 / JBoss_WildFly   View in Datadog   GitHub Actions

See error Could not resolve the domain 'ddintegrations.blob.core.windows.net:443' during container startup command execution.

PR All | test / j5a9585a / IBM ACE   View in Datadog   GitHub Actions

See error Could not resolve host: ddintegrations.blob.core.windows.net during curl download attempt.

View all 5 failed jobs.

🧪 20 Tests failed in 1 job

PR All | run   GitHub Actions

test_bulk_table from test_check.py   View in Datadog (Fix with Cursor)
HTTPSConnectionPool(host=&#39;ddintegrations.blob.core.windows.net&#39;, port=443): Max retries exceeded with url: /snmp/cisco-3850.snmprec (Caused by NameResolutionError(&#34;HTTPSConnection(host=&#39;ddintegrations.blob.core.windows.net&#39;, port=443): Failed to resolve &#39;ddintegrations.blob.core.windows.net&#39; ([Errno -2] Name or service not known)&#34;))
test_cast_metrics from test_check.py   View in Datadog (Fix with Cursor)
HTTPSConnectionPool(host=&#39;ddintegrations.blob.core.windows.net&#39;, port=443): Max retries exceeded with url: /snmp/cisco-3850.snmprec (Caused by NameResolutionError(&#34;HTTPSConnection(host=&#39;ddintegrations.blob.core.windows.net&#39;, port=443): Failed to resolve &#39;ddintegrations.blob.core.windows.net&#39; ([Errno -2] Name or service not known)&#34;))

View all 20 test failures

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 96.45%
Overall Coverage: 87.72% (+0.02%)

Useful? React with 👍 / 👎

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

@HadhemiDD HadhemiDD added the qa/skip-qa Automatically skip this PR for the next QA label Jun 5, 2026
@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts Bot commented Jun 5, 2026

Validation Report

All 21 validations passed.

Show details
Validation Description Status
agent-reqs Verify check versions match the Agent requirements file
ci Validate CI configuration and code coverage settings
codeowners Validate every integration has a CODEOWNERS entry
config Validate default configuration files against spec.yaml
dep Verify dependency pins are consistent and Agent-compatible
http Validate integrations use the HTTP wrapper correctly
imports Validate check imports do not use deprecated modules
integration-style Validate check code style conventions
jmx-metrics Validate JMX metrics definition files and config
labeler Validate PR labeler config matches integration directories
legacy-signature Validate no integration uses the legacy Agent check signature
license-headers Validate Python files have proper license headers
licenses Validate third-party license attribution list
metadata Validate metadata.csv metric definitions
models Validate configuration data models match spec.yaml
openmetrics Validate OpenMetrics integrations disable the metric limit
package Validate Python package metadata and naming
qa-label Validate the pull request declares whether it needs QA for the next Agent release
readmes Validate README files have required sections
saved-views Validate saved view JSON file structure and fields
version Validate version consistency between package and changelog

View full run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ddev qa/skip-qa Automatically skip this PR for the next QA

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant