Skip to content

Add Config and Context JUnit extensions - #11076

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 4 commits into
masterfrom
bbujon/groovy-to-java
Apr 10, 2026
Merged

Add Config and Context JUnit extensions#11076
gh-worker-dd-mergequeue-cf854d[bot] merged 4 commits into
masterfrom
bbujon/groovy-to-java

Conversation

@PerfectSlayer

@PerfectSlayerPerfectSlayer commented Apr 10, 2026

Copy link
Copy Markdown
Collaborator

What Does This Do

This PR is a follow up of #11062 and introduces:

  • A junit-util modules dedicated to improving the JUnit experience (such module has no groovy / spock dependency on purpose)
  • Config JUnit extension: allows to inject config value:
    • For both test methods and test classes
    • Using both system properties (default) or environment variables
  • Context JUnit extension: allows to re-inject fresh context manager to reset context related state

Here are few examples about how to use it and the various capabilities:

// Class-level: applies to all tests in the class@WithConfig(key = "service", value = "my-service")
@WithConfig(key = "trace.analytics.enabled", value = "true")
classMyTestextendsDDJavaSpecification {
// Method-level: applies to this test only@Test@WithConfig(key = "trace.resolver.enabled", value = "false")
voidtestWithResolverDisabled() {
// dd.trace.resolver.enabled=false is set before this runs
}
// Works with config constant references@Test@WithConfig(key = TracerConfig.TRACE_AGENT_PORT, value = "8126")
voidtestWithCustomPort() { ... }
// Environment variable instead of system property@Test@WithConfig(key = "AGENT_HOST", value = "localhost", env = true)
voidtestWithEnvVar() {
// DD_AGENT_HOST=localhost is set
}
// Raw key without auto-prefix (e.g. for OTEL vars)@Test@WithConfig(key = "OTEL_SERVICE_NAME", value = "test", env = true, addPrefix = false)
voidtestOtelCompat() { ... }
}

Another interesting usage would be product / feature dedicated composed annotation like:

// Composed annotation: bundle config for a product@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@WithConfig(key = "iast.enabled", value = "true")
@WithConfig(key = "iast.detection.mode", value = "FULL")
@WithConfig(key = "iast.redaction.enabled", value = "false")
public @interface IastFullDetection {}
// Reuse across test classes — one annotation, multiple configs@IastFullDetectionclassIastTagTestextendsDDJavaSpecification { ... }
@IastFullDetectionclassIastReporterTestextendsDDJavaSpecification { ... }

Note that all programatic calls about setting config values like WithConfigExtension.injectSysConfig(), WithConfigExtension.injectEnvConfig() will still be available.

Additionally, it moves the TableTest type converter to the new module and refine the span links related tests (I can move it into a separate PR if needed).

Motivation

Provide a first class experience using JUnit testing framework.

Additional Notes

I add the idea about JUnit extension model for few years now but I used Claude to implement it faster and reducing the risk of conflicts related to the codebase migration.

There are some product related config checks that I did not moved into the extension on purpose. I want the extension to remains as generic / decoupled as possible.

Contributor Checklist

Jira ticket: [PROJ-IDENT]

Note:Once your PR is ready to merge, add it to the merge queue by commenting /merge./merge -c cancels the queue request. /merge -f --reason "reason" skips all merge queue checks; please use this judiciously, as some checks do not run at the PR-level. For more information, see this doc.

@PerfectSlayer
PerfectSlayer requested review from a team as code ownersApril 10, 2026 08:35
@PerfectSlayer
PerfectSlayer requested review from mcculls and removed request for a teamApril 10, 2026 08:36
@PerfectSlayerPerfectSlayer added type: feature Enhancements and improvements comp: testing Testing labels Apr 10, 2026
@PerfectSlayerPerfectSlayer changed the title Bbujon/groovy to javaAdd Config and Context JUnit extensionsApr 10, 2026
@PerfectSlayerPerfectSlayer added the tag: ai generated Largely based on code generated by an AI or LLM label Apr 10, 2026

@bric3bric3 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 !

Also, I believe the skill should be updated to use WithConfig.

private static final int TRACE_PARENT_FLAGS_SAMPLED = 1;
private static final int TRACE_PARENT_LENGTH = TRACE_PARENT_FLAGS_START + 2;

// Package-protected for testing

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.

suggestion (non-blocking): Shouldn't we introduce a source level annotation VisibleForTesting ?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

We should come up with something like this yes. Maybe have our own?

Comment threadsettings.gradle.kts
":dd-java-agent:testing",
":utils:config-utils",
":utils:container-utils",
":utils:junit-utils",

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.

thought (non-blocking): I'm thinking that :utils:test-utils will remain, and I feel that junit stuff should eventually land here. So what about moving the groovy / spock in another project (e.g. :utils:test-spock-utils) that we can delete later? Or at least not automatically imported by tests?

Copy link
Copy Markdown
CollaboratorAuthor

Choose a reason for hiding this comment

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

I'm thinking that :utils:test-utils will remain

I think so yes.

I feel that junit stuff should eventually land here

Agreed

So what about moving the groovy / spock in another project (e.g. :utils:test-spock-utils) that we can delete later? Or at least not automatically imported by tests?

That could be a solution yes. I only wanted to do a follow up of @jpbempel PR and tried to avoid changing too many things (I did change a lot in this PR overall 😬 ) because I know he has some more changes wrt to this migration. But yes, I want to get rid of groovy from the default testing module 😉

@pr-commenter

Copy link
Copy Markdown

Benchmarks

Startup

Parameters

BaselineCandidate
baseline_or_candidatebaselinecandidate
git_branchmasterbbujon/groovy-to-java
git_commit_date17758055671775809620
git_commit_sha65641998d909c3
release_version1.62.0-SNAPSHOT~65641994181.62.0-SNAPSHOT~8d909c3d37
See matching parameters
BaselineCandidate
applicationinsecure-bankinsecure-bank
ci_job_date17758114801775811480
ci_job_id15843953991584395399
ci_pipeline_id107037512107037512
cpu_modelIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHzIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_versionLinux runner-zfyrx7zua-project-304-concurrent-0-ovy0niep 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/LinuxLinux runner-zfyrx7zua-project-304-concurrent-0-ovy0niep 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
moduleAgentAgent
parentNoneNone

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 58 metrics, 13 unstable metrics.

Startup time reports for petclinic
gantt
title petclinic - global startup overhead: candidate=1.62.0-SNAPSHOT~8d909c3d37, baseline=1.62.0-SNAPSHOT~6564199418
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.056 s) : 0, 1055857
Total [baseline] (11.148 s) : 0, 11148315
Agent [candidate] (1.057 s) : 0, 1057438
Total [candidate] (11.047 s) : 0, 11046698
section appsec
Agent [baseline] (1.262 s) : 0, 1262126
Total [baseline] (11.189 s) : 0, 11189366
Agent [candidate] (1.259 s) : 0, 1258525
Total [candidate] (11.133 s) : 0, 11133346
section iast
Agent [baseline] (1.224 s) : 0, 1223943
Total [baseline] (11.216 s) : 0, 11216100
Agent [candidate] (1.24 s) : 0, 1239583
Total [candidate] (11.346 s) : 0, 11345745
section profiling
Agent [baseline] (1.184 s) : 0, 1183613
Total [baseline] (11.056 s) : 0, 11055560
Agent [candidate] (1.185 s) : 0, 1184727
Total [candidate] (11.145 s) : 0, 11144855
Loading
  • baseline results
ModuleVariantDurationΔ tracing
Agenttracing1.056 s-
Agentappsec1.262 s206.268 ms (19.5%)
Agentiast1.224 s168.086 ms (15.9%)
Agentprofiling1.184 s127.756 ms (12.1%)
Totaltracing11.148 s-
Totalappsec11.189 s41.051 ms (0.4%)
Totaliast11.216 s67.785 ms (0.6%)
Totalprofiling11.056 s-92.755 ms (-0.8%)
  • candidate results
ModuleVariantDurationΔ tracing
Agenttracing1.057 s-
Agentappsec1.259 s201.087 ms (19.0%)
Agentiast1.24 s182.145 ms (17.2%)
Agentprofiling1.185 s127.288 ms (12.0%)
Totaltracing11.047 s-
Totalappsec11.133 s86.649 ms (0.8%)
Totaliast11.346 s299.047 ms (2.7%)
Totalprofiling11.145 s98.158 ms (0.9%)
gantt
title petclinic - break down per module: candidate=1.62.0-SNAPSHOT~8d909c3d37, baseline=1.62.0-SNAPSHOT~6564199418
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.22 ms) : 0, 1220
crashtracking [candidate] (1.22 ms) : 0, 1220
BytebuddyAgent [baseline] (632.847 ms) : 0, 632847
BytebuddyAgent [candidate] (632.52 ms) : 0, 632520
AgentMeter [baseline] (29.286 ms) : 0, 29286
AgentMeter [candidate] (29.469 ms) : 0, 29469
GlobalTracer [baseline] (248.446 ms) : 0, 248446
GlobalTracer [candidate] (248.851 ms) : 0, 248851
AppSec [baseline] (31.979 ms) : 0, 31979
AppSec [candidate] (32.054 ms) : 0, 32054
Debugger [baseline] (59.87 ms) : 0, 59870
Debugger [candidate] (60.114 ms) : 0, 60114
Remote Config [baseline] (602.789 µs) : 0, 603
Remote Config [candidate] (618.292 µs) : 0, 618
Telemetry [baseline] (8.103 ms) : 0, 8103
Telemetry [candidate] (8.032 ms) : 0, 8032
Flare Poller [baseline] (7.397 ms) : 0, 7397
Flare Poller [candidate] (8.351 ms) : 0, 8351
section appsec
crashtracking [baseline] (1.255 ms) : 0, 1255
crashtracking [candidate] (1.247 ms) : 0, 1247
BytebuddyAgent [baseline] (669.794 ms) : 0, 669794
BytebuddyAgent [candidate] (667.702 ms) : 0, 667702
AgentMeter [baseline] (12.238 ms) : 0, 12238
AgentMeter [candidate] (12.112 ms) : 0, 12112
GlobalTracer [baseline] (251.587 ms) : 0, 251587
GlobalTracer [candidate] (250.818 ms) : 0, 250818
AppSec [baseline] (185.797 ms) : 0, 185797
AppSec [candidate] (185.937 ms) : 0, 185937
Debugger [baseline] (66.802 ms) : 0, 66802
Debugger [candidate] (66.371 ms) : 0, 66371
Remote Config [baseline] (613.077 µs) : 0, 613
Remote Config [candidate] (610.266 µs) : 0, 610
Telemetry [baseline] (8.819 ms) : 0, 8819
Telemetry [candidate] (8.658 ms) : 0, 8658
Flare Poller [baseline] (3.663 ms) : 0, 3663
Flare Poller [candidate] (3.632 ms) : 0, 3632
IAST [baseline] (24.797 ms) : 0, 24797
IAST [candidate] (24.714 ms) : 0, 24714
section iast
crashtracking [baseline] (1.232 ms) : 0, 1232
crashtracking [candidate] (1.23 ms) : 0, 1230
BytebuddyAgent [baseline] (800.962 ms) : 0, 800962
BytebuddyAgent [candidate] (810.925 ms) : 0, 810925
AgentMeter [baseline] (11.406 ms) : 0, 11406
AgentMeter [candidate] (11.703 ms) : 0, 11703
GlobalTracer [baseline] (239.148 ms) : 0, 239148
GlobalTracer [candidate] (242.057 ms) : 0, 242057
AppSec [baseline] (30.148 ms) : 0, 30148
AppSec [candidate] (31.482 ms) : 0, 31482
Debugger [baseline] (61.545 ms) : 0, 61545
Debugger [candidate] (61.603 ms) : 0, 61603
Remote Config [baseline] (1.134 ms) : 0, 1134
Remote Config [candidate] (566.915 µs) : 0, 567
Telemetry [baseline] (12.979 ms) : 0, 12979
Telemetry [candidate] (13.234 ms) : 0, 13234
Flare Poller [baseline] (3.469 ms) : 0, 3469
Flare Poller [candidate] (3.557 ms) : 0, 3557
IAST [baseline] (25.702 ms) : 0, 25702
IAST [candidate] (26.129 ms) : 0, 26129
section profiling
crashtracking [baseline] (1.192 ms) : 0, 1192
crashtracking [candidate] (1.174 ms) : 0, 1174
BytebuddyAgent [baseline] (690.872 ms) : 0, 690872
BytebuddyAgent [candidate] (691.856 ms) : 0, 691856
AgentMeter [baseline] (9.075 ms) : 0, 9075
AgentMeter [candidate] (9.145 ms) : 0, 9145
GlobalTracer [baseline] (207.015 ms) : 0, 207015
GlobalTracer [candidate] (207.205 ms) : 0, 207205
AppSec [baseline] (32.378 ms) : 0, 32378
AppSec [candidate] (32.41 ms) : 0, 32410
Debugger [baseline] (65.61 ms) : 0, 65610
Debugger [candidate] (65.463 ms) : 0, 65463
Remote Config [baseline] (568.602 µs) : 0, 569
Remote Config [candidate] (561.909 µs) : 0, 562
Telemetry [baseline] (7.842 ms) : 0, 7842
Telemetry [candidate] (7.799 ms) : 0, 7799
Flare Poller [baseline] (3.571 ms) : 0, 3571
Flare Poller [candidate] (3.6 ms) : 0, 3600
ProfilingAgent [baseline] (94.193 ms) : 0, 94193
ProfilingAgent [candidate] (94.13 ms) : 0, 94130
Profiling [baseline] (94.754 ms) : 0, 94754
Profiling [candidate] (94.689 ms) : 0, 94689
Loading
Startup time reports for insecure-bank
gantt
title insecure-bank - global startup overhead: candidate=1.62.0-SNAPSHOT~8d909c3d37, baseline=1.62.0-SNAPSHOT~6564199418
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.057 s) : 0, 1057428
Total [baseline] (8.856 s) : 0, 8856320
Agent [candidate] (1.056 s) : 0, 1055882
Total [candidate] (8.83 s) : 0, 8830160
section iast
Agent [baseline] (1.231 s) : 0, 1230590
Total [baseline] (9.543 s) : 0, 9543329
Agent [candidate] (1.228 s) : 0, 1227883
Total [candidate] (9.607 s) : 0, 9606711
Loading
  • baseline results
ModuleVariantDurationΔ tracing
Agenttracing1.057 s-
Agentiast1.231 s173.162 ms (16.4%)
Totaltracing8.856 s-
Totaliast9.543 s687.01 ms (7.8%)
  • candidate results
ModuleVariantDurationΔ tracing
Agenttracing1.056 s-
Agentiast1.228 s172.002 ms (16.3%)
Totaltracing8.83 s-
Totaliast9.607 s776.551 ms (8.8%)
gantt
title insecure-bank - break down per module: candidate=1.62.0-SNAPSHOT~8d909c3d37, baseline=1.62.0-SNAPSHOT~6564199418
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.249 ms) : 0, 1249
crashtracking [candidate] (1.263 ms) : 0, 1263
BytebuddyAgent [baseline] (632.836 ms) : 0, 632836
BytebuddyAgent [candidate] (633.064 ms) : 0, 633064
AgentMeter [baseline] (29.447 ms) : 0, 29447
AgentMeter [candidate] (29.395 ms) : 0, 29395
GlobalTracer [baseline] (248.885 ms) : 0, 248885
GlobalTracer [candidate] (248.552 ms) : 0, 248552
AppSec [baseline] (32.004 ms) : 0, 32004
AppSec [candidate] (32.033 ms) : 0, 32033
Debugger [baseline] (59.116 ms) : 0, 59116
Debugger [candidate] (59.297 ms) : 0, 59297
Remote Config [baseline] (593.263 µs) : 0, 593
Remote Config [candidate] (585.299 µs) : 0, 585
Telemetry [baseline] (8.102 ms) : 0, 8102
Telemetry [candidate] (8.088 ms) : 0, 8088
Flare Poller [baseline] (8.938 ms) : 0, 8938
Flare Poller [candidate] (7.403 ms) : 0, 7403
section iast
crashtracking [baseline] (1.258 ms) : 0, 1258
crashtracking [candidate] (1.254 ms) : 0, 1254
BytebuddyAgent [baseline] (805.559 ms) : 0, 805559
BytebuddyAgent [candidate] (805.682 ms) : 0, 805682
AgentMeter [baseline] (11.678 ms) : 0, 11678
AgentMeter [candidate] (11.626 ms) : 0, 11626
GlobalTracer [baseline] (240.175 ms) : 0, 240175
GlobalTracer [candidate] (238.574 ms) : 0, 238574
AppSec [baseline] (30.728 ms) : 0, 30728
AppSec [candidate] (32.52 ms) : 0, 32520
Debugger [baseline] (62.334 ms) : 0, 62334
Debugger [candidate] (58.617 ms) : 0, 58617
Remote Config [baseline] (557.628 µs) : 0, 558
Remote Config [candidate] (534.774 µs) : 0, 535
Telemetry [baseline] (12.115 ms) : 0, 12115
Telemetry [candidate] (13.622 ms) : 0, 13622
Flare Poller [baseline] (3.83 ms) : 0, 3830
Flare Poller [candidate] (3.451 ms) : 0, 3451
IAST [baseline] (26.024 ms) : 0, 26024
IAST [candidate] (25.722 ms) : 0, 25722
Loading

Load

Parameters

BaselineCandidate
baseline_or_candidatebaselinecandidate
git_branchmasterbbujon/groovy-to-java
git_commit_date17758055671775809620
git_commit_sha65641998d909c3
release_version1.62.0-SNAPSHOT~65641994181.62.0-SNAPSHOT~8d909c3d37
See matching parameters
BaselineCandidate
applicationinsecure-bankinsecure-bank
ci_job_date17758119551775811955
ci_job_id15843954041584395404
ci_pipeline_id107037512107037512
cpu_modelIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHzIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_versionLinux runner-zfyrx7zua-project-304-concurrent-1-njpteuzn 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/LinuxLinux runner-zfyrx7zua-project-304-concurrent-1-njpteuzn 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 1 performance improvements and 3 performance regressions! Performance is the same for 16 metrics, 16 unstable metrics.

scenarioΔ mean agg_http_req_duration_p50Δ mean agg_http_req_duration_p95Δ mean throughputcandidate mean agg_http_req_duration_p50candidate mean agg_http_req_duration_p95candidate mean throughputbaseline mean agg_http_req_duration_p50baseline mean agg_http_req_duration_p95baseline mean throughput
scenario:load:insecure-bank:iast:high_loadworse
[+61.285µs; +152.818µs] or [+2.390%; +5.959%]
worse
[+197.833µs; +622.401µs] or [+2.659%; +8.366%]
unstable
[-196.743op/s; +78.806op/s] or [-14.135%; +5.662%]
2.671ms7.850ms1332.938op/s2.564ms7.440ms1391.906op/s
scenario:load:petclinic:no_agent:high_loadworse
[+0.384ms; +1.868ms] or [+2.306%; +11.214%]
unstable
[-0.095ms; +3.100ms] or [-0.336%; +10.993%]
unstable
[-47.320op/s; +14.195op/s] or [-17.347%; +5.204%]
17.782ms29.701ms256.219op/s16.656ms28.198ms272.781op/s
scenario:load:petclinic:tracing:high_loadbetter
[-1.629ms; -0.715ms] or [-8.688%; -3.812%]
unsure
[-1.894ms; -0.490ms] or [-6.293%; -1.627%]
unstable
[-11.701op/s; +43.451op/s] or [-4.773%; +17.726%]
17.575ms28.906ms261.000op/s18.746ms30.098ms245.125op/s
Request duration reports for petclinic
gantt
title petclinic - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~8d909c3d37, baseline=1.62.0-SNAPSHOT~6564199418
dateFormat X
axisFormat %s
section baseline
no_agent (17.1 ms) : 16927, 17274
. : milestone, 17100,
appsec (18.759 ms) : 18567, 18950
. : milestone, 18759,
code_origins (18.001 ms) : 17822, 18179
. : milestone, 18001,
iast (18.385 ms) : 18200, 18570
. : milestone, 18385,
profiling (19.336 ms) : 19142, 19530
. : milestone, 19336,
tracing (19.039 ms) : 18846, 19232
. : milestone, 19039,
section candidate
no_agent (18.215 ms) : 18030, 18401
. : milestone, 18215,
appsec (18.457 ms) : 18271, 18642
. : milestone, 18457,
code_origins (17.833 ms) : 17659, 18007
. : milestone, 17833,
iast (18.087 ms) : 17905, 18270
. : milestone, 18087,
profiling (19.834 ms) : 19631, 20037
. : milestone, 19834,
tracing (17.874 ms) : 17698, 18051
. : milestone, 17874,
Loading
  • baseline results
VariantRequest duration [CI 0.99]Δ no_agent
no_agent17.1 ms [16.927 ms, 17.274 ms]-
appsec18.759 ms [18.567 ms, 18.95 ms]1.658 ms (9.7%)
code_origins18.001 ms [17.822 ms, 18.179 ms]900.064 µs (5.3%)
iast18.385 ms [18.2 ms, 18.57 ms]1.284 ms (7.5%)
profiling19.336 ms [19.142 ms, 19.53 ms]2.236 ms (13.1%)
tracing19.039 ms [18.846 ms, 19.232 ms]1.938 ms (11.3%)
  • candidate results
VariantRequest duration [CI 0.99]Δ no_agent
no_agent18.215 ms [18.03 ms, 18.401 ms]-
appsec18.457 ms [18.271 ms, 18.642 ms]241.628 µs (1.3%)
code_origins17.833 ms [17.659 ms, 18.007 ms]-382.495 µs (-2.1%)
iast18.087 ms [17.905 ms, 18.27 ms]-127.783 µs (-0.7%)
profiling19.834 ms [19.631 ms, 20.037 ms]1.619 ms (8.9%)
tracing17.874 ms [17.698 ms, 18.051 ms]-340.718 µs (-1.9%)
Request duration reports for insecure-bank
gantt
title insecure-bank - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~8d909c3d37, baseline=1.62.0-SNAPSHOT~6564199418
dateFormat X
axisFormat %s
section baseline
no_agent (1.286 ms) : 1273, 1299
. : milestone, 1286,
iast (3.287 ms) : 3241, 3333
. : milestone, 3287,
iast_FULL (5.963 ms) : 5904, 6023
. : milestone, 5963,
iast_GLOBAL (3.602 ms) : 3548, 3657
. : milestone, 3602,
profiling (2.054 ms) : 2036, 2072
. : milestone, 2054,
tracing (1.836 ms) : 1821, 1851
. : milestone, 1836,
section candidate
no_agent (1.301 ms) : 1289, 1313
. : milestone, 1301,
iast (3.437 ms) : 3389, 3485
. : milestone, 3437,
iast_FULL (5.893 ms) : 5833, 5953
. : milestone, 5893,
iast_GLOBAL (3.698 ms) : 3636, 3760
. : milestone, 3698,
profiling (2.033 ms) : 2016, 2050
. : milestone, 2033,
tracing (1.852 ms) : 1837, 1867
. : milestone, 1852,
Loading
  • baseline results
VariantRequest duration [CI 0.99]Δ no_agent
no_agent1.286 ms [1.273 ms, 1.299 ms]-
iast3.287 ms [3.241 ms, 3.333 ms]2.002 ms (155.7%)
iast_FULL5.963 ms [5.904 ms, 6.023 ms]4.678 ms (363.8%)
iast_GLOBAL3.602 ms [3.548 ms, 3.657 ms]2.316 ms (180.2%)
profiling2.054 ms [2.036 ms, 2.072 ms]768.4 µs (59.8%)
tracing1.836 ms [1.821 ms, 1.851 ms]550.492 µs (42.8%)
  • candidate results
VariantRequest duration [CI 0.99]Δ no_agent
no_agent1.301 ms [1.289 ms, 1.313 ms]-
iast3.437 ms [3.389 ms, 3.485 ms]2.136 ms (164.2%)
iast_FULL5.893 ms [5.833 ms, 5.953 ms]4.592 ms (352.9%)
iast_GLOBAL3.698 ms [3.636 ms, 3.76 ms]2.397 ms (184.3%)
profiling2.033 ms [2.016 ms, 2.05 ms]731.765 µs (56.2%)
tracing1.852 ms [1.837 ms, 1.867 ms]551.033 µs (42.4%)

Dacapo

Parameters

BaselineCandidate
baseline_or_candidatebaselinecandidate
git_branchmasterbbujon/groovy-to-java
git_commit_date17758055671775809620
git_commit_sha65641998d909c3
release_version1.62.0-SNAPSHOT~65641994181.62.0-SNAPSHOT~8d909c3d37
See matching parameters
BaselineCandidate
applicationbiojavabiojava
ci_job_date17758116881775811688
ci_job_id15843954091584395409
ci_pipeline_id107037512107037512
cpu_modelIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHzIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_versionLinux runner-zfyrx7zua-project-304-concurrent-0-tcv77krg 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/LinuxLinux runner-zfyrx7zua-project-304-concurrent-0-tcv77krg 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 10 metrics, 2 unstable metrics.

Execution time for biojava
gantt
title biojava - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~8d909c3d37, baseline=1.62.0-SNAPSHOT~6564199418
dateFormat X
axisFormat %s
section baseline
no_agent (15.509 s) : 15509000, 15509000
. : milestone, 15509000,
appsec (14.861 s) : 14861000, 14861000
. : milestone, 14861000,
iast (18.544 s) : 18544000, 18544000
. : milestone, 18544000,
iast_GLOBAL (18.299 s) : 18299000, 18299000
. : milestone, 18299000,
profiling (15.435 s) : 15435000, 15435000
. : milestone, 15435000,
tracing (15.026 s) : 15026000, 15026000
. : milestone, 15026000,
section candidate
no_agent (15.13 s) : 15130000, 15130000
. : milestone, 15130000,
appsec (14.903 s) : 14903000, 14903000
. : milestone, 14903000,
iast (18.129 s) : 18129000, 18129000
. : milestone, 18129000,
iast_GLOBAL (18.684 s) : 18684000, 18684000
. : milestone, 18684000,
profiling (15.533 s) : 15533000, 15533000
. : milestone, 15533000,
tracing (15.093 s) : 15093000, 15093000
. : milestone, 15093000,
Loading
  • baseline results
VariantExecution Time [CI 0.99]Δ no_agent
no_agent15.509 s [15.509 s, 15.509 s]-
appsec14.861 s [14.861 s, 14.861 s]-648.0 ms (-4.2%)
iast18.544 s [18.544 s, 18.544 s]3.035 s (19.6%)
iast_GLOBAL18.299 s [18.299 s, 18.299 s]2.79 s (18.0%)
profiling15.435 s [15.435 s, 15.435 s]-74.0 ms (-0.5%)
tracing15.026 s [15.026 s, 15.026 s]-483.0 ms (-3.1%)
  • candidate results
VariantExecution Time [CI 0.99]Δ no_agent
no_agent15.13 s [15.13 s, 15.13 s]-
appsec14.903 s [14.903 s, 14.903 s]-227.0 ms (-1.5%)
iast18.129 s [18.129 s, 18.129 s]2.999 s (19.8%)
iast_GLOBAL18.684 s [18.684 s, 18.684 s]3.554 s (23.5%)
profiling15.533 s [15.533 s, 15.533 s]403.0 ms (2.7%)
tracing15.093 s [15.093 s, 15.093 s]-37.0 ms (-0.2%)
Execution time for tomcat
gantt
title tomcat - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~8d909c3d37, baseline=1.62.0-SNAPSHOT~6564199418
dateFormat X
axisFormat %s
section baseline
no_agent (1.495 ms) : 1483, 1506
. : milestone, 1495,
appsec (3.855 ms) : 3631, 4078
. : milestone, 3855,
iast (2.287 ms) : 2218, 2357
. : milestone, 2287,
iast_GLOBAL (2.332 ms) : 2262, 2402
. : milestone, 2332,
profiling (2.11 ms) : 2055, 2165
. : milestone, 2110,
tracing (2.097 ms) : 2043, 2151
. : milestone, 2097,
section candidate
no_agent (1.495 ms) : 1484, 1507
. : milestone, 1495,
appsec (3.849 ms) : 3626, 4073
. : milestone, 3849,
iast (2.284 ms) : 2215, 2354
. : milestone, 2284,
iast_GLOBAL (2.337 ms) : 2267, 2407
. : milestone, 2337,
profiling (2.554 ms) : 2388, 2719
. : milestone, 2554,
tracing (2.09 ms) : 2036, 2144
. : milestone, 2090,
Loading
  • baseline results
VariantExecution Time [CI 0.99]Δ no_agent
no_agent1.495 ms [1.483 ms, 1.506 ms]-
appsec3.855 ms [3.631 ms, 4.078 ms]2.36 ms (157.9%)
iast2.287 ms [2.218 ms, 2.357 ms]792.536 µs (53.0%)
iast_GLOBAL2.332 ms [2.262 ms, 2.402 ms]837.166 µs (56.0%)
profiling2.11 ms [2.055 ms, 2.165 ms]615.452 µs (41.2%)
tracing2.097 ms [2.043 ms, 2.151 ms]602.257 µs (40.3%)
  • candidate results
VariantExecution Time [CI 0.99]Δ no_agent
no_agent1.495 ms [1.484 ms, 1.507 ms]-
appsec3.849 ms [3.626 ms, 4.073 ms]2.354 ms (157.4%)
iast2.284 ms [2.215 ms, 2.354 ms]788.921 µs (52.8%)
iast_GLOBAL2.337 ms [2.267 ms, 2.407 ms]841.723 µs (56.3%)
profiling2.554 ms [2.388 ms, 2.719 ms]1.058 ms (70.8%)
tracing2.09 ms [2.036 ms, 2.144 ms]594.694 µs (39.8%)

@jpbempeljpbempel left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

love the @WithConfig idea!

@PerfectSlayer

Copy link
Copy Markdown
CollaboratorAuthor

/merge

@gh-worker-devflow-routing-ef8351

gh-worker-devflow-routing-ef8351Bot commented Apr 10, 2026

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2026-04-10 14:09:44 UTC ℹ️ Start processing command /merge


2026-04-10 14:09:49 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in master is approximately 2h (p90).


2026-04-10 15:14:27 UTC ℹ️ MergeQueue: This merge request was merged

@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854dBot merged commit 5ab378f into masterApr 10, 2026
584 of 587 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854dBot deleted the bbujon/groovy-to-java branch April 10, 2026 15:14
@github-actionsgithub-actionsBot added this to the 1.62.0 milestone Apr 10, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: testingTestingtag: ai generatedLargely based on code generated by an AI or LLMtype: featureEnhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@PerfectSlayer@bric3@jpbempel