Skip to content

Remove Groovy from internal-api modules - #13152

Draft
AlexeyKuznetsov-DD wants to merge 1 commit into
alexeyk/modifiable-config-with-jacocofrom
alexeyk/internal-api-remove-groovy
Draft

AlexeyKuznetsov-DD wants to merge 1 commit into
alexeyk/modifiable-config-with-jacocofrom
alexeyk/internal-api-remove-groovy

Conversation

@AlexeyKuznetsov-DD

Copy link
Copy Markdown
Contributor

What Does This Do

Drops the groovy plugin, Spock and CodeNarc from the internal-api module convention (internal-api, internal-api-9, metrics-api, remote-config-api), now that their tests are all Java/JUnit 5.

Motivation

Part of the Groovy-to-Java test migration: migrated modules shouldn't pay for Groovy compilation, Spock on the test classpath, or CodeNarc.

Additional Notes

  • Stacked on Attach modifiable-config agent alongside JaCoCo #13150. Without it, internal-api tests fail once Spock is gone, because Spock was hiding the missing config agent.
  • A temporary dd-trace-java.conventions.java-only convention backs migrated modules, and unmigrated modules keep dd-trace-java.conventions.java. They should be merged once migration finishes. The shared JUnit/Mockito/TableTest dependencies moved to gradle/java_test_deps.gradle, which both conventions use.
  • CodeNarc is now applied only when the groovy plugin is present, the same way Spotless already handles Groovy.
  • ThreadUtils.runConcurrently loses its groovy.lang.Closure overload. Groovy callers' closure literals coerce to ThrowingRunnable (checked with the Groovy ThreadUtilsTest and the pekko and quarkus test compiles). Checked exceptions now propagate unwrapped.
  • Lockfile changes: Groovy, Spock, JUnit 4 and Hamcrest drop off the test classpaths, and objenesis goes from 3.3 (pinned by Spock) to 3.2 (from Mockito 4.4.0).

Contributor Checklist

🤖 Generated with Claude Code

All internal-api tests are now Java/JUnit 5, so the internal-api module
convention no longer applies the groovy plugin, Spock or CodeNarc. A
temporary java-only convention backs migrated modules while the rest keep
the Groovy-based one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AlexeyKuznetsov-DD AlexeyKuznetsov-DD added comp: testing Testing comp: core Tracer core tag: no release notes Changes to exclude from release notes type: refactoring tag: ai generated Largely based on code generated by an AI or LLM labels Nov 1, 2026
@datadog-official

This comment has been minimized.

@dd-octo-sts

dd-octo-sts Bot commented Nov 1, 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 13.97 s 14.01 s [-1.2%; +0.6%] (no difference)
startup:insecure-bank:tracing:Agent 12.91 s 12.98 s [-1.1%; +0.0%] (no difference)
startup:petclinic:appsec:Agent 17.10 s 16.37 s [-0.0%; +9.0%] (no difference)
startup:petclinic:iast:Agent 17.02 s 17.04 s [-1.0%; +0.8%] (no difference)
startup:petclinic:profiling:Agent 16.70 s 16.83 s [-2.1%; +0.5%] (no difference)
startup:petclinic:sca:Agent 17.12 s 17.12 s [-0.9%; +0.9%] (no difference)
startup:petclinic:tracing:Agent 16.09 s 16.15 s [-1.2%; +0.5%] (no difference)

Commit: 93db133e · 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.

This branch has not been deployed

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

Labels

comp: core Tracer core 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: refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant