Skip to content

Improve Config JUnit extension#11094

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 5 commits intomasterfrom
bbujon/groovy-to-java-config
Apr 17, 2026
Merged

Improve Config JUnit extension#11094
gh-worker-dd-mergequeue-cf854d[bot] merged 5 commits intomasterfrom
bbujon/groovy-to-java-config

Conversation

@PerfectSlayer
Copy link
Copy Markdown
Contributor

@PerfectSlayer PerfectSlayer commented Apr 13, 2026

What Does This Do

This PR improves the newly introduces Config JUnit extension: #11076

  • Allow to add @WithConfig at any class hierarchy level. Child classes can now inherit parent config and enrich it.
  • Improve performance by building configuration only once per test method. It can still be rebuild if config is updated programmatically.
  • Apply class level configuration (ie @WithConfig annotation on class element) at @BeforeAll level so class level configuration is accessible in static test initializers.

Motivation

Using the extension allowed to refine both its behavior and performance.

Additional Notes

This PR is part of some bigger improvements in stacked PRs:

Contributor Checklist

Jira ticket: [APMLP-1247]

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.

@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Apr 13, 2026

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master bbujon/groovy-to-java-config
git_commit_date 1776382763 1776425143
git_commit_sha 8b1580f af45d6c
release_version 1.62.0-SNAPSHOT~8b1580f2ad 1.62.0-SNAPSHOT~af45d6c21c
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1776426984 1776426984
ci_job_id 1605127771 1605127771
ci_pipeline_id 108209153 108209153
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-1qjba07y 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 Linux runner-zfyrx7zua-project-304-concurrent-0-1qjba07y 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
module Agent Agent
parent None None

