Skip to content

Commit 1bed02e

Browse files
authored
Merge branch 'master' into vandonr/vertx
2 parents f006e52 + 71cbb06 commit 1bed02e

File tree

999 files changed

+10233
-5708
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

999 files changed

+10233
-5708
lines changed

.circleci/config.continue.yml.j2

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ instrumentation_modules: &instrumentation_modules "dd-java-agent/instrumentation
3636
debugger_modules: &debugger_modules "dd-java-agent/agent-debugger|dd-java-agent/agent-bootstrap|dd-java-agent/agent-builder|internal-api|communication|dd-trace-core"
3737
profiling_modules: &profiling_modules "dd-java-agent/agent-profiling"
3838

39-
default_system_tests_commit: &default_system_tests_commit 0509dbd094c9cbf15f58db96f62276a0adff7efa
39+
default_system_tests_commit: &default_system_tests_commit 590162e1f5223cbbcd2876fdb820837cb13a85e1
4040

4141
parameters:
4242
nightly:
@@ -696,6 +696,8 @@ jobs:
696696
<<: *tests
697697

698698
resource_class: medium
699+
environment:
700+
- CI_AGENT_HOST=localhost
699701

700702
docker:
701703
- image: << pipeline.parameters.docker_image >>:{{ docker_image_prefix }}8
@@ -889,6 +891,7 @@ jobs:
889891
for log_dir in logs*; do
890892
tar -cvzf ../artifacts/${log_dir}_<< parameters.weblog-variant >>.tar.gz $log_dir
891893
done
894+
when: always
892895
893896
- store_artifacts:
894897
path: artifacts
@@ -978,6 +981,7 @@ jobs:
978981
for dir in system-tests/logs*/; do
979982
cp -r "$dir" logs_debugger
980983
done
984+
when: always
981985
982986
- store_test_results:
983987
path: logs_debugger

.github/workflows/add-release-to-cloudfoundry.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Checkout "cloudfoundry" branch
13-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # 4.1.6
13+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
1414
with:
1515
ref: cloudfoundry
1616
- name: Get release version
@@ -43,7 +43,7 @@ jobs:
4343
run: |
4444
echo "${{ steps.get-release-version.outputs.VERSION }}: ${{ steps.get-release-url.outputs.URL }}" >> index.yml
4545
- name: Commit and push changes
46-
uses: planetscale/ghcommit-action@b68767a2e130a71926b365322e62b583404a5e09 # v0.1.43
46+
uses: planetscale/ghcommit-action@9400254a26464337cbe5af17c5f25075134e0089 # v0.2.7
4747
with:
4848
commit_message: "chore: Add version ${{ steps.get-release-version.outputs.VERSION }} to Cloud Foundry"
4949
repo: ${{ github.repository }}

.github/workflows/analyze-changes.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ jobs:
1818
runs-on: ubuntu-latest
1919
steps:
2020
- name: Checkout repository
21-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # 4.1.6
21+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
2222
with:
2323
submodules: 'recursive'
2424
# Run the static analysis on the staging environment to benefit from the new features not yet released
2525
- name: Check code meets quality standards (staging)
2626
id: datadog-static-analysis-staging
27-
uses: DataDog/datadog-static-analyzer-github-action@c74aff158c8cc1c3e285660713bcaa5f9c6d696e # v1
27+
uses: DataDog/datadog-static-analyzer-github-action@1297a546e6bb268e2ac5bc98a1477d22be335822 # v1
2828
with:
2929
dd_app_key: ${{ secrets.DATADOG_APP_KEY_STAGING }}
3030
dd_api_key: ${{ secrets.DATADOG_API_KEY_STAGING }}
@@ -44,12 +44,12 @@ jobs:
4444

4545
steps:
4646
- name: Checkout repository
47-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # 4.1.6
47+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
4848
with:
4949
submodules: 'recursive'
5050

5151
- name: Cache Gradle dependencies
52-
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
52+
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
5353
with:
5454
path: |
5555
~/.gradle/caches
@@ -59,7 +59,7 @@ jobs:
5959
${{ runner.os }}-gradle-
6060
6161
- name: Initialize CodeQL
62-
uses: github/codeql-action/init@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6
62+
uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
6363
with:
6464
languages: 'java'
6565
build-mode: 'manual'
@@ -76,7 +76,7 @@ jobs:
7676
--build-cache --parallel --stacktrace --no-daemon --max-workers=4
7777
7878
- name: Perform CodeQL Analysis and upload results to GitHub Security tab
79-
uses: github/codeql-action/analyze@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6
79+
uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
8080

8181
# For now, CodeQL SARIF results are not supported by Datadog CI
8282
# - name: Upload results to Datadog CI Static Analysis
@@ -106,12 +106,12 @@ jobs:
106106

107107
steps:
108108
- name: Checkout repository
109-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # 4.1.6
109+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
110110
with:
111111
submodules: 'recursive'
112112

113113
- name: Cache Gradle dependencies
114-
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
114+
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
115115
with:
116116
path: |
117117
~/.gradle/caches
@@ -144,7 +144,7 @@ jobs:
144144
ls -laR "./workspace/.trivy"
145145
146146
- name: Run Trivy security scanner
147-
uses: aquasecurity/trivy-action@915b19bbe73b92a6cf82a1bc12b087c9a19a5fe2 # v0.28.0
147+
uses: aquasecurity/trivy-action@18f2510ee396bbf400402947b394f2dd8c87dbb0 # v0.29.0
148148
with:
149149
scan-type: rootfs
150150
scan-ref: './workspace/.trivy/'
@@ -157,7 +157,7 @@ jobs:
157157
TRIVY_JAVA_DB_REPOSITORY: ghcr.io/aquasecurity/trivy-java-db,public.ecr.aws/aquasecurity/trivy-java-db
158158

159159
- name: Upload Trivy scan results to GitHub Security tab
160-
uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6
160+
uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
161161
if: always()
162162
with:
163163
sarif_file: 'trivy-results.sarif'

.github/workflows/prune-github-container-registry.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ jobs:
2020
container: dd-trace-java/dd-lib-java-init
2121
keep-younger-than: 7 # days
2222
keep-last: 10
23-
keep-tags: |
24-
latest_snapshot
2523
prune-tags-regexes: |
26-
^[a-z0-9]{40}(-arm64|-amd64)?$
24+
.+
2725
prune-untagged: true

.github/workflows/prune-old-pull-requests.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
pull-requests: write
1414
steps:
1515
- name: Prune old pull requests
16-
uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0
16+
uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
1717
with:
1818
days-before-stale: -1 # Disable general stale bot
1919
days-before-pr-stale: 90 # Only enable stale bot for PRs with no activity for 90 days

.github/workflows/update-docker-build-image.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
pull-requests: write # Required to create a pull request
2020
steps:
2121
- name: Checkout the repository
22-
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
22+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2323
- name: Download ghcommit CLI
2424
run: |
2525
curl https://github.com/planetscale/ghcommit/releases/download/v0.1.48/ghcommit_linux_amd64 -o /usr/local/bin/ghcommit -L

.github/workflows/update-gradle-dependencies.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
pull-requests: write # Required to create a pull request
1414
steps:
1515
- name: Checkout repository
16-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # 4.1.6
16+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
1717
with:
1818
submodules: 'recursive'
1919
- name: Download ghcommit CLI

.gitlab-ci.yml

Lines changed: 142 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ variables:
2525
GRADLE_VERSION: "8.4" # must match gradle-wrapper.properties
2626
JAVA_BUILD_IMAGE_VERSION: "v25.01"
2727
REPO_NOTIFICATION_CHANNEL: "#apm-java-escalations"
28+
PROFILE_TESTS:
29+
description: "Enable profiling of tests"
30+
value: "false"
2831

2932
default:
3033
tags: [ "arch:amd64" ]
@@ -35,6 +38,17 @@ default:
3538
script:
3639
- echo "done"
3740

41+
.set_datadog_api_keys: &set_datadog_api_keys
42+
- export DATADOG_API_KEY_PROD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.DATADOG_API_KEY_PROD --with-decryption --query "Parameter.Value" --out text)
43+
- export DATADOG_API_KEY_DDSTAGING=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-java.dd_api_key --with-decryption --query "Parameter.Value" --out text)
44+
45+
# CI_NODE_INDEX and CI_NODE_TOTAL are 1-indexed and not always set. These steps normalize the numbers for jobs
46+
.normalize_node_index: &normalize_node_index
47+
- echo "CI_NODE_TOTAL=$CI_NODE_TOTAL , CI_NODE_INDEX=$CI_NODE_INDEX"
48+
- export NORMALIZED_NODE_TOTAL=${CI_NODE_TOTAL:-1}
49+
- ONE_INDEXED_NODE_INDEX=${CI_NODE_INDEX:-1}; export NORMALIZED_NODE_INDEX=$((ONE_INDEXED_NODE_INDEX - 1))
50+
- echo "NORMALIZED_NODE_TOTAL=$NORMALIZED_NODE_TOTAL , NORMALIZED_NODE_INDEX=$NORMALIZED_NODE_INDEX"
51+
3852
.gradle_build: &gradle_build
3953
image: ghcr.io/datadog/dd-trace-java-docker-build:${JAVA_BUILD_IMAGE_VERSION}-base
4054
stage: build
@@ -61,6 +75,7 @@ default:
6175
before_script:
6276
- export GRADLE_USER_HOME=`pwd`/.gradle
6377
- export GRADLE_ARGS=" --build-cache --stacktrace --no-daemon --parallel --max-workers=$GRADLE_WORKERS"
78+
- *normalize_node_index
6479
# for weird reasons, gradle will always "chmod 700" the .gradle folder
6580
# with Gitlab caching, .gradle is always owned by root and thus gradle's chmod invocation fails
6681
# This dance is a hack to have .gradle owned by the Gitlab runner user
@@ -117,10 +132,6 @@ test_published_artifacts:
117132
image: ghcr.io/datadog/dd-trace-java-docker-build:${JAVA_BUILD_IMAGE_VERSION}-7 # Needs Java7 for some tests
118133
stage: tests
119134
needs: [ build ]
120-
rules:
121-
- if: '$POPULATE_CACHE'
122-
when: never
123-
- when: on_success
124135
variables:
125136
BUILD_CACHE_TYPE: lib
126137
script:
@@ -140,26 +151,64 @@ test_published_artifacts:
140151
paths:
141152
- ./check_reports
142153

154+
.check_job:
155+
extends: .gradle_build
156+
needs: [ build ]
157+
stage: tests
158+
variables:
159+
BUILD_CACHE_TYPE: lib
160+
script:
161+
- ./gradlew $GRADLE_TARGET -PskipTests -PrunBuildSrcTests -PskipSpotless -PtaskPartitionCount=$NORMALIZED_NODE_TOTAL -PtaskPartition=$NORMALIZED_NODE_INDEX $GRADLE_ARGS
162+
after_script:
163+
- .circleci/collect_reports.sh --destination ./check_reports --move
164+
artifacts:
165+
when: always
166+
paths:
167+
- ./check_reports
168+
- '.gradle/daemon/*/*.out.log'
169+
170+
check_base:
171+
extends: .check_job
172+
variables:
173+
GRADLE_TARGET: ":baseCheck"
174+
175+
check_inst:
176+
extends: .check_job
177+
parallel: 4
178+
variables:
179+
GRADLE_TARGET: ":instrumentationCheck"
180+
181+
check_smoke:
182+
extends: .check_job
183+
parallel: 4
184+
variables:
185+
GRADLE_TARGET: ":smokeCheck"
186+
187+
check_profiling:
188+
extends: .check_job
189+
variables:
190+
GRADLE_TARGET: ":profilingCheck"
191+
192+
check_debugger:
193+
extends: .check_job
194+
variables:
195+
GRADLE_TARGET: ":debuggerCheck"
196+
143197
muzzle:
144198
extends: .gradle_build
145199
needs: [ build ]
146200
stage: tests
147201
parallel: 8
148202
rules:
149-
- if: '$POPULATE_CACHE'
150-
when: never
151-
- when: on_success
203+
- when: never
152204
variables:
153205
BUILD_CACHE_TYPE: test
154206
script:
155207
- export SKIP_BUILDSCAN="true"
156-
- echo CI_NODE_INDEX=$CI_NODE_INDEX
157-
- echo CI_NODE_TOTAL=CI_NODE_TOTAL
158208
- ./gradlew writeMuzzleTasksToFile $GRADLE_ARGS
159209
- sort workspace/build/muzzleTasks > sortedMuzzleTasks
160-
- split --number=l/$CI_NODE_TOTAL --suffix-length=1 --numeric-suffixes sortedMuzzleTasks muzzleSplit
161-
- export NODE_ZERO_INDEX=$((CI_NODE_INDEX - 1))
162-
- ./gradlew `cat muzzleSplit${NODE_ZERO_INDEX} | xargs` $GRADLE_ARGS
210+
- split --number=l/$NORMALIZED_NODE_TOTAL --suffix-length=1 --numeric-suffixes sortedMuzzleTasks muzzleSplit
211+
- ./gradlew `cat muzzleSplit${NORMALIZED_NODE_INDEX} | xargs` $GRADLE_ARGS
163212
after_script:
164213
- .circleci/collect_reports.sh
165214
artifacts:
@@ -185,12 +234,90 @@ muzzle-dep-report:
185234
- ./reports
186235
- '.gradle/daemon/*/*.out.log'
187236

237+
# In Gitlab, DD_* variables are set because the build runner is instrumented with Datadog telemetry
238+
# To have a pristine environment for the tests, these variables are saved before the test run and restored afterwards
239+
.prepare_test_env: &prepare_test_env
240+
- export gitlabVariables=("DD_SERVICE" "DD_ENTITY_ID" "DD_SITE" "DD_ENV" "DD_DATACENTER" "DD_PARTITION" "DD_CLOUDPROVIDER")
241+
- '[ ! -e pretest.env ] || rm pretest.env'
242+
- |
243+
for VARIABLE in "${gitlabVariables[@]}"
244+
do
245+
echo "export $VARIABLE=${!VARIABLE}" >> pretest.env
246+
unset "$VARIABLE"
247+
done
248+
249+
.restore_pretest_env: &restore_pretest_env
250+
- source pretest.env
251+
252+
.test_job:
253+
extends: .gradle_build
254+
image: ghcr.io/datadog/dd-trace-java-docker-build:$testJvm
255+
needs: [ build ]
256+
stage: tests
257+
variables:
258+
BUILD_CACHE_TYPE: lib
259+
GRADLE_PARAMS: ""
260+
CONTINUE_ON_FAILURE: "false"
261+
script:
262+
- >
263+
if [ "$PROFILE_TESTS" == "true" ] && [ "$testJvm" != "ibm8" ] && [ "$testJvm" != "oracle8" ];
264+
then
265+
export PROFILER_COMMAND="-XX:StartFlightRecording=settings=profile,filename=/tmp/${CI_JOB_NAME_SLUG}.jfr,dumponexit=true";
266+
fi
267+
- *prepare_test_env
268+
- export GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xms2G -Xmx2G $PROFILER_COMMAND -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp' -Ddatadog.forkedMaxHeapSize=768M -Ddatadog.forkedMinHeapSize=128M"
269+
- ./gradlew $GRADLE_TARGET $GRADLE_PARAMS -PtestJvm=$testJvm $GRADLE_ARGS --continue || $CONTINUE_ON_FAILURE
270+
after_script:
271+
- *restore_pretest_env
272+
- *set_datadog_api_keys
273+
- .circleci/collect_reports.sh
274+
- if [ "$PROFILE_TESTS" == "true" ]; then .circleci/collect_profiles.sh; fi
275+
- .circleci/collect_results.sh
276+
- .circleci/upload_ciapp.sh tests $testJvm
277+
# TODO Get APM Test Agent Trace Check Results
278+
artifacts:
279+
when: always
280+
paths:
281+
- ./reports.tar
282+
- ./profiles.tar
283+
- ./results
284+
- '.gradle/daemon/*/*.out.log'
285+
286+
agent_integration_tests:
287+
extends: .test_job
288+
variables:
289+
testJvm: "8"
290+
CI_AGENT_HOST: local-agent
291+
GRADLE_TARGET: "traceAgentTest"
292+
services:
293+
- name: datadog/agent:7.34.0
294+
alias: local-agent
295+
variables:
296+
DD_APM_ENABLED: "true"
297+
DD_BIND_HOST: "0.0.0.0"
298+
DD_API_KEY: "invalid_key_but_this_is_fine"
299+
188300
required:
189301
extends: .fan_in
190302
needs:
191-
- spotless
192-
- muzzle
193-
- test_published_artifacts
303+
- job: spotless
304+
optional: true
305+
- job: muzzle
306+
optional: true
307+
- job: test_published_artifacts
308+
optional: true
309+
- job: agent_integration_tests
310+
optional: true
311+
- job: check_base
312+
optional: true
313+
- job: check_inst
314+
optional: true
315+
- job: check_smoke
316+
optional: true
317+
- job: check_profiling
318+
optional: true
319+
- job: check_debugger
320+
optional: true
194321

195322
deploy_to_profiling_backend:
196323
stage: publish

dd-java-agent/agent-bootstrap/gradle.lockfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ commons-fileupload:commons-fileupload:1.5=jmhRuntimeClasspath,testCompileClasspa
3939
commons-io:commons-io:2.11.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
4040
de.thetaphi:forbiddenapis:3.8=compileClasspath,jmhCompileClasspath
4141
info.picocli:picocli:4.6.3=jmhRuntimeClasspath,testRuntimeClasspath
42-
io.sqreen:libsqreen:11.2.0=jmhRuntimeClasspath,testRuntimeClasspath
42+
io.sqreen:libsqreen:12.0.0=jmhRuntimeClasspath,testRuntimeClasspath
4343
javax.servlet:javax.servlet-api:3.1.0=jmhRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
4444
jaxen:jaxen:1.2.0=spotbugs
4545
jline:jline:2.14.6=jmhRuntimeClasspath,testRuntimeClasspath

0 commit comments

Comments
 (0)