Skip to content

Conversation

@nikita-tkachenko-datadog
Copy link
Contributor

@nikita-tkachenko-datadog nikita-tkachenko-datadog commented Oct 8, 2025

What Does This Do

Adds a new config source that reads from Test Optimization remote environment.
The tracer will only use the new config source when explicitly configured to do so.

Motivation

For Test Optimization runs with Bazel we cannot read environment variables as usual, because Bazel runs tests in a sandbox where environment variables from the "outside" are not available by default.
Any environment variable exposed to the tests messes with Bazel's cache, as all env vars are considered as test tasks input, so if any of them changes, the previously cached outcome of the task cannot be used anymore.
Some environment vars read by the tracer (such as git commit SHA or CI job ID) change constantly making Bazel cache virtually unusable.
The temporary solution for now is to use a service that the tracer can query over HTTP to get the environment variables, which allows to circumvent Bazel's isolation without breaking caching.

Additional Notes

The solution described above is already being used for the env vars that the tracer reads from the CI provider.
This PR extends it to also be used for the env vars that control config values.

Contributor Checklist

Jira ticket: LANGTOOLS-3400

@nikita-tkachenko-datadog nikita-tkachenko-datadog added type: enhancement Enhancements and improvements comp: ci visibility Continuous Integration Visibility labels Oct 8, 2025
@datadog-datadog-prod-us1
Copy link
Contributor

datadog-datadog-prod-us1 bot commented Oct 8, 2025

🎯 Code Coverage
Patch Coverage: 5.81%
Total Coverage: 59.76% (-0.07%)

View detailed report

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 76dead1 | Docs | Was this helpful? Give us feedback!

@pr-commenter
Copy link