Summary

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

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.62.0-SNAPSHOT~af45d6c21c, baseline=1.62.0-SNAPSHOT~8b1580f2ad

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.059 s) : 0, 1059392
Total [baseline] (11.092 s) : 0, 11092076
Agent [candidate] (1.062 s) : 0, 1062344
Total [candidate] (11.085 s) : 0, 11085075
section appsec
Agent [baseline] (1.257 s) : 0, 1257013
Total [baseline] (11.215 s) : 0, 11215391
Agent [candidate] (1.246 s) : 0, 1245555
Total [candidate] (11.168 s) : 0, 11168282
section iast
Agent [baseline] (1.225 s) : 0, 1225127
Total [baseline] (11.428 s) : 0, 11428226
Agent [candidate] (1.225 s) : 0, 1225126
Total [candidate] (11.363 s) : 0, 11362737
section profiling
Agent [baseline] (1.184 s) : 0, 1183766
Total [baseline] (10.903 s) : 0, 10903127
Agent [candidate] (1.183 s) : 0, 1182570
Total [candidate] (11.001 s) : 0, 11000881
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.059 s -
Agent appsec 1.257 s 197.621 ms (18.7%)
Agent iast 1.225 s 165.735 ms (15.6%)
Agent profiling 1.184 s 124.373 ms (11.7%)
Total tracing 11.092 s -
Total appsec 11.215 s 123.315 ms (1.1%)
Total iast 11.428 s 336.15 ms (3.0%)
Total profiling 10.903 s -188.949 ms (-1.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.062 s -
Agent appsec 1.246 s 183.211 ms (17.2%)
Agent iast 1.225 s 162.782 ms (15.3%)
Agent profiling 1.183 s 120.225 ms (11.3%)
Total tracing 11.085 s -
Total appsec 11.168 s 83.207 ms (0.8%)
Total iast 11.363 s 277.662 ms (2.5%)
Total profiling 11.001 s -84.194 ms (-0.8%)
gantt
    title petclinic - break down per module: candidate=1.62.0-SNAPSHOT~af45d6c21c, baseline=1.62.0-SNAPSHOT~8b1580f2ad

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.246 ms) : 0, 1246
crashtracking [candidate] (1.233 ms) : 0, 1233
BytebuddyAgent [baseline] (633.188 ms) : 0, 633188
BytebuddyAgent [candidate] (636.595 ms) : 0, 636595
AgentMeter [baseline] (29.417 ms) : 0, 29417
AgentMeter [candidate] (29.446 ms) : 0, 29446
GlobalTracer [baseline] (248.967 ms) : 0, 248967
GlobalTracer [candidate] (249.503 ms) : 0, 249503
AppSec [baseline] (32.439 ms) : 0, 32439
AppSec [candidate] (32.656 ms) : 0, 32656
Debugger [baseline] (59.997 ms) : 0, 59997
Debugger [candidate] (60.338 ms) : 0, 60338
Remote Config [baseline] (599.358 µs) : 0, 599
Remote Config [candidate] (598.227 µs) : 0, 598
Telemetry [baseline] (8.14 ms) : 0, 8140
Telemetry [candidate] (8.122 ms) : 0, 8122
Flare Poller [baseline] (9.214 ms) : 0, 9214
Flare Poller [candidate] (7.483 ms) : 0, 7483
section appsec
crashtracking [baseline] (1.244 ms) : 0, 1244
crashtracking [candidate] (1.23 ms) : 0, 1230
BytebuddyAgent [baseline] (665.792 ms) : 0, 665792
BytebuddyAgent [candidate] (660.111 ms) : 0, 660111
AgentMeter [baseline] (12.175 ms) : 0, 12175
AgentMeter [candidate] (11.984 ms) : 0, 11984
GlobalTracer [baseline] (250.932 ms) : 0, 250932
GlobalTracer [candidate] (248.053 ms) : 0, 248053
IAST [baseline] (24.588 ms) : 0, 24588
IAST [candidate] (24.501 ms) : 0, 24501
AppSec [baseline] (186.318 ms) : 0, 186318
AppSec [candidate] (184.831 ms) : 0, 184831
Debugger [baseline] (66.705 ms) : 0, 66705
Debugger [candidate] (65.929 ms) : 0, 65929
Remote Config [baseline] (604.621 µs) : 0, 605
Remote Config [candidate] (614.606 µs) : 0, 615
Telemetry [baseline] (8.486 ms) : 0, 8486
Telemetry [candidate] (8.445 ms) : 0, 8445
Flare Poller [baseline] (3.597 ms) : 0, 3597
Flare Poller [candidate] (3.559 ms) : 0, 3559
section iast
crashtracking [baseline] (1.249 ms) : 0, 1249
crashtracking [candidate] (1.239 ms) : 0, 1239
BytebuddyAgent [baseline] (801.806 ms) : 0, 801806
BytebuddyAgent [candidate] (800.531 ms) : 0, 800531
AgentMeter [baseline] (11.465 ms) : 0, 11465
AgentMeter [candidate] (11.469 ms) : 0, 11469
GlobalTracer [baseline] (238.936 ms) : 0, 238936
GlobalTracer [candidate] (239.751 ms) : 0, 239751
IAST [baseline] (25.782 ms) : 0, 25782
IAST [candidate] (25.71 ms) : 0, 25710
AppSec [baseline] (31.226 ms) : 0, 31226
AppSec [candidate] (29.745 ms) : 0, 29745
Debugger [baseline] (65.068 ms) : 0, 65068
Debugger [candidate] (66.877 ms) : 0, 66877
Remote Config [baseline] (539.809 µs) : 0, 540
Remote Config [candidate] (550.735 µs) : 0, 551
Telemetry [baseline] (9.271 ms) : 0, 9271
Telemetry [candidate] (9.398 ms) : 0, 9398
Flare Poller [baseline] (3.514 ms) : 0, 3514
Flare Poller [candidate] (3.549 ms) : 0, 3549
section profiling
crashtracking [baseline] (1.191 ms) : 0, 1191
crashtracking [candidate] (1.175 ms) : 0, 1175
BytebuddyAgent [baseline] (690.669 ms) : 0, 690669
BytebuddyAgent [candidate] (690.127 ms) : 0, 690127
AgentMeter [baseline] (9.072 ms) : 0, 9072
AgentMeter [candidate] (9.053 ms) : 0, 9053
GlobalTracer [baseline] (206.844 ms) : 0, 206844
GlobalTracer [candidate] (207.106 ms) : 0, 207106
AppSec [baseline] (32.855 ms) : 0, 32855
AppSec [candidate] (32.776 ms) : 0, 32776
Debugger [baseline] (65.639 ms) : 0, 65639
Debugger [candidate] (65.226 ms) : 0, 65226
Remote Config [baseline] (575.542 µs) : 0, 576
Remote Config [candidate] (575.465 µs) : 0, 575
Telemetry [baseline] (7.758 ms) : 0, 7758
Telemetry [candidate] (7.774 ms) : 0, 7774
Flare Poller [baseline] (3.593 ms) : 0, 3593
Flare Poller [candidate] (3.506 ms) : 0, 3506
ProfilingAgent [baseline] (94.267 ms) : 0, 94267
ProfilingAgent [candidate] (94.026 ms) : 0, 94026
Profiling [baseline] (94.834 ms) : 0, 94834
Profiling [candidate] (94.599 ms) : 0, 94599
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.62.0-SNAPSHOT~af45d6c21c, baseline=1.62.0-SNAPSHOT~8b1580f2ad

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.058 s) : 0, 1058000
Total [baseline] (8.856 s) : 0, 8856214
Agent [candidate] (1.063 s) : 0, 1063031
Total [candidate] (8.846 s) : 0, 8845657
section iast
Agent [baseline] (1.228 s) : 0, 1227978
Total [baseline] (9.577 s) : 0, 9577126
Agent [candidate] (1.22 s) : 0, 1220385
Total [candidate] (9.557 s) : 0, 9556623
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.058 s -
Agent iast 1.228 s 169.978 ms (16.1%)
Total tracing 8.856 s -
Total iast 9.577 s 720.912 ms (8.1%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.063 s -
Agent iast 1.22 s 157.353 ms (14.8%)
Total tracing 8.846 s -
Total iast 9.557 s 710.966 ms (8.0%)
gantt
    title insecure-bank - break down per module: candidate=1.62.0-SNAPSHOT~af45d6c21c, baseline=1.62.0-SNAPSHOT~8b1580f2ad

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.249 ms) : 0, 1249
crashtracking [candidate] (1.227 ms) : 0, 1227
BytebuddyAgent [baseline] (635.134 ms) : 0, 635134
BytebuddyAgent [candidate] (636.75 ms) : 0, 636750
AgentMeter [baseline] (29.54 ms) : 0, 29540
AgentMeter [candidate] (29.672 ms) : 0, 29672
GlobalTracer [baseline] (249.104 ms) : 0, 249104
GlobalTracer [candidate] (250.343 ms) : 0, 250343
AppSec [baseline] (32.385 ms) : 0, 32385
AppSec [candidate] (32.654 ms) : 0, 32654
Debugger [baseline] (59.182 ms) : 0, 59182
Debugger [candidate] (59.285 ms) : 0, 59285
Remote Config [baseline] (592.504 µs) : 0, 593
Remote Config [candidate] (584.407 µs) : 0, 584
Telemetry [baseline] (8.01 ms) : 0, 8010
Telemetry [candidate] (7.997 ms) : 0, 7997
Flare Poller [baseline] (6.564 ms) : 0, 6564
Flare Poller [candidate] (8.128 ms) : 0, 8128
section iast
crashtracking [baseline] (1.247 ms) : 0, 1247
crashtracking [candidate] (1.223 ms) : 0, 1223
BytebuddyAgent [baseline] (803.148 ms) : 0, 803148
BytebuddyAgent [candidate] (799.048 ms) : 0, 799048
AgentMeter [baseline] (11.661 ms) : 0, 11661
AgentMeter [candidate] (11.391 ms) : 0, 11391
GlobalTracer [baseline] (239.626 ms) : 0, 239626
GlobalTracer [candidate] (238.155 ms) : 0, 238155
IAST [baseline] (25.929 ms) : 0, 25929
IAST [candidate] (25.644 ms) : 0, 25644
AppSec [baseline] (31.491 ms) : 0, 31491
AppSec [candidate] (31.234 ms) : 0, 31234
Debugger [baseline] (65.047 ms) : 0, 65047
Debugger [candidate] (64.04 ms) : 0, 64040
Remote Config [baseline] (547.826 µs) : 0, 548
Remote Config [candidate] (549.591 µs) : 0, 550
Telemetry [baseline] (9.36 ms) : 0, 9360
Telemetry [candidate] (9.361 ms) : 0, 9361
Flare Poller [baseline] (3.594 ms) : 0, 3594
Flare Poller [candidate] (3.569 ms) : 0, 3569
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master bbujon/groovy-to-java-config
git_commit_date 1776382763 1776425143
git_commit_sha 8b1580f af45d6c
release_version 1.62.0-SNAPSHOT~8b1580f2ad 1.62.0-SNAPSHOT~af45d6c21c
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1776427481 1776427481
ci_job_id 1605127772 1605127772
ci_pipeline_id 108209153 108209153
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-1-dkcdpgy1 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 Linux runner-zfyrx7zua-project-304-concurrent-1-dkcdpgy1 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 2 performance improvements and 2 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 throughput candidate mean agg_http_req_duration_p50 candidate mean agg_http_req_duration_p95 candidate mean throughput baseline mean agg_http_req_duration_p50 baseline mean agg_http_req_duration_p95 baseline mean throughput
scenario:load:insecure-bank:profiling:high_load worse
[+45.982µs; +180.176µs] or [+2.762%; +10.823%]
unstable
[+95.287µs; +975.962µs] or [+2.034%; +20.834%]
unstable
[-423.925op/s; +53.613op/s] or [-19.160%; +2.423%]
1.778ms 5.220ms 2027.344op/s 1.665ms 4.685ms 2212.500op/s
scenario:load:insecure-bank:iast_GLOBAL:high_load better
[-356.020µs; -218.589µs] or [-11.464%; -7.038%]
better
[-875.367µs; -360.198µs] or [-10.173%; -4.186%]
unstable
[-28.342op/s; +224.092op/s] or [-2.397%; +18.950%]
2.818ms 7.987ms 1280.438op/s 3.106ms 8.605ms 1182.562op/s
scenario:load:petclinic:no_agent:high_load worse
[+0.469ms; +2.144ms] or [+2.598%; +11.883%]
same
[-488.918µs; +2448.977µs] or [-1.616%; +8.097%]
unstable
[-46.366op/s; +7.679op/s] or [-18.152%; +3.006%]
19.352ms 31.226ms 236.094op/s 18.045ms 30.246ms 255.438op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~af45d6c21c, baseline=1.62.0-SNAPSHOT~8b1580f2ad
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.239 ms) : 1227, 1251
.   : milestone, 1239,
iast (3.306 ms) : 3257, 3354
.   : milestone, 3306,
iast_FULL (5.869 ms) : 5810, 5928
.   : milestone, 5869,
iast_GLOBAL (3.883 ms) : 3828, 3937
.   : milestone, 3883,
profiling (2.04 ms) : 2022, 2057
.   : milestone, 2040,
tracing (1.854 ms) : 1838, 1869
.   : milestone, 1854,
section candidate
no_agent (1.246 ms) : 1233, 1258
.   : milestone, 1246,
iast (3.264 ms) : 3220, 3307
.   : milestone, 3264,
iast_FULL (5.901 ms) : 5841, 5960
.   : milestone, 5901,
iast_GLOBAL (3.581 ms) : 3522, 3640
.   : milestone, 3581,
profiling (2.234 ms) : 2212, 2256
.   : milestone, 2234,
tracing (1.898 ms) : 1882, 1915
.   : milestone, 1898,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.239 ms [1.227 ms, 1.251 ms] -
iast 3.306 ms [3.257 ms, 3.354 ms] 2.067 ms (166.9%)
iast_FULL 5.869 ms [5.81 ms, 5.928 ms] 4.631 ms (373.8%)
iast_GLOBAL 3.883 ms [3.828 ms, 3.937 ms] 2.644 ms (213.4%)
profiling 2.04 ms [2.022 ms, 2.057 ms] 801.086 µs (64.7%)
tracing 1.854 ms [1.838 ms, 1.869 ms] 614.929 µs (49.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.246 ms [1.233 ms, 1.258 ms] -
iast 3.264 ms [3.22 ms, 3.307 ms] 2.018 ms (162.0%)
iast_FULL 5.901 ms [5.841 ms, 5.96 ms] 4.655 ms (373.7%)
iast_GLOBAL 3.581 ms [3.522 ms, 3.64 ms] 2.336 ms (187.5%)
profiling 2.234 ms [2.212 ms, 2.256 ms] 988.454 µs (79.4%)
tracing 1.898 ms [1.882 ms, 1.915 ms] 652.799 µs (52.4%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~af45d6c21c, baseline=1.62.0-SNAPSHOT~8b1580f2ad
    dateFormat X
    axisFormat %s
section baseline
no_agent (18.268 ms) : 18077, 18459
.   : milestone, 18268,
appsec (18.756 ms) : 18565, 18946
.   : milestone, 18756,
code_origins (17.811 ms) : 17637, 17984
.   : milestone, 17811,
iast (18.705 ms) : 18516, 18894
.   : milestone, 18705,
profiling (18.004 ms) : 17827, 18182
.   : milestone, 18004,
tracing (17.453 ms) : 17282, 17623
.   : milestone, 17453,
section candidate
no_agent (19.771 ms) : 19575, 19966
.   : milestone, 19771,
appsec (18.773 ms) : 18585, 18961
.   : milestone, 18773,
code_origins (17.965 ms) : 17787, 18144
.   : milestone, 17965,
iast (18.221 ms) : 18038, 18404
.   : milestone, 18221,
profiling (18.101 ms) : 17920, 18282
.   : milestone, 18101,
tracing (17.881 ms) : 17704, 18058
.   : milestone, 17881,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.268 ms [18.077 ms, 18.459 ms] -
appsec 18.756 ms [18.565 ms, 18.946 ms] 488.21 µs (2.7%)
code_origins 17.811 ms [17.637 ms, 17.984 ms] -456.973 µs (-2.5%)
iast 18.705 ms [18.516 ms, 18.894 ms] 437.165 µs (2.4%)
profiling 18.004 ms [17.827 ms, 18.182 ms] -263.249 µs (-1.4%)
tracing 17.453 ms [17.282 ms, 17.623 ms] -815.079 µs (-4.5%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 19.771 ms [19.575 ms, 19.966 ms] -
appsec 18.773 ms [18.585 ms, 18.961 ms] -997.662 µs (-5.0%)
code_origins 17.965 ms [17.787 ms, 18.144 ms] -1.806 ms (-9.1%)
iast 18.221 ms [18.038 ms, 18.404 ms] -1.55 ms (-7.8%)
profiling 18.101 ms [17.92 ms, 18.282 ms] -1.67 ms (-8.4%)
tracing 17.881 ms [17.704 ms, 18.058 ms] -1.89 ms (-9.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master bbujon/groovy-to-java-config
git_commit_date 1776382763 1776425143
git_commit_sha 8b1580f af45d6c
release_version 1.62.0-SNAPSHOT~8b1580f2ad 1.62.0-SNAPSHOT~af45d6c21c
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1776427139 1776427139
ci_job_id 1605127775 1605127775
ci_pipeline_id 108209153 108209153
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-2-zfba1lrr 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 Linux runner-zfyrx7zua-project-304-concurrent-2-zfba1lrr 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 0 performance regressions! Performance is the same for 10 metrics, 1 unstable metrics.

scenario Δ mean execution_time candidate mean execution_time baseline mean execution_time
scenario:dacapo:tomcat:appsec better
[-1.495ms; -1.142ms] or [-38.507%; -29.425%]
2.563ms 3.881ms
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~af45d6c21c, baseline=1.62.0-SNAPSHOT~8b1580f2ad
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.493 ms) : 1482, 1505
.   : milestone, 1493,
appsec (3.881 ms) : 3656, 4106
.   : milestone, 3881,
iast (2.29 ms) : 2221, 2360
.   : milestone, 2290,
iast_GLOBAL (2.329 ms) : 2259, 2400
.   : milestone, 2329,
profiling (2.536 ms) : 2371, 2700
.   : milestone, 2536,
tracing (2.104 ms) : 2049, 2158
.   : milestone, 2104,
section candidate
no_agent (1.495 ms) : 1483, 1506
.   : milestone, 1495,
appsec (2.563 ms) : 2508, 2618
.   : milestone, 2563,
iast (2.285 ms) : 2216, 2354
.   : milestone, 2285,
iast_GLOBAL (2.332 ms) : 2262, 2402
.   : milestone, 2332,
profiling (2.504 ms) : 2348, 2659
.   : milestone, 2504,
tracing (2.108 ms) : 2053, 2162
.   : milestone, 2108,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.493 ms [1.482 ms, 1.505 ms] -
appsec 3.881 ms [3.656 ms, 4.106 ms] 2.388 ms (159.9%)
iast 2.29 ms [2.221 ms, 2.36 ms] 796.802 µs (53.4%)
iast_GLOBAL 2.329 ms [2.259 ms, 2.4 ms] 835.981 µs (56.0%)
profiling 2.536 ms [2.371 ms, 2.7 ms] 1.042 ms (69.8%)
tracing 2.104 ms [2.049 ms, 2.158 ms] 610.317 µs (40.9%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.495 ms [1.483 ms, 1.506 ms] -
appsec 2.563 ms [2.508 ms, 2.618 ms] 1.068 ms (71.5%)
iast 2.285 ms [2.216 ms, 2.354 ms] 790.156 µs (52.9%)
iast_GLOBAL 2.332 ms [2.262 ms, 2.402 ms] 836.794 µs (56.0%)
profiling 2.504 ms [2.348 ms, 2.659 ms] 1.009 ms (67.5%)
tracing 2.108 ms [2.053 ms, 2.162 ms] 612.882 µs (41.0%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~af45d6c21c, baseline=1.62.0-SNAPSHOT~8b1580f2ad
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.132 s) : 15132000, 15132000
.   : milestone, 15132000,
appsec (14.738 s) : 14738000, 14738000
.   : milestone, 14738000,
iast (18.429 s) : 18429000, 18429000
.   : milestone, 18429000,
iast_GLOBAL (18.129 s) : 18129000, 18129000
.   : milestone, 18129000,
profiling (15.338 s) : 15338000, 15338000
.   : milestone, 15338000,
tracing (14.75 s) : 14750000, 14750000
.   : milestone, 14750000,
section candidate
no_agent (14.826 s) : 14826000, 14826000
.   : milestone, 14826000,
appsec (14.891 s) : 14891000, 14891000
.   : milestone, 14891000,
iast (18.383 s) : 18383000, 18383000
.   : milestone, 18383000,
iast_GLOBAL (18.169 s) : 18169000, 18169000
.   : milestone, 18169000,
profiling (15.083 s) : 15083000, 15083000
.   : milestone, 15083000,
tracing (14.82 s) : 14820000, 14820000
.   : milestone, 14820000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.132 s [15.132 s, 15.132 s] -
appsec 14.738 s [14.738 s, 14.738 s] -394.0 ms (-2.6%)
iast 18.429 s [18.429 s, 18.429 s] 3.297 s (21.8%)
iast_GLOBAL 18.129 s [18.129 s, 18.129 s] 2.997 s (19.8%)
profiling 15.338 s [15.338 s, 15.338 s] 206.0 ms (1.4%)
tracing 14.75 s [14.75 s, 14.75 s] -382.0 ms (-2.5%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.826 s [14.826 s, 14.826 s] -
appsec 14.891 s [14.891 s, 14.891 s] 65.0 ms (0.4%)
iast 18.383 s [18.383 s, 18.383 s] 3.557 s (24.0%)
iast_GLOBAL 18.169 s [18.169 s, 18.169 s] 3.343 s (22.5%)
profiling 15.083 s [15.083 s, 15.083 s] 257.0 ms (1.7%)
tracing 14.82 s [14.82 s, 14.82 s] -6.0 ms (-0.0%)

Comment on lines +78 to +94
if (!configTransformerInstalled) {
installConfigTransformer();
configTransformerInstalled = true;
}
makeConfigInstanceModifiable();
assertFalse(configModificationFailed, "Config class modification failed");
if (isConfigInstanceModifiable) {
checkConfigTransformation();
}
if (originalSystemProperties == null) {
saveProperties();
}
// Apply class-level @WithConfig so config is available before @BeforeAll methods
applyClassLevelConfig(context);
if (isConfigInstanceModifiable) {
rebuildConfig();
}
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.

nit: I would put empty lines between logical blocks to make code a bit more readable.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good call. I added comment to explain the various blocks. That should be even more explicit than empty lines.

Comment on lines +168 to +176
private static void setSysProperty(String name, String value, boolean addPrefix) {
String prefixedName = name.startsWith("dd.") || !addPrefix ? name : "dd." + name;
System.setProperty(prefixedName, value);
}

private static void setEnvVariable(String name, String value, boolean addPrefix) {
String prefixedName = name.startsWith("DD_") || !addPrefix ? name : "DD_" + name;
environmentVariables.set(prefixedName, value);
}
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.

nit: why to add negation to !addPrefix ? just swap args between ? and :

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.

Actually wouldn't it be easier to read this way ?

addPrefix && !name.startsWith("DD_") ? "DD_" + name : name;

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed. That’s way more readable.

why to add negation

Claude generated it in the first place. The behavior was consistent so I did not changed it. Thanks for raising it though, appreciated 🙏

Copy link
Copy Markdown
Contributor

@AlexeyKuznetsov-DD AlexeyKuznetsov-DD left a comment

Choose a reason for hiding this comment

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

LGTM, left very minor nit comments about code style.

Comment on lines +168 to +176
private static void setSysProperty(String name, String value, boolean addPrefix) {
String prefixedName = name.startsWith("dd.") || !addPrefix ? name : "dd." + name;
System.setProperty(prefixedName, value);
}

private static void setEnvVariable(String name, String value, boolean addPrefix) {
String prefixedName = name.startsWith("DD_") || !addPrefix ? name : "DD_" + name;
environmentVariables.set(prefixedName, value);
}
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.

Actually wouldn't it be easier to read this way ?

addPrefix && !name.startsWith("DD_") ? "DD_" + name : name;

@PerfectSlayer PerfectSlayer force-pushed the bbujon/groovy-to-java-config branch from 8d727de to cd97498 Compare April 17, 2026 07:27
@PerfectSlayer
Copy link
Copy Markdown
Contributor Author

LGTM, left very minor nit comments about code style.

Thanks for the review. I don’t really like the code style either... The overall intention is here, it follows my idea and design, but I don’t really found the generated code easy to follow. I guess it should be even worse to review when it’s not your design 😞 I don’t know how we can force Claude code toward more readable code without being too verbose or hurting performance.

…tension

Move DD_* environment variable and dd.* system property validation logic from DDJavaSpecification into a reusable CleanConfigStateExtension. Improves error reporting with detailed leak information.
@PerfectSlayer PerfectSlayer force-pushed the bbujon/groovy-to-java-config branch from cd97498 to af45d6c Compare April 17, 2026 11:26
@PerfectSlayer
Copy link
Copy Markdown
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351
Copy link
Copy Markdown

gh-worker-devflow-routing-ef8351 Bot commented Apr 17, 2026

View all feedbacks in Devflow UI.

2026-04-17 12:18:54 UTC ℹ️ Start processing command /merge


2026-04-17 12:18:58 UTC ℹ️ MergeQueue: pull request added to the queue

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


2026-04-17 13:31:18 UTC ℹ️ MergeQueue: This merge request was merged

@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d Bot merged commit c13e821 into master Apr 17, 2026
569 checks passed
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d Bot deleted the bbujon/groovy-to-java-config branch April 17, 2026 13:31
@github-actions github-actions Bot added this to the 1.62.0 milestone Apr 17, 2026
Copy link
Copy Markdown

@basalam1 basalam1 left a comment

Choose a reason for hiding this comment

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

i think is a major step....my the PCT..and I I'm so glad with the improvement.
let there be pi and pi apportunities...

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 type: enhancement Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants