-
Notifications
You must be signed in to change notification settings - Fork 303
Implement tests reordering for JUnit 4 #8650
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement tests reordering for JUnit 4 #8650
Conversation
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 66 metrics, 5 unstable metrics. Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.48.0-SNAPSHOT~df417bd2cd, baseline=1.48.0-SNAPSHOT~8adba3f8b4
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.055 s) : 0, 1055409
Total [baseline] (8.686 s) : 0, 8686446
Agent [candidate] (1.066 s) : 0, 1065865
Total [candidate] (8.712 s) : 0, 8712375
section iast
Agent [baseline] (1.179 s) : 0, 1178571
Total [baseline] (9.241 s) : 0, 9241198
Agent [candidate] (1.19 s) : 0, 1190364
Total [candidate] (9.296 s) : 0, 9296486
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.182 s) : 0, 1181755
Total [baseline] (9.244 s) : 0, 9244199
Agent [candidate] (1.181 s) : 0, 1181182
Total [candidate] (9.214 s) : 0, 9213875
section iast_TELEMETRY_OFF
Agent [baseline] (1.184 s) : 0, 1184301
Total [baseline] (9.284 s) : 0, 9284035
Agent [candidate] (1.176 s) : 0, 1175914
Total [candidate] (9.247 s) : 0, 9246843
gantt
title insecure-bank - break down per module: candidate=1.48.0-SNAPSHOT~df417bd2cd, baseline=1.48.0-SNAPSHOT~8adba3f8b4
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (720.14 ms) : 0, 720140
BytebuddyAgent [candidate] (729.919 ms) : 0, 729919
GlobalTracer [baseline] (239.724 ms) : 0, 239724
GlobalTracer [candidate] (242.427 ms) : 0, 242427
AppSec [baseline] (54.552 ms) : 0, 54552
AppSec [candidate] (56.702 ms) : 0, 56702
Debugger [baseline] (4.409 ms) : 0, 4409
Debugger [candidate] (4.472 ms) : 0, 4472
Remote Config [baseline] (692.452 µs) : 0, 692
Remote Config [candidate] (705.499 µs) : 0, 705
Telemetry [baseline] (15.29 ms) : 0, 15290
Telemetry [candidate] (10.861 ms) : 0, 10861
section iast
BytebuddyAgent [baseline] (837.549 ms) : 0, 837549
BytebuddyAgent [candidate] (846.651 ms) : 0, 846651
GlobalTracer [baseline] (228.919 ms) : 0, 228919
GlobalTracer [candidate] (230.522 ms) : 0, 230522
IAST [baseline] (22.635 ms) : 0, 22635
IAST [candidate] (23.655 ms) : 0, 23655
AppSec [baseline] (55.539 ms) : 0, 55539
AppSec [candidate] (55.306 ms) : 0, 55306
Debugger [baseline] (4.146 ms) : 0, 4146
Debugger [candidate] (4.208 ms) : 0, 4208
Remote Config [baseline] (625.529 µs) : 0, 626
Remote Config [candidate] (598.473 µs) : 0, 598
Telemetry [baseline] (8.705 ms) : 0, 8705
Telemetry [candidate] (8.841 ms) : 0, 8841
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (839.211 ms) : 0, 839211
BytebuddyAgent [candidate] (838.565 ms) : 0, 838565
GlobalTracer [baseline] (229.824 ms) : 0, 229824
GlobalTracer [candidate] (229.418 ms) : 0, 229418
IAST [baseline] (22.933 ms) : 0, 22933
IAST [candidate] (22.808 ms) : 0, 22808
AppSec [baseline] (55.842 ms) : 0, 55842
AppSec [candidate] (56.438 ms) : 0, 56438
Debugger [baseline] (4.129 ms) : 0, 4129
Debugger [candidate] (4.149 ms) : 0, 4149
Remote Config [baseline] (611.51 µs) : 0, 612
Remote Config [candidate] (610.329 µs) : 0, 610
Telemetry [baseline] (8.74 ms) : 0, 8740
Telemetry [candidate] (8.769 ms) : 0, 8769
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (840.643 ms) : 0, 840643
BytebuddyAgent [candidate] (835.644 ms) : 0, 835644
GlobalTracer [baseline] (230.77 ms) : 0, 230770
GlobalTracer [candidate] (228.598 ms) : 0, 228598
IAST [baseline] (22.635 ms) : 0, 22635
IAST [candidate] (22.125 ms) : 0, 22125
AppSec [baseline] (56.255 ms) : 0, 56255
AppSec [candidate] (55.898 ms) : 0, 55898
Debugger [baseline] (4.216 ms) : 0, 4216
Debugger [candidate] (4.11 ms) : 0, 4110
Remote Config [baseline] (607.918 µs) : 0, 608
Remote Config [candidate] (596.603 µs) : 0, 597
Telemetry [baseline] (8.652 ms) : 0, 8652
Telemetry [candidate] (8.55 ms) : 0, 8550
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.48.0-SNAPSHOT~df417bd2cd, baseline=1.48.0-SNAPSHOT~8adba3f8b4
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.068 s) : 0, 1067693
Total [baseline] (10.512 s) : 0, 10512123
Agent [candidate] (1.054 s) : 0, 1054229
Total [candidate] (10.452 s) : 0, 10452097
section appsec
Agent [baseline] (1.197 s) : 0, 1197329
Total [baseline] (10.774 s) : 0, 10773534
Agent [candidate] (1.194 s) : 0, 1193811
Total [candidate] (10.759 s) : 0, 10758771
section iast
Agent [baseline] (1.193 s) : 0, 1192755
Total [baseline] (11.096 s) : 0, 11095897
Agent [candidate] (1.184 s) : 0, 1183678
Total [candidate] (11.024 s) : 0, 11024015
section profiling
Agent [baseline] (1.276 s) : 0, 1275871
Total [baseline] (10.85 s) : 0, 10850308
Agent [candidate] (1.286 s) : 0, 1286116
Total [candidate] (10.895 s) : 0, 10895014
gantt
title petclinic - break down per module: candidate=1.48.0-SNAPSHOT~df417bd2cd, baseline=1.48.0-SNAPSHOT~8adba3f8b4
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (729.113 ms) : 0, 729113
BytebuddyAgent [candidate] (719.875 ms) : 0, 719875
GlobalTracer [baseline] (242.52 ms) : 0, 242520
GlobalTracer [candidate] (239.239 ms) : 0, 239239
AppSec [baseline] (54.936 ms) : 0, 54936
AppSec [candidate] (54.943 ms) : 0, 54943
Debugger [baseline] (4.443 ms) : 0, 4443
Debugger [candidate] (4.435 ms) : 0, 4435
Remote Config [baseline] (699.141 µs) : 0, 699
Remote Config [candidate] (707.516 µs) : 0, 708
Telemetry [baseline] (15.127 ms) : 0, 15127
Telemetry [candidate] (14.57 ms) : 0, 14570
section appsec
BytebuddyAgent [baseline] (739.88 ms) : 0, 739880
BytebuddyAgent [candidate] (737.49 ms) : 0, 737490
GlobalTracer [baseline] (236.339 ms) : 0, 236339
GlobalTracer [candidate] (235.588 ms) : 0, 235588
AppSec [baseline] (176.436 ms) : 0, 176436
AppSec [candidate] (176.362 ms) : 0, 176362
Debugger [baseline] (4.278 ms) : 0, 4278
Debugger [candidate] (4.268 ms) : 0, 4268
Remote Config [baseline] (642.953 µs) : 0, 643
Remote Config [candidate] (661.781 µs) : 0, 662
Telemetry [baseline] (8.267 ms) : 0, 8267
Telemetry [candidate] (8.218 ms) : 0, 8218
IAST [baseline] (21.936 ms) : 0, 21936
IAST [candidate] (21.578 ms) : 0, 21578
section iast
BytebuddyAgent [baseline] (848.827 ms) : 0, 848827
BytebuddyAgent [candidate] (841.15 ms) : 0, 841150
GlobalTracer [baseline] (230.42 ms) : 0, 230420
GlobalTracer [candidate] (230.093 ms) : 0, 230093
AppSec [baseline] (56.185 ms) : 0, 56185
AppSec [candidate] (56.014 ms) : 0, 56014
Debugger [baseline] (4.177 ms) : 0, 4177
Debugger [candidate] (4.09 ms) : 0, 4090
Remote Config [baseline] (609.659 µs) : 0, 610
Remote Config [candidate] (599.4 µs) : 0, 599
Telemetry [baseline] (8.892 ms) : 0, 8892
Telemetry [candidate] (8.691 ms) : 0, 8691
IAST [baseline] (22.844 ms) : 0, 22844
IAST [candidate] (22.552 ms) : 0, 22552
section profiling
BytebuddyAgent [baseline] (711.073 ms) : 0, 711073
BytebuddyAgent [candidate] (717.554 ms) : 0, 717554
GlobalTracer [baseline] (348.785 ms) : 0, 348785
GlobalTracer [candidate] (351.832 ms) : 0, 351832
AppSec [baseline] (54.084 ms) : 0, 54084
AppSec [candidate] (53.45 ms) : 0, 53450
Debugger [baseline] (4.328 ms) : 0, 4328
Debugger [candidate] (4.342 ms) : 0, 4342
Remote Config [baseline] (695.303 µs) : 0, 695
Remote Config [candidate] (700.967 µs) : 0, 701
Telemetry [baseline] (9.017 ms) : 0, 9017
Telemetry [candidate] (9.005 ms) : 0, 9005
ProfilingAgent [baseline] (102.146 ms) : 0, 102146
ProfilingAgent [candidate] (103.191 ms) : 0, 103191
Profiling [baseline] (102.173 ms) : 0, 102173
Profiling [candidate] (103.218 ms) : 0, 103218
LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 14 metrics, 16 unstable metrics. Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~df417bd2cd, baseline=1.48.0-SNAPSHOT~8adba3f8b4
dateFormat X
axisFormat %s
section baseline
no_agent (382.819 µs) : 362, 403
. : milestone, 383,
iast (517.371 µs) : 495, 539
. : milestone, 517,
iast_FULL (738.234 µs) : 716, 760
. : milestone, 738,
iast_GLOBAL (567.592 µs) : 546, 589
. : milestone, 568,
iast_HARDCODED_SECRET_DISABLED (515.158 µs) : 493, 537
. : milestone, 515,
iast_INACTIVE (467.382 µs) : 446, 489
. : milestone, 467,
iast_TELEMETRY_OFF (503.722 µs) : 482, 526
. : milestone, 504,
tracing (465.637 µs) : 445, 487
. : milestone, 466,
section candidate
no_agent (387.817 µs) : 366, 409
. : milestone, 388,
iast (517.894 µs) : 496, 540
. : milestone, 518,
iast_FULL (738.526 µs) : 716, 761
. : milestone, 739,
iast_GLOBAL (560.534 µs) : 539, 582
. : milestone, 561,
iast_HARDCODED_SECRET_DISABLED (517.177 µs) : 495, 539
. : milestone, 517,
iast_INACTIVE (465.153 µs) : 444, 486
. : milestone, 465,
iast_TELEMETRY_OFF (508.051 µs) : 486, 530
. : milestone, 508,
tracing (455.258 µs) : 435, 476
. : milestone, 455,
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~df417bd2cd, baseline=1.48.0-SNAPSHOT~8adba3f8b4
dateFormat X
axisFormat %s
section baseline
no_agent (1.339 ms) : 1319, 1358
. : milestone, 1339,
appsec (1.74 ms) : 1717, 1763
. : milestone, 1740,
appsec_no_iast (1.759 ms) : 1735, 1783
. : milestone, 1759,
code_origins (1.667 ms) : 1639, 1694
. : milestone, 1667,
iast (1.511 ms) : 1487, 1536
. : milestone, 1511,
profiling (1.525 ms) : 1501, 1549
. : milestone, 1525,
tracing (1.509 ms) : 1484, 1534
. : milestone, 1509,
section candidate
no_agent (1.349 ms) : 1329, 1369
. : milestone, 1349,
appsec (1.753 ms) : 1730, 1777
. : milestone, 1753,
appsec_no_iast (1.751 ms) : 1727, 1774
. : milestone, 1751,
code_origins (1.689 ms) : 1661, 1718
. : milestone, 1689,
iast (1.522 ms) : 1498, 1545
. : milestone, 1522,
profiling (1.508 ms) : 1485, 1532
. : milestone, 1508,
tracing (1.519 ms) : 1494, 1543
. : milestone, 1519,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics. Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~df417bd2cd, baseline=1.48.0-SNAPSHOT~8adba3f8b4
dateFormat X
axisFormat %s
section baseline
no_agent (1.472 ms) : 1460, 1483
. : milestone, 1472,
appsec (2.37 ms) : 2323, 2417
. : milestone, 2370,
iast (3.254 ms) : 3033, 3475
. : milestone, 3254,
iast_GLOBAL (2.19 ms) : 2131, 2249
. : milestone, 2190,
profiling (2.018 ms) : 1970, 2066
. : milestone, 2018,
tracing (1.97 ms) : 1925, 2015
. : milestone, 1970,
section candidate
no_agent (1.472 ms) : 1460, 1483
. : milestone, 1472,
appsec (2.362 ms) : 2315, 2408
. : milestone, 2362,
iast (2.148 ms) : 2090, 2207
. : milestone, 2148,
iast_GLOBAL (2.191 ms) : 2132, 2251
. : milestone, 2191,
profiling (2.028 ms) : 1979, 2076
. : milestone, 2028,
tracing (1.974 ms) : 1929, 2020
. : milestone, 1974,
Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~df417bd2cd, baseline=1.48.0-SNAPSHOT~8adba3f8b4
dateFormat X
axisFormat %s
section baseline
no_agent (14.949 s) : 14949000, 14949000
. : milestone, 14949000,
appsec (15.132 s) : 15132000, 15132000
. : milestone, 15132000,
iast (18.784 s) : 18784000, 18784000
. : milestone, 18784000,
iast_GLOBAL (18.139 s) : 18139000, 18139000
. : milestone, 18139000,
profiling (15.659 s) : 15659000, 15659000
. : milestone, 15659000,
tracing (14.848 s) : 14848000, 14848000
. : milestone, 14848000,
section candidate
no_agent (15.647 s) : 15647000, 15647000
. : milestone, 15647000,
appsec (15.054 s) : 15054000, 15054000
. : milestone, 15054000,
iast (18.432 s) : 18432000, 18432000
. : milestone, 18432000,
iast_GLOBAL (17.748 s) : 17748000, 17748000
. : milestone, 17748000,
profiling (15.077 s) : 15077000, 15077000
. : milestone, 15077000,
tracing (14.527 s) : 14527000, 14527000
. : milestone, 14527000,
|
@@ -0,0 +1,16 @@ | |||
apply from: "$rootDir/gradle/java.gradle" | |||
|
|||
repositories { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure if the repositories
block is needed here. It is there in the other Gradle instrumentations, but I think I just forgot to delete it from experimenting with trying to download a Gradle API for a specific version.
Could you please try removing it and seeing if things continue to work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's rename the module to something more descriptive, like gradle-testing
. Also, let's add this and the maven-surefire
to CODEOWNERS
public class DDCollectAllTestClassesExecutor implements Action<String> { | ||
private final List<Class<?>> testClasses = new ArrayList<>(); | ||
Action<String> delegate; | ||
ClassLoader classLoader; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can these fields be made private final
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whoops, yes, nice catch
|
||
@Override | ||
public int compare(Description o1, Description o2) { | ||
return comparator.compare(o1, o2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could simply do executionPriority(o2) - executionPriority(o1)
here and get rid of the nested comparator
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll also update datadog.trace.instrumentation.junit4.order.JUnit4FailFastClassOrderer
to implement Comparator<Class<?>>
instead of just providing the classExecutionPriority method, I think it will be easier to follow the code that way
@AutoService(InstrumenterModule.class) | ||
public class JUnit4TestOrdererInstrumentation extends InstrumenterModule.CiVisibility | ||
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice { | ||
private final String parentPackageName = Strings.getPackageName(JUnit4Utils.class.getName()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As we've seen recently it is best not to init injected classes in the tracer's classloader. Let's use an instrumentation class here instead
JUnit4Instrumentation.class.getPackage().getName() + ".TestEventsHandlerHolder", | ||
JUnit4Instrumentation.class.getPackage().getName() + ".SkippedByDatadog", | ||
JUnit4Instrumentation.class.getPackage().getName() + ".TracingListener", | ||
JUnit4FailFastClassOrderer.class.getPackage().getName() + ".JUnit4FailFastClassOrderer", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use an instrumentation class here instead of the one we inject?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no instrumentation class inside of the junit4.order
package unfortunately, but we could do:
JUnit4Instrumentation.class.getPackage().getName() + ".order.JUnit4FailFastClassOrderer",
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, let's do this. It's unlikely that we will rename the package, and if we do the smoke tests you added will catch the problem
JUnit4Instrumentation.class.getPackage().getName() + ".JUnit4Utils", | ||
JUnit4Instrumentation.class.getPackage().getName() + ".TestEventsHandlerHolder", | ||
JUnit4Instrumentation.class.getPackage().getName() + ".TracingListener", | ||
JUnit4FailFastClassOrderer.class.getPackage().getName() + ".JUnit4FailFastClassOrderer", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here, can an instrumentation class be used to compute the package name?
return 0; | ||
} | ||
|
||
TestEventsHandler<TestSuiteDescriptor, TestDescriptor> testEventsHandler = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's move this variable declaration closer to the place where it is used to make the code easier to follow
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When refactoring the class to implement Comparator<Class<?>>
I added the handler as a field to the class, so it fixes this issue too
Co-authored-by: Nikita Tkachenko <[email protected]>
This reverts commit f59331e.
…ano/junit4-test-reordering
| Package | Type | Package file | Manager | Update | Change | |---|---|---|---|---|---| | org.flywaydb.flyway | plugin | misk/gradle/libs.versions.toml | gradle | minor | `11.6.0` -> `11.7.0` | | [com.squareup.okio:okio-fakefilesystem](https://github.com/square/okio) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `3.10.2` -> `3.11.0` | | [com.squareup.okio:okio](https://github.com/square/okio) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `3.10.2` -> `3.11.0` | | [com.autonomousapps.dependency-analysis](https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin) | plugin | misk/gradle/libs.versions.toml | gradle | minor | `2.15.0` -> `2.16.0` | | [com.datadoghq:dd-trace-api](https://github.com/datadog/dd-trace-java) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `1.47.3` -> `1.48.1` | | [com.datadoghq:dd-trace-ot](https://github.com/datadog/dd-trace-java) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `1.47.3` -> `1.48.1` | | [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.31.18` -> `2.31.20` | | [software.amazon.awssdk:sqs](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.31.18` -> `2.31.20` | | [software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.31.18` -> `2.31.20` | | [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.31.18` -> `2.31.20` | | [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.31.18` -> `2.31.20` | | [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.31.18` -> `2.31.20` | | [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.31.18` -> `2.31.20` | --- ### Release Notes <details> <summary>square/okio (com.squareup.okio:okio-fakefilesystem)</summary> ### [`v3.11.0`](https://github.com/square/okio/blob/HEAD/CHANGELOG.md#Version-3110) *2025-04-09* - Fix: Clear the deflater's byte array reference - New: Faster implementation of `String.decodeHex()` on Kotlin/JS. - New: Declare `EXACTLY_ONCE` execution for blocks like `Closeable.use {}` and `FileSystem.read {}`. - Upgrade: \[Kotlin 2.1.20]\[kotlin\_2\_1\_20]. </details> <details> <summary>autonomousapps/dependency-analysis-android-gradle-plugin (com.autonomousapps.dependency-analysis)</summary> ### [`v2.16.0`](https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/blob/HEAD/CHANGELOG.md#Version-2160) - \[Feat]: support `com.android.test` projects. - \[Feat]: support typesafe project accessors with opt-in. ```kotlin dependencyAnalysis { useTypesafeProjectAccessors(true) // false by default } ``` </details> <details> <summary>datadog/dd-trace-java (com.datadoghq:dd-trace-api)</summary> ### [`v1.48.1`](https://github.com/DataDog/dd-trace-java/releases/tag/v1.48.1): 1.48.1 ### Components #### Tracer internal logging - 🐛 Remove print line causing unnecessary logs ([#​8687](DataDog/dd-trace-java#8687) - [@​sarahchen6](https://github.com/sarahchen6)) ### [`v1.48.0`](https://github.com/DataDog/dd-trace-java/releases/tag/v1.48.0): 1.48.0 ### Known Bugs > \[!NOTE] > If you are experiencing issues with spamming timeout logs, please update to the [latest version](https://github.com/DataDog/dd-trace-java/releases/latest) or set [JDK_SOCKET_ENABLED](https://github.com/DataDog/dd-trace-java/blob/33fc3c9a9b7cda3beda88b8b3e5224ae2b10764a/dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java#L98) to false. ### Components #### Application Security Management (IAST) - ✨ Fix vulnerability location org.jose4j.lang.HashUtil ([#​8610](DataDog/dd-trace-java#8610) - [@​jandro996](https://github.com/jandro996)) - ✨ Fix weak randomness in oracle.ucp.util.OpaqueString ([#​8609](DataDog/dd-trace-java#8609) - [@​jandro996](https://github.com/jandro996)) - ✨ Fix weak hash false positive in oracle.security.o5logon.O5Logon ([#​8608](DataDog/dd-trace-java#8608) - [@​jandro996](https://github.com/jandro996)) - 🐛 Prevent before callsites targeting constructors in super calls ([#​8549](DataDog/dd-trace-java#8549) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) #### Application Security Management (WAF) - ✨ Update login events public SDK to V2 ([#​8620](DataDog/dd-trace-java#8620) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - 🐛 Send RASP LFI capability only when AppSec is statically enabled ([#​8573](DataDog/dd-trace-java#8573) - [@​jandro996](https://github.com/jandro996)) - ✨ Improve detection of missing request end events ([#​8510](DataDog/dd-trace-java#8510) - [@​smola](https://github.com/smola)) - 🧹 Remove remote configuration for API Security sampling rate ([#​8486](DataDog/dd-trace-java#8486) - [@​smola](https://github.com/smola)) - ✨ Add setUser to user monitoring SDK ([#​8482](DataDog/dd-trace-java#8482) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Add missing address for signup event ([#​8469](DataDog/dd-trace-java#8469) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Allow login events SDK to be used with appsec disabled ([#​8464](DataDog/dd-trace-java#8464) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Add support for endpoint discovery in spring mvc ([#​8352](DataDog/dd-trace-java#8352) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ New API Security sampling algorithm ([#​8178](DataDog/dd-trace-java#8178) - [@​ValentinZakharov](https://github.com/ValentinZakharov)) #### Build & Tooling - ✨ Add buffer size customizability to JDK UDS support ([#​8629](DataDog/dd-trace-java#8629) - [@​sarahchen6](https://github.com/sarahchen6)) - ✨ Add JDK built-in support for UDS on Java 16+ ([#​8314](DataDog/dd-trace-java#8314) - [@​sarahchen6](https://github.com/sarahchen6)) #### Configuration at Runtime - 🐛 Send RASP LFI capability only when AppSec is statically enabled ([#​8573](DataDog/dd-trace-java#8573) - [@​jandro996](https://github.com/jandro996)) #### Continuous Integration Visibility - 🐛 Prevent double reporting of Scalatest events when using SBT with test forking ([#​8682](DataDog/dd-trace-java#8682) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Shutdown CI Visibility test event handlers before tracer ([#​8677](DataDog/dd-trace-java#8677) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Do not apply JUnit 4 instrumentation to MUnit runners ([#​8675](DataDog/dd-trace-java#8675), [#​8683](DataDog/dd-trace-java#8683) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Remove error log when source path resolution fails on isModified check ([#​8663](DataDog/dd-trace-java#8663) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Implement tests reordering for JUnit 4 ([#​8650](DataDog/dd-trace-java#8650) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - 🐛 Set default Attempt to Fix retries if none provided from the backend ([#​8615](DataDog/dd-trace-java#8615) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Allow to manually set PR info ([#​8566](DataDog/dd-trace-java#8566) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Fix Test Optimization init when repo root cannot be determined ([#​8533](DataDog/dd-trace-java#8533) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Add capabilities tagging ([#​8499](DataDog/dd-trace-java#8499), [#​8540](DataDog/dd-trace-java#8540) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) #### Crash tracking - 🐛 Remove dependency on bash from crash/oome uploder scripts ([#​8652](DataDog/dd-trace-java#8652) - [@​jbachorik](https://github.com/jbachorik)) #### Data Streams Monitoring - ✨ e2e pipeline configuration when data jobs is enabled ([#​8553](DataDog/dd-trace-java#8553) - [@​kr-igor](https://github.com/kr-igor)) #### Dynamic Instrumentation - 🐛 Fix In-Product when config is empty ([#​8679](DataDog/dd-trace-java#8679) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Add support for filtering shaded third-party libs ([#​8612](DataDog/dd-trace-java#8612) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Add In-Product Enablement ([#​8587](DataDog/dd-trace-java#8587) - [@​jpbempel](https://github.com/jpbempel)) - ✨⚡ Reduce footprint of SourceFile tracking ([#​8524](DataDog/dd-trace-java#8524) - [@​jpbempel](https://github.com/jpbempel)) - ✨⚡ Optimize the SourceFile tracking ([#​8520](DataDog/dd-trace-java#8520) - [@​jpbempel](https://github.com/jpbempel)) #### OpenTracing - 🧹 Remove activeScope() use in OpenTracing shim ([#​8478](DataDog/dd-trace-java#8478) - [@​mcculls](https://github.com/mcculls)) #### Profiling - ✨ Add profiler env check command to AgentCLI ([#​8671](DataDog/dd-trace-java#8671) - [@​jbachorik](https://github.com/jbachorik)) - ✨ Bump ddprof to 1.23.0 ([#​8668](DataDog/dd-trace-java#8668) - [@​jbachorik](https://github.com/jbachorik)) - Fix a crash related to ElfParser::loadSymbolTable ([#​191](DataDog/dd-trace-java#191)) by [@​yanglong1010](https://github.com/yanglong1010) in DataDog/java-profiler#192 - Unwind String.indexOf intrinsic on AArch64 by [@​MattAlp](https://github.com/MattAlp) in DataDog/java-profiler#193 - Fix Java 24 support by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#194 - A set of fixes related to clang, aarch64 and musl pecularities of vmstructs stack unwinder by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#199 - 🐛 Remove process information from JFR recording ([#​8661](DataDog/dd-trace-java#8661) - [@​r1viollet](https://github.com/r1viollet)) - 🐛 Make TempLocationManager USER aware ([#​8605](DataDog/dd-trace-java#8605) - [@​jbachorik](https://github.com/jbachorik)) - ✨ Extract git tags from embedded git.properties and datadog_git.properties ([#​8561](DataDog/dd-trace-java#8561) - [@​wmouchere](https://github.com/wmouchere)) #### Telemetry - 🐛 Fix appsec.rasp.error and appsec.waf.error telemetry metrics ([#​8624](DataDog/dd-trace-java#8624) - [@​jandro996](https://github.com/jandro996)) - ✨ Create metric: appsec.rasp.rule.skipped ([#​8618](DataDog/dd-trace-java#8618) - [@​jandro996](https://github.com/jandro996)) - ✨ Extract git tags from embedded git.properties and datadog_git.properties ([#​8561](DataDog/dd-trace-java#8561) - [@​wmouchere](https://github.com/wmouchere)) #### Testing - 🧹 Simplify ssi tests one-pipeline ([#​8558](DataDog/dd-trace-java#8558) - [@​robertomonteromiguel](https://github.com/robertomonteromiguel)) - ✨ Add smoke tests for java's concurrent API ([#​8438](DataDog/dd-trace-java#8438) - [@​sarahchen6](https://github.com/sarahchen6)) #### Trace context propagation - ✨ Adding Support for `TRACE_PROPAGATION_BEHAVIOR_EXTRACT` ([#​8535](DataDog/dd-trace-java#8535) - [@​mhlidd](https://github.com/mhlidd)) #### Tracer core - 🐛 Ensure shaded helpers have unique names ([#​8559](DataDog/dd-trace-java#8559) - [@​amarziali](https://github.com/amarziali)) - ✨ Support common config sources for user-provided git info ([#​8547](DataDog/dd-trace-java#8547) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Make the default config sources more robust when a security manager is installed ([#​8544](DataDog/dd-trace-java#8544) - [@​mcculls](https://github.com/mcculls)) - ✨ Support targeting services with configurations in stable configuration file ([#​8526](DataDog/dd-trace-java#8526) - [@​mtoffl01](https://github.com/mtoffl01)) - ✨ Add new parser for `DD_TAGS` and prioritizing `DD_SERVICE` ([#​8296](DataDog/dd-trace-java#8296) - [@​mhlidd](https://github.com/mhlidd)) #### Tracer internal logging - 🐛 Add missing debug log for the cloudPayloadTaggingServices config ([#​8600](DataDog/dd-trace-java#8600) - [@​ygree](https://github.com/ygree)) - ✨ Add the possibility to output the logs of the Java tracer in JSON ([#​8083](DataDog/dd-trace-java#8083) - [@​cecile75](https://github.com/cecile75)) #### Tracer public API - ✨ Introducing `DD_TRACE_EXPERIMENTAL_FEATURES_ENABLED` Config ([#​8536](DataDog/dd-trace-java#8536) - [@​mhlidd](https://github.com/mhlidd)) - ✨ Config Consistency Round 2 ([#​8489](DataDog/dd-trace-java#8489) - [@​mhlidd](https://github.com/mhlidd)) ### Instrumentations #### - 🐛 Fix NPE in getMdcCopy of LoggingEventInstrumentation ([#​8599](DataDog/dd-trace-java#8599) - [@​ygree](https://github.com/ygree)) #### Apache Spark instrumentation - ✨ Instrument Runtime.exit() to finish spark application spans ([#​8572](DataDog/dd-trace-java#8572) - [@​paul-laffon-dd](https://github.com/paul-laffon-dd)) - ✨ Configure OpenLineage if present in Spark instrumentation ([#​8541](DataDog/dd-trace-java#8541) - [@​mobuchowski](https://github.com/mobuchowski)) #### Armeria Instrumentation - ✨ Support armeria grpc 1.32.3 ([#​8606](DataDog/dd-trace-java#8606) - [@​github-actions](https://github.com/github-actions)\[bot]) #### AWS DynamoDB Instrumentation - ✨ Create DynamoDB instrumentation + add span pointers for `updateItem` and `deleteItem` ([#​8490](DataDog/dd-trace-java#8490) - [@​nhulston](https://github.com/nhulston)) #### AWS SDK instrumentation - ✨ Add DynamoDB in DEFAULT_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES ([#​8595](DataDog/dd-trace-java#8595) - [@​joeyzhao2018](https://github.com/joeyzhao2018)) #### Azure Functions instrumentation - ✨ Enable tracer computed trace metrics by default for Azure Functions ([#​8518](DataDog/dd-trace-java#8518) - [@​duncanpharvey](https://github.com/duncanpharvey)) - 💡 Add azure-functions instrumentation ([#​8432](DataDog/dd-trace-java#8432) - [@​duncanpharvey](https://github.com/duncanpharvey)) #### Core Java language instrumentation - 🐛 Fix ForkJoinPool.execute() instrumentation on Java 21+ ([#​8560](DataDog/dd-trace-java#8560) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) #### Eclipse Vert.x instrumentation - ✨ Add vertx postgresql client instrumentation ([#​8471](DataDog/dd-trace-java#8471) - [@​vandonr](https://github.com/vandonr) - thanks for the contribution!) #### Kafka instrumentation - ✨ Support and test kafka-clients 4 ([#​8581](DataDog/dd-trace-java#8581) - [@​amarziali](https://github.com/amarziali)) #### Kotlin instrumentation - ✨ Avoid disconnected traces when using Kotlin flowOn ([#​8651](DataDog/dd-trace-java#8651) - [@​mcculls](https://github.com/mcculls)) #### OpenTelemetry instrumentation - 🧹 Migrate OtelContext wrapper to new internal Context API ([#​8645](DataDog/dd-trace-java#8645) - [@​mcculls](https://github.com/mcculls)) #### Spring instrumentation - 🐛 Support CompletableFuture on spring webmvc controllers ([#​8659](DataDog/dd-trace-java#8659) - [@​amarziali](https://github.com/amarziali)) - ✨ Add support for endpoint discovery in spring mvc ([#​8352](DataDog/dd-trace-java#8352) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) #### WebSocket Instrumentation - ✨ Instrument Jetty websocket pojo ([#​8562](DataDog/dd-trace-java#8562) - [@​amarziali](https://github.com/amarziali)) - 💡 Instrument Java Websocket API (JSR356) ([#​8440](DataDog/dd-trace-java#8440) - [@​amarziali](https://github.com/amarziali)) #### All other instrumentations - ✨ Introduce cache for peer.hostname lookup ([#​8601](DataDog/dd-trace-java#8601) - [@​mcculls](https://github.com/mcculls)) - ✨ Support pekko http 1.1 ([#​8532](DataDog/dd-trace-java#8532) - [@​amarziali](https://github.com/amarziali)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 6pm every weekday,before 2am every weekday" in timezone Australia/Melbourne, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). GitOrigin-RevId: 331314f71acaced3adc75ea5d7e855c248d593fc
What Does This Do
maven-surefire
plugin and the Gradle test running logic, theoretically allowing other frameworks that use the mechanism to benefit from the featureContributor Checklist
type:
and (comp:
orinst:
) labels in addition to any usefull labelsclose
,fix
or any linking keywords when referencing an issue.Use
solves
instead, and assign the PR milestone to the issueJira ticket: SDTEST-1780