pr-commenter bot commented Oct 8, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master nikita-tkachenko/ci-environment-service
git_commit_date 1760694165 1760695745
git_commit_sha 664b9a4 76dead1
release_version 1.55.0-SNAPSHOT~664b9a412c 1.55.0-SNAPSHOT~76dead19bf
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1760697864 1760697864
ci_job_id 1184613804 1184613804
ci_pipeline_id 79606665 79606665
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-1glnl08k 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-1glnl08k 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 60 metrics, 5 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.55.0-SNAPSHOT~76dead19bf, baseline=1.55.0-SNAPSHOT~664b9a412c

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.016 s) : 0, 1016350
Total [baseline] (10.732 s) : 0, 10731857
Agent [candidate] (1.016 s) : 0, 1015644
Total [candidate] (10.706 s) : 0, 10706268
section appsec
Agent [baseline] (1.198 s) : 0, 1197892
Total [baseline] (10.772 s) : 0, 10771980
Agent [candidate] (1.193 s) : 0, 1192656
Total [candidate] (11.104 s) : 0, 11103928
section iast
Agent [baseline] (1.153 s) : 0, 1153224
Total [baseline] (11.082 s) : 0, 11081515
Agent [candidate] (1.149 s) : 0, 1148763
Total [candidate] (11.081 s) : 0, 11081032
section profiling
Agent [baseline] (1.171 s) : 0, 1171411
Total [baseline] (10.88 s) : 0, 10879744
Agent [candidate] (1.164 s) : 0, 1163945
Total [candidate] (11.008 s) : 0, 11007620
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.016 s -
Agent appsec 1.198 s 181.542 ms (17.9%)
Agent iast 1.153 s 136.874 ms (13.5%)
Agent profiling 1.171 s 155.061 ms (15.3%)
Total tracing 10.732 s -
Total appsec 10.772 s 40.123 ms (0.4%)
Total iast 11.082 s 349.658 ms (3.3%)
Total profiling 10.88 s 147.887 ms (1.4%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.016 s -
Agent appsec 1.193 s 177.012 ms (17.4%)
Agent iast 1.149 s 133.12 ms (13.1%)
Agent profiling 1.164 s 148.301 ms (14.6%)
Total tracing 10.706 s -
Total appsec 11.104 s 397.66 ms (3.7%)
Total iast 11.081 s 374.764 ms (3.5%)
Total profiling 11.008 s 301.352 ms (2.8%)
gantt
    title petclinic - break down per module: candidate=1.55.0-SNAPSHOT~76dead19bf, baseline=1.55.0-SNAPSHOT~664b9a412c

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.465 ms) : 0, 1465
crashtracking [candidate] (1.451 ms) : 0, 1451
BytebuddyAgent [baseline] (691.878 ms) : 0, 691878
BytebuddyAgent [candidate] (693.261 ms) : 0, 693261
GlobalTracer [baseline] (242.43 ms) : 0, 242430
GlobalTracer [candidate] (241.711 ms) : 0, 241711
AppSec [baseline] (32.662 ms) : 0, 32662
AppSec [candidate] (32.305 ms) : 0, 32305
Debugger [baseline] (6.404 ms) : 0, 6404
Debugger [candidate] (6.304 ms) : 0, 6304
Remote Config [baseline] (676.454 µs) : 0, 676
Remote Config [candidate] (679.439 µs) : 0, 679
Telemetry [baseline] (9.416 ms) : 0, 9416
Telemetry [candidate] (9.301 ms) : 0, 9301
Flare Poller [baseline] (10.307 ms) : 0, 10307
Flare Poller [candidate] (9.641 ms) : 0, 9641
section appsec
crashtracking [baseline] (1.461 ms) : 0, 1461
crashtracking [candidate] (1.465 ms) : 0, 1465
BytebuddyAgent [baseline] (719.348 ms) : 0, 719348
BytebuddyAgent [candidate] (717.337 ms) : 0, 717337
GlobalTracer [baseline] (236.674 ms) : 0, 236674
GlobalTracer [candidate] (233.973 ms) : 0, 233973
AppSec [baseline] (175.0 ms) : 0, 175000
AppSec [candidate] (174.874 ms) : 0, 174874
Debugger [baseline] (6.072 ms) : 0, 6072
Debugger [candidate] (6.08 ms) : 0, 6080
Remote Config [baseline] (623.59 µs) : 0, 624
Remote Config [candidate] (639.915 µs) : 0, 640
Telemetry [baseline] (8.462 ms) : 0, 8462
Telemetry [candidate] (8.458 ms) : 0, 8458
Flare Poller [baseline] (3.867 ms) : 0, 3867
Flare Poller [candidate] (3.88 ms) : 0, 3880
IAST [baseline] (25.226 ms) : 0, 25226
IAST [candidate] (24.834 ms) : 0, 24834
section iast
crashtracking [baseline] (1.468 ms) : 0, 1468
crashtracking [candidate] (1.461 ms) : 0, 1461
BytebuddyAgent [baseline] (816.329 ms) : 0, 816329
BytebuddyAgent [candidate] (813.492 ms) : 0, 813492
GlobalTracer [baseline] (232.543 ms) : 0, 232543
GlobalTracer [candidate] (230.465 ms) : 0, 230465
AppSec [baseline] (35.032 ms) : 0, 35032
AppSec [candidate] (35.399 ms) : 0, 35399
Debugger [baseline] (6.186 ms) : 0, 6186
Debugger [candidate] (6.196 ms) : 0, 6196
Remote Config [baseline] (599.175 µs) : 0, 599
Remote Config [candidate] (598.847 µs) : 0, 599
Telemetry [baseline] (8.677 ms) : 0, 8677
Telemetry [candidate] (8.779 ms) : 0, 8779
Flare Poller [baseline] (4.224 ms) : 0, 4224
Flare Poller [candidate] (4.322 ms) : 0, 4322
IAST [baseline] (26.637 ms) : 0, 26637
IAST [candidate] (26.664 ms) : 0, 26664
section profiling
ProfilingAgent [baseline] (109.313 ms) : 0, 109313
ProfilingAgent [candidate] (109.053 ms) : 0, 109053
crashtracking [baseline] (1.447 ms) : 0, 1447
crashtracking [candidate] (1.463 ms) : 0, 1463
BytebuddyAgent [baseline] (726.117 ms) : 0, 726117
BytebuddyAgent [candidate] (721.727 ms) : 0, 721727
GlobalTracer [baseline] (220.537 ms) : 0, 220537
GlobalTracer [candidate] (217.963 ms) : 0, 217963
AppSec [baseline] (32.663 ms) : 0, 32663
AppSec [candidate] (32.455 ms) : 0, 32455
Debugger [baseline] (7.546 ms) : 0, 7546
Debugger [candidate] (6.597 ms) : 0, 6597
Remote Config [baseline] (743.809 µs) : 0, 744
Remote Config [candidate] (828.349 µs) : 0, 828
Telemetry [baseline] (15.254 ms) : 0, 15254
Telemetry [candidate] (15.856 ms) : 0, 15856
Flare Poller [baseline] (4.156 ms) : 0, 4156
Flare Poller [candidate] (4.138 ms) : 0, 4138
Profiling [baseline] (110.479 ms) : 0, 110479
Profiling [candidate] (109.641 ms) : 0, 109641
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.55.0-SNAPSHOT~76dead19bf, baseline=1.55.0-SNAPSHOT~664b9a412c

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.016 s) : 0, 1015518
Total [baseline] (8.66 s) : 0, 8660101
Agent [candidate] (1.026 s) : 0, 1025802
Total [candidate] (8.711 s) : 0, 8711352
section iast
Agent [baseline] (1.153 s) : 0, 1153026
Total [baseline] (9.28 s) : 0, 9279725
Agent [candidate] (1.149 s) : 0, 1149340
Total [candidate] (9.267 s) : 0, 9267301
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.016 s -
Agent iast 1.153 s 137.508 ms (13.5%)
Total tracing 8.66 s -
Total iast 9.28 s 619.624 ms (7.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.026 s -
Agent iast 1.149 s 123.538 ms (12.0%)
Total tracing 8.711 s -
Total iast 9.267 s 555.949 ms (6.4%)
gantt
    title insecure-bank - break down per module: candidate=1.55.0-SNAPSHOT~76dead19bf, baseline=1.55.0-SNAPSHOT~664b9a412c

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.487 ms) : 0, 1487
crashtracking [candidate] (1.48 ms) : 0, 1480
BytebuddyAgent [baseline] (692.317 ms) : 0, 692317
BytebuddyAgent [candidate] (698.647 ms) : 0, 698647
GlobalTracer [baseline] (242.233 ms) : 0, 242233
GlobalTracer [candidate] (243.857 ms) : 0, 243857
AppSec [baseline] (32.562 ms) : 0, 32562
AppSec [candidate] (32.914 ms) : 0, 32914
Debugger [baseline] (6.385 ms) : 0, 6385
Debugger [candidate] (6.459 ms) : 0, 6459
Remote Config [baseline] (676.431 µs) : 0, 676
Remote Config [candidate] (688.806 µs) : 0, 689
Telemetry [baseline] (9.45 ms) : 0, 9450
Telemetry [candidate] (9.548 ms) : 0, 9548
Flare Poller [baseline] (9.287 ms) : 0, 9287
Flare Poller [candidate] (10.983 ms) : 0, 10983
section iast
crashtracking [baseline] (1.487 ms) : 0, 1487
crashtracking [candidate] (1.484 ms) : 0, 1484
BytebuddyAgent [baseline] (816.118 ms) : 0, 816118
BytebuddyAgent [candidate] (814.4 ms) : 0, 814400
GlobalTracer [baseline] (232.412 ms) : 0, 232412
GlobalTracer [candidate] (230.759 ms) : 0, 230759
IAST [baseline] (26.65 ms) : 0, 26650
IAST [candidate] (26.633 ms) : 0, 26633
AppSec [baseline] (35.163 ms) : 0, 35163
AppSec [candidate] (35.009 ms) : 0, 35009
Debugger [baseline] (6.158 ms) : 0, 6158
Debugger [candidate] (6.148 ms) : 0, 6148
Remote Config [baseline] (601.492 µs) : 0, 601
Remote Config [candidate] (600.625 µs) : 0, 601
Telemetry [baseline] (8.704 ms) : 0, 8704
Telemetry [candidate] (8.708 ms) : 0, 8708
Flare Poller [baseline] (4.269 ms) : 0, 4269
Flare Poller [candidate] (4.218 ms) : 0, 4218
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master nikita-tkachenko/ci-environment-service
git_commit_date 1760694165 1760695745
git_commit_sha 664b9a4 76dead1
release_version 1.55.0-SNAPSHOT~664b9a412c 1.55.0-SNAPSHOT~76dead19bf
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1760697534 1760697534
ci_job_id 1184613805 1184613805
ci_pipeline_id 79606665 79606665
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-zhy2rb4z 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-zhy2rb4z 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 3 performance improvements and 4 performance regressions! Performance is the same for 5 metrics, 12 unstable metrics.

scenario Δ mean http_req_duration Δ mean throughput candidate mean http_req_duration candidate mean throughput baseline mean http_req_duration baseline mean throughput
scenario:load:insecure-bank:no_agent:high_load worse
[+121.667µs; +233.483µs] or [+2.799%; +5.371%]
unstable
[-159.380op/s; +78.005op/s] or [-15.097%; +7.389%]
4.525ms 1015.031op/s 4.347ms 1055.719op/s
scenario:load:insecure-bank:tracing:high_load better
[-609.426µs; -337.482µs] or [-7.356%; -4.073%]
unstable
[-40.598op/s; +107.536op/s] or [-7.255%; +19.217%]
7.812ms 593.062op/s 8.285ms 559.594op/s
scenario:load:insecure-bank:iast:high_load worse
[+662.697µs; +1007.821µs] or [+7.252%; +11.028%]
unstable
[-102.709op/s; +18.334op/s] or [-20.221%; +3.609%]
9.974ms 465.750op/s 9.138ms 507.938op/s
scenario:load:insecure-bank:iast_GLOBAL:high_load worse
[+486.909µs; +936.876µs] or [+4.493%; +8.644%]
unstable
[-76.171op/s; +23.296op/s] or [-17.748%; +5.428%]
11.550ms 402.750op/s 10.838ms 429.188op/s
scenario:load:insecure-bank:profiling:high_load better
[-802.349µs; -505.341µs] or [-8.904%; -5.608%]
unstable
[-28.167op/s; +107.855op/s] or [-5.469%; +20.940%]
8.357ms 554.906op/s 9.011ms 515.062op/s
scenario:load:petclinic:code_origins:high_load worse
[+2.314ms; +3.129ms] or [+5.363%; +7.252%]
unstable
[-14.369op/s; +1.344op/s] or [-13.237%; +1.238%]
45.870ms 102.037op/s 43.148ms 108.550op/s
scenario:load:petclinic:no_agent:high_load better
[-1.709ms; -1.084ms] or [-4.582%; -2.907%]
unstable
[-4.527op/s; +14.277op/s] or [-3.610%; +11.386%]
35.899ms 130.262op/s 37.296ms 125.388op/s
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~76dead19bf, baseline=1.55.0-SNAPSHOT~664b9a412c
    dateFormat X
    axisFormat %s
section baseline
no_agent (37.296 ms) : 36994, 37598
.   : milestone, 37296,
appsec (49.156 ms) : 48717, 49595
.   : milestone, 49156,
code_origins (43.148 ms) : 42774, 43522
.   : milestone, 43148,
iast (44.263 ms) : 43861, 44664
.   : milestone, 44263,
profiling (49.78 ms) : 49306, 50254
.   : milestone, 49780,
tracing (43.771 ms) : 43400, 44143
.   : milestone, 43771,
section candidate
no_agent (35.899 ms) : 35621, 36177
.   : milestone, 35899,
appsec (48.414 ms) : 47998, 48830
.   : milestone, 48414,
code_origins (45.87 ms) : 45486, 46253
.   : milestone, 45870,
iast (44.204 ms) : 43821, 44586
.   : milestone, 44204,
profiling (49.068 ms) : 48610, 49525
.   : milestone, 49068,
tracing (43.755 ms) : 43389, 44121
.   : milestone, 43755,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.296 ms [36.994 ms, 37.598 ms] -
appsec 49.156 ms [48.717 ms, 49.595 ms] 11.86 ms (31.8%)
code_origins 43.148 ms [42.774 ms, 43.522 ms] 5.852 ms (15.7%)
iast 44.263 ms [43.861 ms, 44.664 ms] 6.967 ms (18.7%)
profiling 49.78 ms [49.306 ms, 50.254 ms] 12.484 ms (33.5%)
tracing 43.771 ms [43.4 ms, 44.143 ms] 6.476 ms (17.4%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 35.899 ms [35.621 ms, 36.177 ms] -
appsec 48.414 ms [47.998 ms, 48.83 ms] 12.515 ms (34.9%)
code_origins 45.87 ms [45.486 ms, 46.253 ms] 9.97 ms (27.8%)
iast 44.204 ms [43.821 ms, 44.586 ms] 8.304 ms (23.1%)
profiling 49.068 ms [48.61 ms, 49.525 ms] 13.168 ms (36.7%)
tracing 43.755 ms [43.389 ms, 44.121 ms] 7.856 ms (21.9%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~76dead19bf, baseline=1.55.0-SNAPSHOT~664b9a412c
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.347 ms) : 4293, 4401
.   : milestone, 4347,
iast (9.138 ms) : 8989, 9287
.   : milestone, 9138,
iast_FULL (14.214 ms) : 13934, 14495
.   : milestone, 14214,
iast_GLOBAL (10.838 ms) : 10630, 11046
.   : milestone, 10838,
profiling (9.011 ms) : 8871, 9150
.   : milestone, 9011,
tracing (8.285 ms) : 8159, 8411
.   : milestone, 8285,
section candidate
no_agent (4.525 ms) : 4475, 4575
.   : milestone, 4525,
iast (9.974 ms) : 9803, 10145
.   : milestone, 9974,
iast_FULL (14.36 ms) : 14073, 14648
.   : milestone, 14360,
iast_GLOBAL (11.55 ms) : 11340, 11760
.   : milestone, 11550,
profiling (8.357 ms) : 8220, 8493
.   : milestone, 8357,
tracing (7.812 ms) : 7685, 7938
.   : milestone, 7812,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.347 ms [4.293 ms, 4.401 ms] -
iast 9.138 ms [8.989 ms, 9.287 ms] 4.791 ms (110.2%)
iast_FULL 14.214 ms [13.934 ms, 14.495 ms] 9.867 ms (227.0%)
iast_GLOBAL 10.838 ms [10.63 ms, 11.046 ms] 6.491 ms (149.3%)
profiling 9.011 ms [8.871 ms, 9.15 ms] 4.663 ms (107.3%)
tracing 8.285 ms [8.159 ms, 8.411 ms] 3.938 ms (90.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.525 ms [4.475 ms, 4.575 ms] -
iast 9.974 ms [9.803 ms, 10.145 ms] 5.449 ms (120.4%)
iast_FULL 14.36 ms [14.073 ms, 14.648 ms] 9.835 ms (217.4%)
iast_GLOBAL 11.55 ms [11.34 ms, 11.76 ms] 7.025 ms (155.3%)
profiling 8.357 ms [8.22 ms, 8.493 ms] 3.832 ms (84.7%)
tracing 7.812 ms [7.685 ms, 7.938 ms] 3.287 ms (72.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master nikita-tkachenko/ci-environment-service
git_commit_date 1760694165 1760695745
git_commit_sha 664b9a4 76dead1
release_version 1.55.0-SNAPSHOT~664b9a412c 1.55.0-SNAPSHOT~76dead19bf
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1760698108 1760698108
ci_job_id 1184613806 1184613806
ci_pipeline_id 79606665 79606665
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-xrwnfzn1 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-xrwnfzn1 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 11 metrics, 1 unstable metrics.

Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~76dead19bf, baseline=1.55.0-SNAPSHOT~664b9a412c
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.318 s) : 15318000, 15318000
.   : milestone, 15318000,
appsec (14.95 s) : 14950000, 14950000
.   : milestone, 14950000,
iast (18.639 s) : 18639000, 18639000
.   : milestone, 18639000,
iast_GLOBAL (17.718 s) : 17718000, 17718000
.   : milestone, 17718000,
profiling (15.528 s) : 15528000, 15528000
.   : milestone, 15528000,
tracing (15.16 s) : 15160000, 15160000
.   : milestone, 15160000,
section candidate
no_agent (15.57 s) : 15570000, 15570000
.   : milestone, 15570000,
appsec (14.805 s) : 14805000, 14805000
.   : milestone, 14805000,
iast (18.393 s) : 18393000, 18393000
.   : milestone, 18393000,
iast_GLOBAL (18.071 s) : 18071000, 18071000
.   : milestone, 18071000,
profiling (15.563 s) : 15563000, 15563000
.   : milestone, 15563000,
tracing (15.278 s) : 15278000, 15278000
.   : milestone, 15278000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.318 s [15.318 s, 15.318 s] -
appsec 14.95 s [14.95 s, 14.95 s] -368.0 ms (-2.4%)
iast 18.639 s [18.639 s, 18.639 s] 3.321 s (21.7%)
iast_GLOBAL 17.718 s [17.718 s, 17.718 s] 2.4 s (15.7%)
profiling 15.528 s [15.528 s, 15.528 s] 210.0 ms (1.4%)
tracing 15.16 s [15.16 s, 15.16 s] -158.0 ms (-1.0%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.57 s [15.57 s, 15.57 s] -
appsec 14.805 s [14.805 s, 14.805 s] -765.0 ms (-4.9%)
iast 18.393 s [18.393 s, 18.393 s] 2.823 s (18.1%)
iast_GLOBAL 18.071 s [18.071 s, 18.071 s] 2.501 s (16.1%)
profiling 15.563 s [15.563 s, 15.563 s] -7.0 ms (-0.0%)
tracing 15.278 s [15.278 s, 15.278 s] -292.0 ms (-1.9%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~76dead19bf, baseline=1.55.0-SNAPSHOT~664b9a412c
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.48 ms) : 1469, 1492
.   : milestone, 1480,
appsec (3.7 ms) : 3484, 3915
.   : milestone, 3700,
iast (2.202 ms) : 2139, 2265
.   : milestone, 2202,
iast_GLOBAL (2.252 ms) : 2189, 2316
.   : milestone, 2252,
profiling (2.06 ms) : 2008, 2113
.   : milestone, 2060,
tracing (2.042 ms) : 1992, 2092
.   : milestone, 2042,
section candidate
no_agent (1.477 ms) : 1465, 1488
.   : milestone, 1477,
appsec (3.727 ms) : 3507, 3947
.   : milestone, 3727,
iast (2.209 ms) : 2145, 2272
.   : milestone, 2209,
iast_GLOBAL (2.253 ms) : 2189, 2317
.   : milestone, 2253,
profiling (2.08 ms) : 2027, 2133
.   : milestone, 2080,
tracing (2.043 ms) : 1992, 2093
.   : milestone, 2043,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.48 ms [1.469 ms, 1.492 ms] -
appsec 3.7 ms [3.484 ms, 3.915 ms] 2.22 ms (150.0%)
iast 2.202 ms [2.139 ms, 2.265 ms] 721.831 µs (48.8%)
iast_GLOBAL 2.252 ms [2.189 ms, 2.316 ms] 772.234 µs (52.2%)
profiling 2.06 ms [2.008 ms, 2.113 ms] 580.385 µs (39.2%)
tracing 2.042 ms [1.992 ms, 2.092 ms] 561.582 µs (37.9%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.477 ms [1.465 ms, 1.488 ms] -
appsec 3.727 ms [3.507 ms, 3.947 ms] 2.25 ms (152.3%)
iast 2.209 ms [2.145 ms, 2.272 ms] 731.816 µs (49.5%)
iast_GLOBAL 2.253 ms [2.189 ms, 2.317 ms] 776.172 µs (52.6%)
profiling 2.08 ms [2.027 ms, 2.133 ms] 603.112 µs (40.8%)
tracing 2.043 ms [1.992 ms, 2.093 ms] 565.822 µs (38.3%)

@nikita-tkachenko-datadog nikita-tkachenko-datadog marked this pull request as ready for review October 9, 2025 21:09
@nikita-tkachenko-datadog nikita-tkachenko-datadog requested review from Mariovido and PerfectSlayer and removed request for a team October 9, 2025 21:10
@Mariovido Mariovido removed their request for review October 13, 2025 09:59
Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

💭 thought: ‏I have few concerns about this change.
First, it introduce both product -- CI Visibility -- and feature -- Config -- into a platform component. It also introduces a dependency to a logger.
I would very like to keep the platform component as light and "single-concerned" as possible.

🎯 suggestion: ‏As an alternative, what about implementing an EnvironmentVariablesProvider with your logic, and apply is as source for the EnvironmentVariable?
If it works, that would leave both :environment and :config-utils untouched.

because Bazel runs tests in a sandbox where environment variables from the "outside" are not available by default.

❔ question: ‏ Just to be sure I get it right, it concerns cases where the dd-java-agent runs with the bazel tools when users runs their tests, right?

@nikita-tkachenko-datadog nikita-tkachenko-datadog force-pushed the nikita-tkachenko/ci-environment-service branch from 6c45053 to 434fc92 Compare October 15, 2025 15:46
@nikita-tkachenko-datadog nikita-tkachenko-datadog force-pushed the nikita-tkachenko/ci-environment-service branch from e902d3a to 75e4253 Compare October 15, 2025 16:07
Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

Left minor comments.
Thanks for the follow changes! 🙏

Comment on lines 57 to 59
private static String toEnvVar(String string) {
return string.replace('.', '_').replace('-', '_').toUpperCase();
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🎯 suggestion: ‏You can use ConfigStrings.toEnvVar() instead

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good catch, thanks! I had to duplicate the method initially since the class lived in a different module which didn't have the access to ConfigStrings. Fixed now


@Nullable
public static Map<String, String> getAll() {
return REMOTE_ENVIRONMENT != null ? Collections.unmodifiableMap(REMOTE_ENVIRONMENT) : null;
Copy link
Contributor

Choose a reason for hiding this comment

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

🎯 suggestion: ‏What about returning an empty collection rather than null? Is there a semantic difference?
I'm asking because the propertiesSource is checking for empty collection too before creating a PropertiesConfigSource.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

From my perspective there is a semantic difference, as an empty collection could mean we made the call to the remote service and received a successful empty response, while a null means we didn't/couldn't make the request. While in this particular case there isn't much difference, I'd prefer to leave it as it is to be able to know the difference

@nikita-tkachenko-datadog nikita-tkachenko-datadog merged commit ac15781 into master Oct 17, 2025
533 checks passed
@nikita-tkachenko-datadog nikita-tkachenko-datadog deleted the nikita-tkachenko/ci-environment-service branch October 17, 2025 11:48
@github-actions github-actions bot added this to the 1.55.0 milestone Oct 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: ci visibility Continuous Integration Visibility type: enhancement Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants