Skip to content

Commit 4801b9c

Browse files
authored
Merge branch 'master' into sarahchen6/move-macrobenchmarks
2 parents 555b8d4 + 6f14285 commit 4801b9c

1,121 files changed

Lines changed: 20011 additions & 17589 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
name: migrate-groovy-to-java
3+
description: >
4+
Converts Spock/Groovy test files in a Gradle module to equivalent JUnit 5 Java tests.
5+
Use when asked to "migrate groovy", "convert groovy to java", "g2j", or when a module
6+
has .groovy test files that need to be replaced with .java equivalents.
7+
---
8+
9+
Migrate test Groovy files to Java using JUnit 5
10+
11+
1. List all Groovy files of the current Gradle module
12+
2. Convert Groovy files to Java using JUnit 5
13+
3. Make sure the tests are still passing after migration and that the test count has not changed
14+
4. Remove Groovy files
15+
5. Add the migrated module path(s) to `.github/g2j-migrated-modules.txt`
16+
17+
When converting Groovy code to Java code, make sure that:
18+
- The Java code generated is compatible with JDK 8
19+
- When translating Spock tests, favor using `@CsvSource` with `|` delimiters
20+
- When using `@MethodSource`, name the arguments method by appending `Arguments` using camelCase to the test method name (e.g. `testMethodArguments`) and return a `Stream` of arguments using `Stream.of(...)` and `arguments(...)` with static import.
21+
- Ensure parameterized test names are human-readable (i.e. no hashcodes); instead add a description string as the first `Arguments.arguments(...)` value or index the test case
22+
- When converting tuples, create a light dedicated structure instead to keep the typing system
23+
- Instead of checking a state and throwing an exception, use JUnit asserts
24+
- Instead of using `assertTrue(a.equals(b))` or `assertFalse(a.equals(b))`, use `assertEquals(expected, actual)` and `assertNotEquals(unexpected, actual)`
25+
- Import frequently used types rather than using fully-qualified names inline, to improve readability
26+
- Do not wrap checked exceptions and throw a Runtime exception; prefer adding a throws clause at method declaration
27+
- Do not mark local variables `final`
28+
- Ensure variables are human-readable; avoid single-letter names and pre-define variables that are referenced multiple times
29+
- When translating Spock `Mock(...)` usage, use `libs.bundles.mockito` instead of writing manual recording/stub implementations

.github/CODEOWNERS

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,10 @@
5151
**/InferredProxy*.groovy @DataDog/apm-serverless
5252

5353
# @DataDog/apm-lang-platform-java
54-
/.circleci/ @DataDog/apm-lang-platform-java
5554
/.github/ @DataDog/apm-lang-platform-java
5655
/benchmark/ @DataDog/apm-lang-platform-java
5756
/components/ @DataDog/apm-lang-platform-java
58-
/dd-java-agent/instrumentation/java-*/ @DataDog/apm-lang-platform-java
57+
/dd-java-agent/instrumentation/java/ @DataDog/apm-lang-platform-java
5958
/dd-smoke-tests/concurrent/ @DataDog/apm-lang-platform-java
6059
/dd-smoke-tests/lib-injection/ @DataDog/apm-lang-platform-java
6160
/metadata/ @DataDog/apm-lang-platform-java
@@ -80,7 +79,7 @@
8079
/dd-smoke-tests/iast-propagation/ @DataDog/asm-java
8180
/dd-smoke-tests/iast-util/ @DataDog/asm-java
8281
/dd-smoke-tests/spring-security/ @DataDog/asm-java
83-
/dd-java-agent/instrumentation/commons-fileupload/ @DataDog/asm-java
82+
/dd-java-agent/instrumentation/commons-fileupload-1.5/ @DataDog/asm-java
8483
/dd-java-agent/instrumentation/spring/spring-security/ @DataDog/asm-java
8584
/dd-trace-api/src/main/java/datadog/trace/api/aiguard/ @DataDog/asm-java
8685
/dd-trace-api/src/main/java/datadog/trace/api/EventTracker.java @DataDog/asm-java
@@ -103,12 +102,12 @@
103102
/dd-java-agent/instrumentation/cucumber-5.4/ @DataDog/ci-app-libraries
104103
/dd-java-agent/instrumentation/jacoco-0.8.9/ @DataDog/ci-app-libraries
105104
/dd-java-agent/instrumentation/junit @DataDog/ci-app-libraries
106-
/dd-java-agent/instrumentation/karate/ @DataDog/ci-app-libraries
105+
/dd-java-agent/instrumentation/karate-1.0/ @DataDog/ci-app-libraries
107106
/dd-java-agent/instrumentation/scalatest-3.0.8/ @DataDog/ci-app-libraries
108-
/dd-java-agent/instrumentation/selenium/ @DataDog/ci-app-libraries
107+
/dd-java-agent/instrumentation/selenium-3.13/ @DataDog/ci-app-libraries
109108
/dd-java-agent/instrumentation/testng/ @DataDog/ci-app-libraries
110109
/dd-java-agent/instrumentation/gradle/ @DataDog/ci-app-libraries
111-
/dd-java-agent/instrumentation/gradle-testing/ @DataDog/ci-app-libraries
110+
/dd-java-agent/instrumentation/gradle-testing-5.1/ @DataDog/ci-app-libraries
112111
/dd-java-agent/instrumentation/maven @DataDog/ci-app-libraries
113112
/dd-java-agent/instrumentation/weaver-0.9/ @DataDog/ci-app-libraries
114113
/dd-smoke-tests/gradle/ @DataDog/ci-app-libraries
@@ -130,24 +129,24 @@
130129
/dd-java-agent/instrumentation/spark/ @DataDog/data-jobs-monitoring
131130

132131
# @DataDog/data-streams-monitoring
133-
/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/datastreams @DataDog/data-streams-monitoring
134-
/dd-trace-core/src/main/java/datadog/trace/core/datastreams @DataDog/data-streams-monitoring
135-
/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams @DataDog/data-streams-monitoring
136-
/internal-api/src/main/java/datadog/trace/api/datastreams @DataDog/data-streams-monitoring
137-
/dd-smoke-tests/datastreams/ @DataDog/data-streams-monitoring
138-
/internal-api/src/test/groovy/datadog/trace/api/datastreams @DataDog/data-streams-monitoring
139-
**/datastreams/ @DataDog/data-streams-monitoring
140-
**/DataStreams* @DataDog/data-streams-monitoring
141-
**/dsmTest/** @DataDog/data-streams-monitoring
132+
/dd-java-agent/instrumentation-testing/src/main/groovy/datadog/trace/agent/test/datastreams @DataDog/data-streams-monitoring
133+
/dd-trace-core/src/main/java/datadog/trace/core/datastreams @DataDog/data-streams-monitoring
134+
/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams @DataDog/data-streams-monitoring
135+
/internal-api/src/main/java/datadog/trace/api/datastreams @DataDog/data-streams-monitoring
136+
/dd-smoke-tests/datastreams/ @DataDog/data-streams-monitoring
137+
/internal-api/src/test/groovy/datadog/trace/api/datastreams @DataDog/data-streams-monitoring
138+
**/datastreams/ @DataDog/data-streams-monitoring
139+
**/DataStreams* @DataDog/data-streams-monitoring
140+
**/dsmTest/** @DataDog/data-streams-monitoring
142141

143142
/dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
144-
/dd-java-agent/instrumentation/avro/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
143+
/dd-java-agent/instrumentation/avro-1.11.3/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
145144
/dd-java-agent/instrumentation/aws-java/aws-java-sns-1.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
146145
/dd-java-agent/instrumentation/aws-java/aws-java-sns-2.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
147146
/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
148147
/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
149148
/dd-java-agent/instrumentation/confluent-schema-registry/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
150-
/dd-java-agent/instrumentation/google-pubsub/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
149+
/dd-java-agent/instrumentation/google-pubsub-1.116/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
151150
/dd-java-agent/instrumentation/grpc-1.5/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
152151
/dd-java-agent/instrumentation/kafka/kafka-clients-0.11/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
153152
/dd-java-agent/instrumentation/kafka/kafka-clients-3.8/ @DataDog/data-streams-monitoring @DataDog/apm-idm-java
@@ -183,7 +182,8 @@
183182
/dd-trace-core/src/test/groovy/datadog/trace/llmobs/ @DataDog/ml-observability
184183

185184
# @DataDog/database-monitoring
186-
datadog/trace/bootstrap/instrumentation/dbm @DataDog/database-monitoring @DataDog/apm-idm-java
185+
/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/dbm/ @DataDog/database-monitoring @DataDog/apm-idm-java
186+
/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/dbm/ @DataDog/database-monitoring @DataDog/apm-idm-java
187187

188188
# @DataDog/rum
189189
/internal-api/src/main/java/datadog/trace/api/rum/ @DataDog/rum
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
issuer: https://token.actions.githubusercontent.com
2+
3+
subject: repo:DataDog/dd-trace-java:pull_request
4+
5+
claim_pattern:
6+
event_name: pull_request
7+
job_workflow_ref: DataDog/dd-trace-java/\.github/workflows/enforce-datadog-merge-queue\.yaml@refs/pull/[0-9]+/merge
8+
9+
permissions:
10+
issues: write
11+
pull_requests: write

.github/chainguard/self.pin-system-tests.create-pr.sts.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
issuer: https://token.actions.githubusercontent.com
22

3-
subject_pattern: repo:DataDog/dd-trace-java:ref:refs/heads/(master|release/v.+)
3+
subject_pattern: repo:DataDog/dd-trace-java:ref:refs/(heads/master|tags/v\d+\.\d+\.0)
44

55
claim_pattern:
6-
event_name: (create|workflow_dispatch)
7-
ref: refs/heads/(master|release/v.+)
8-
job_workflow_ref: DataDog/dd-trace-java/\.github/workflows/pin-system-tests\.yaml@refs/heads/(master|release/v.+)
6+
event_name: (workflow_dispatch|push)
7+
ref: refs/(heads/master|tags/v\d+\.\d+\.0)
8+
job_workflow_ref: DataDog/dd-trace-java/\.github/workflows/create-release-branch\.yaml@refs/(heads/master|tags/v\d+\.\d+\.0)
99

1010
permissions:
1111
contents: write
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
issuer: https://token.actions.githubusercontent.com
2+
3+
subject: repo:DataDog/dd-trace-java:ref:refs/heads/master
4+
5+
claim_pattern:
6+
event_name: (schedule|workflow_dispatch)
7+
ref: refs/heads/master
8+
ref_protected: "true"
9+
job_workflow_ref: DataDog/dd-trace-java/\.github/workflows/update-smoke-test-latest-versions\.yaml@refs/heads/master
10+
11+
permissions:
12+
contents: write
13+
pull_requests: write

.github/g2j-migrated-modules.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# This file lists modules that have been migrated from Groovy to Java / JUnit 5.
2+
# New *.groovy files under any src/<*test*>/groovy/ path
3+
# in these modules will fail the 'enforce-groovy-migration' PR check.
4+
#
5+
# After a module is migrated, add it on a new line here.
6+
# Use the filesystem path prefix as seen below.
7+
8+
buildSrc/call-site-instrumentation-plugin
9+
components/json
10+
dd-trace-api

.github/workflows/README.md

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,26 @@ _Action:_ Check the pull request did not introduce unexpected label.
3636

3737
_Recovery:_ Update the pull request or add a comment to trigger the action again.
3838

39+
### enforce-datadog-merge-queue [🔗](enforce-datadog-merge-queue.yaml)
40+
41+
_Trigger:_ When creating or updating a pull request, or when a pull request is added to GitHub merge queue.
42+
43+
_Actions:_
44+
45+
* Pass the `Merge queue check` status check on pull requests so they remain in a mergeable state,
46+
* When a pull request is enqueued in GitHub merge queue, post a `/merge` comment to trigger the Datadog merge queue,
47+
* Fail the `Merge queue check` status check on merge groups to prevent GitHub from merging directly.
48+
49+
_Recovery:_ The workflow is expected to fail to block GitHub merge queue.
50+
This redirects GitHub's "Merge when ready" button to the Datadog merge queue system.
51+
3952
### create-release-branch [🔗](create-release-branch.yaml)
4053

4154
_Trigger:_ When a git tag matching the pattern "vM.N.0" is pushed (e.g. for a minor release).
4255

43-
_Action:_ Create a release branch that corresponds to the pushed tag (e.g. "release/vM.N.x").
56+
_Action:_ Create a release branch that corresponds to the pushed tag (e.g. "release/vM.N.x"). Then open a PR against the release branch that pins system tests.
4457

45-
_Recovery:_ Manually create the branch from the "vM.N.0" git tag.
58+
_Recovery:_ Manually create the release branch from the "vM.N.0" git tag, and pin system tests to this branch by running the `./tooling/update_system_test_reference.sh` script.
4659

4760
### draft-release-notes-on-tag [🔗](draft-release-notes-on-tag.yaml)
4861

@@ -110,6 +123,19 @@ _Action:_
110123

111124
_Recovery:_ Check at the milestone for the related issues and update them manually.
112125

126+
### enforce-groovy-migration [🔗](enforce-groovy-migration.yaml)
127+
128+
_Trigger:_ When creating or updating a pull request targeting `master`, or when labels are updated.
129+
130+
_Actions:_
131+
132+
* Fail the PR if a new Groovy test file is added to a module listed in [`.github/g2j-migrated-modules.txt`](../g2j-migrated-modules.txt) (hard enforcement),
133+
* Post a warning comment on the PR if a new Groovy test file is added to any other non-exempt module (soft warning). Instrumentation (`dd-java-agent/instrumentation/`) and smoke-test (`dd-smoke-tests/`) modules are exempt from this warning.
134+
135+
_Recovery:_ Re-write the Groovy test files in Java / JUnit 5. To override this check entirely, add the `tag: override-groovy-enforcement` label to the PR. Remove the label to re-enable enforcement.
136+
137+
_Notes:_ The migrated modules list is always read from `master`. Add a new entry to `.github/g2j-migrated-modules.txt` each time a module is migrated to Java / JUnit 5.
138+
113139
## Code Quality and Security
114140

115141
### analyze-changes [🔗](analyze-changes.yaml)
@@ -145,6 +171,14 @@ _Action:_ Create a PR updating the Grade dependencies and their locking files.
145171

146172
_Recovery:_ Manually trigger the action again.
147173

174+
### update-smoke-test-latest-versions [🔗](update-smoke-test-latest-versions.yaml)
175+
176+
_Trigger:_ Every week or manually.
177+
178+
_Action:_ Create a PR updating the pinned "latest" tool versions (Gradle, Maven, Maven Surefire) used by CI Visibility smoke tests.
179+
180+
_Recovery:_ Manually trigger the action again.
181+
148182
### update-jmxfetch-submodule [🔗](update-jmxfetch-submodule.yaml)
149183

150184
_Trigger:_ Monthly or manually

.github/workflows/analyze-changes.yaml

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
${{ runner.os }}-gradle-
3131
3232
- name: Initialize CodeQL
33-
uses: github/codeql-action/init@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
33+
uses: github/codeql-action/init@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
3434
with:
3535
languages: 'java'
3636
build-mode: 'manual'
@@ -39,17 +39,11 @@ jobs:
3939
env:
4040
ORG_GRADLE_PROJECT_akkaRepositoryToken: ${{ secrets.AKKA_REPO_TOKEN }}
4141
run: |
42-
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx3G -Xms2G'" \
43-
JAVA_HOME=$JAVA_HOME_8_X64 \
44-
JAVA_8_HOME=$JAVA_HOME_8_X64 \
45-
JAVA_11_HOME=$JAVA_HOME_11_X64 \
46-
JAVA_17_HOME=$JAVA_HOME_17_X64 \
47-
JAVA_21_HOME=$JAVA_HOME_21_X64 \
48-
./gradlew clean :dd-java-agent:shadowJar \
49-
--build-cache --parallel --stacktrace --no-daemon --max-workers=4
42+
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms2G -Xmx3G'" \
43+
./gradlew clean :dd-java-agent:shadowJar --build-cache --parallel --stacktrace --no-daemon --max-workers=4
5044
5145
- name: Perform CodeQL Analysis and upload results to GitHub Security tab
52-
uses: github/codeql-action/analyze@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
46+
uses: github/codeql-action/analyze@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
5347

5448
trivy:
5549
name: Analyze changes with Trivy
@@ -85,14 +79,8 @@ jobs:
8579
env:
8680
ORG_GRADLE_PROJECT_akkaRepositoryToken: ${{ secrets.AKKA_REPO_TOKEN }}
8781
run: |
88-
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx3G -Xms2G'" \
89-
JAVA_HOME=$JAVA_HOME_8_X64 \
90-
JAVA_8_HOME=$JAVA_HOME_8_X64 \
91-
JAVA_11_HOME=$JAVA_HOME_11_X64 \
92-
JAVA_17_HOME=$JAVA_HOME_17_X64 \
93-
JAVA_21_HOME=$JAVA_HOME_21_X64 \
94-
./gradlew clean publishToMavenLocal \
95-
--build-cache --parallel --stacktrace --no-daemon --max-workers=4
82+
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms2G -Xmx3G'" \
83+
./gradlew clean publishToMavenLocal --build-cache --parallel --stacktrace --no-daemon --max-workers=4
9684
9785
- name: Copy published artifacts
9886
run: |
@@ -101,7 +89,7 @@ jobs:
10189
ls -laR "./workspace/.trivy"
10290
10391
- name: Run Trivy security scanner
104-
uses: aquasecurity/trivy-action@c1824fd6edce30d7ab345a9989de00bbd46ef284 # v0.34.0
92+
uses: aquasecurity/trivy-action@97e0b3872f55f89b95b2f65b3dbab56962816478 # v0.34.2
10593
with:
10694
scan-type: rootfs
10795
scan-ref: './workspace/.trivy/'
@@ -114,7 +102,7 @@ jobs:
114102
TRIVY_JAVA_DB_REPOSITORY: ghcr.io/aquasecurity/trivy-java-db,public.ecr.aws/aquasecurity/trivy-java-db
115103

116104
- name: Upload Trivy scan results to GitHub Security tab
117-
uses: github/codeql-action/upload-sarif@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
105+
uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
118106
if: always()
119107
with:
120108
sarif_file: 'trivy-results.sarif'

0 commit comments

Comments
 (0)