Skip to content

Run the forked tests of every test suite - #13218

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 8 commits into
masterfrom
bbujon/forked-test-suites
Nov 6, 2026
Merged

gh-worker-dd-mergequeue-cf854d[bot] merged 8 commits into
masterfrom
bbujon/forked-test-suites

Conversation

@PerfectSlayer

@PerfectSlayer PerfectSlayer commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

What Does This Do

Every test suite created by the gradle/test-suites.gradle helpers now gets a forked test task, so its *ForkedTest classes run in CI. The task reuses the suite's compiled classes and runs on the same JVMs as the suite.

This activates 85 suites whose forked tests never ran: 75 latest-dep suites and 10 version-variant suites, with about 300 forked test classes.

Motivation

A suite only got a forked task when its module opted in. 82 suites did, by declaring a duplicate forked suite or calling addForkedTestTask. 85 others didn't, so their forked tests were silently skipped while the job stayed green. For example, jedis-4.0, hazelcast-3.x/4.0 and javax-servlet-2.2 ran zero latest-dep tests.

Registering the forked task by default matches the common case. A suite with *ForkedTest classes almost always means to run them. With a default, new suites get their forked tests run without anyone having to know about an opt-in, so this coverage hole can't quietly come back. Not running them becomes the exception: an explicit opt-out that a comment or a ticket has to justify. There are 11 today.

Running the forked tests for the first time surfaced real failures. This PR skips them, and each has a ticket:

  • APMLP-2192: 21 openai-java-3.0 LLM Obs tests fail against the latest OpenAI SDK, which requires an API key or workload identity.
  • APMLP-2193: mongo-driver-3.6 doesn't inject the DBM comment field with the latest 3.x driver (8 tests). This may be a real product gap.
  • APMLP-2194: okhttp-3.0 AppSec redirect analysis fails against the latest OkHttp 3 (5 tests): the redirected request is never captured.
  • APMLP-2195: enable-wallclock-profiling never attaches the profiling context with the latest Netty.
  • APMLP-2196: the 161 AWS SDK v2 client tests, all forked, only ever ran against SDK 2.2.0. On 2.20.33, 27 fail because S3 moved the bucket name into the hostname.

Additional Notes

  • The forked task is named after its suite with Test replaced by ForkedTest (latestDepTest → latestDepForkedTest). This keeps the existing names, so most test history is preserved.
  • The forked task uses the suite's Java launcher and inherits its test JVM constraints, so the build files no longer copy them by hand.
  • I removed the 61 duplicate forked suites, which compiled the same sources a second time. Their configurations are removed from the lockfiles by hand, without re-resolving, so no dependency versions change.
  • A suite can opt out with a trailing false on the suite helper:
    • javax-jms-1.1 and scala-promise-2.10/2.13 declare their own forked suite over different sources.
    • aws-java-sdk-2.2 already kept its latest-dep forked tests disabled because the S3 tests break (APMLP-2196).
    • openai-java-3.0 (APMLP-2192), mongo-driver-3.6 (APMLP-2193), okhttp-3.0 (APMLP-2194) and enable-wallclock-profiling (APMLP-2195) fail against their latest dependencies and are skipped until fixed.
    • The jdbc oldH2Test and oldPostgresTest suites predate the forked tests and only check the regular tests against old drivers.
  • Measured CI cost: pipeline 150519106 against the median of 5 master pipelines.
    • test_inst_latest takes +20% total job time (14.1 h vs 11.8 h). It's mostly on the slot holding jdbc, +11 min; the other slots gain 2 to 5 min.
    • test_inst takes +13% (23.7 h vs 21.0 h on the 6 PR JVMs), mostly the lettuce-5.0 variant suites (+12 min on their slot). The slowest job takes 52 min, under the 1-hour job timeout.
    • PR pipelines only pay this for the modules a change touches.

Jira ticket: [APMLP-2188]

🤖 Generated with Claude Code

@PerfectSlayer PerfectSlayer added type: bug fix Bug fix comp: testing Testing tag: no release notes Changes to exclude from release notes tag: ai generated Largely based on code generated by an AI or LLM labels Nov 4, 2026
@datadog-official

datadog-official Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

🎯 Code Coverage (details)
• Patch Coverage: 100.00%
• Overall Coverage: 59.96% (-0.00%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: a3a48ff | Docs | Give us feedback!

@dd-octo-sts

dd-octo-sts Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

🟢 Java Benchmark SLOs — All performance SLOs passed

Suite Status
Startup 🟢 pass

SLO thresholds are defined here based on automatically generated metrics. A warning is raised when results are within 5% of the threshold.

PR vs. master results
Scenario Candidate master Δ (95% CI of mean)
startup:insecure-bank:iast:Agent 14.76 s 14.66 s [-0.2%; +1.6%] (no difference)
startup:insecure-bank:tracing:Agent 13.64 s 13.69 s [-1.2%; +0.4%] (no difference)
startup:petclinic:appsec:Agent 17.12 s 16.92 s [+0.2%; +2.1%] (maybe worse)
startup:petclinic:iast:Agent 17.01 s 17.00 s [-0.8%; +0.8%] (no difference)
startup:petclinic:profiling:Agent 16.68 s 16.75 s [-1.4%; +0.6%] (no difference)
startup:petclinic:sca:Agent 17.11 s 16.93 s [+0.0%; +2.0%] (maybe worse)
startup:petclinic:tracing:Agent 16.15 s 15.67 s [-1.3%; +7.3%] (no difference)

Commit: a3a48ffe · CI Pipeline · Benchmarking Platform UI


Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion.

@PerfectSlayer
PerfectSlayer marked this pull request as ready for review November 5, 2026 09:32
@PerfectSlayer
PerfectSlayer requested review from a team as code owners November 5, 2026 09:32
@PerfectSlayer
PerfectSlayer requested review from ValentinZakharov, jbachorik and sarahchen6 and removed request for a team November 5, 2026 09:32
@PerfectSlayer
PerfectSlayer marked this pull request as draft November 5, 2026 09:32
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-05T11:47:38.569575Z 46ecbac Draft marked ready
🔒 Security Review ✅ Completed 2026-11-05T11:47:40.747946Z 46ecbac Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@PerfectSlayer

Copy link
Copy Markdown
Collaborator Author

Wrong button, I wanted to check the merge conflict, not to open for review 🙏

@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: bd0dd5d89d

ℹ️ 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 gradle/test-suites.gradle Resolved

@datadog-official datadog-official Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bits Code Review: FAIL

Jetty 10’s latest-dependency forked tests now combine SLF4J 2.0.13 with Logback 1.2.13, silently disabling their diagnostic logging.

Open Bits AI session

🤖 Bits Code Review · Commit bd0dd5d

@PerfectSlayer
PerfectSlayer force-pushed the bbujon/forked-test-suites branch from 06f7014 to 796a8dd Compare November 5, 2026 10:20
PerfectSlayer and others added 5 commits November 5, 2026 12:24
Test suites created by the test-suites.gradle helpers had no forked task
unless the module opted in, so their *ForkedTest classes never ran. The
helpers now register the forked task automatically. It reuses the suite
classes and inherits the suite test JVM constraints.

Remove the duplicate forked suites and the opt-in addForkedTestTask calls
this makes redundant, and drop their configurations from the lockfiles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Skip the latest dependency forked tests of openai-java-3.0 (APMLP-2192)
and mongo-driver-3.6 (APMLP-2193) until they are fixed.

The jdbc old driver suites predate the forked tests and only check the
regular tests against old drivers, so they don't run the forked tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Skip them until the AppSec redirect analysis tests pass with the latest
OkHttp 3 (APMLP-2194).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Skip them until thread registration works with the latest Netty
(APMLP-2195).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The forked tests used to force SLF4J 1.7 on their own runtime classpath,
which they now share with latestDepTest. Force it there, so Logback 1.2
binds and both suites log again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PerfectSlayer
PerfectSlayer force-pushed the bbujon/forked-test-suites branch from 796a8dd to 26adffb Compare November 5, 2026 11:29
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PerfectSlayer
PerfectSlayer marked this pull request as ready for review November 5, 2026 11:44

@datadog-official datadog-official Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bits Code Review: PASS

More details

Companion tasks preserve suite classpaths and inherit JVM constraints, while known latest-dependency failures remain explicitly opted out. CI execution and the expected runtime increase remain unverified.

Was this helpful? React 👍 or 👎

Open Bits AI session

🤖 Bits Code Review · Commit 46ecbac

@sarahchen6 sarahchen6 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, LGTM!

Comment thread gradle/test-suites.gradle Resolved
Comment thread gradle/test-suites.gradle Resolved
Comment thread gradle/test-suites.gradle Resolved
PerfectSlayer and others added 2 commits November 6, 2026 14:24
A suite can force its Java launcher, like the armeria Jetty 11 suites do.
Its forked companion now uses the same launcher. It is set rather than
used as a convention: the test JVM constraints plugin already sets the
launcher of every Test task when testJvm selects another JVM than the
Gradle daemon one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The latest dependency suites no longer get finalized by their forked
companion. CI already runs every forked task through allLatestDepTests,
and the default test task is not finalized by forkedTest either.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@bric3 bric3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, it paves the way to a convention plugin!

@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot merged commit be5e4f4 into master Nov 6, 2026
683 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot deleted the bbujon/forked-test-suites branch November 6, 2026 16:07
@github-actions github-actions Bot added this to the 1.69.0 milestone Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: testing Testing tag: ai generated Largely based on code generated by an AI or LLM tag: no release notes Changes to exclude from release notes type: bug fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants