Skip to content

Commit 5794d3e

Browse files
Merge branch 'master' into daniel.mohedano/smoke-test-latest-resolution
2 parents cf555b6 + dee7cdf commit 5794d3e

75 files changed

Lines changed: 700 additions & 628 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.

.claude/skills/migrate-groovy-to-java/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ Migrate test Groovy files to Java using JUnit 5
1414
When converting Groovy code to Java code, make sure that:
1515
- The Java code generated is compatible with JDK 8
1616
- When translating Spock tests, favor using `@CsvSource` with `|` delimiters
17-
- When using `@MethodSource`, name the arguments method by appending `Arguments` using camelCase to the test method name (e.g. `testMethodArguments`)
18-
- Ensure parameterized test names are human-readable (i.e. no hashcodes); instead add a description string as the first `Arguments.of(...)` value or index the test case
17+
- 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.
18+
- 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
1919
- When converting tuples, create a light dedicated structure instead to keep the typing system
2020
- Instead of checking a state and throwing an exception, use JUnit asserts
2121
- Do not wrap checked exceptions and throw a Runtime exception; prefer adding a throws clause at method declaration

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ out/
6060

6161
# Others #
6262
##########
63+
/dumps
6364
/logs/*
6465
/bin
6566
/out

.gitlab/ci_visibility_generate_job.sh

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,19 @@ if [ -z "$pr_number" ]; then
4242
exit 0
4343
fi
4444

45-
echo "PR #${pr_number} found, checking labels..."
45+
echo "PR #${pr_number} found, checking target branch..."
46+
set +e
47+
base_branch=$(gh pr view "$pr_number" --repo DataDog/dd-trace-java --json baseRefName --jq '.baseRefName' 2>&1)
48+
base_branch_status=$?
49+
set -e
50+
51+
if [ $base_branch_status -eq 0 ] && [[ "$base_branch" == release/* ]]; then
52+
echo "PR #$pr_number targets release branch '$base_branch' - skipping trigger"
53+
add_dummy_job
54+
exit 0
55+
fi
56+
57+
echo "Checking labels..."
4658
set +e
4759
labels=$(gh pr view "$pr_number" --repo DataDog/dd-trace-java --json labels --jq '.labels[].name' 2>&1)
4860
labels_status=$?

buildSrc/call-site-instrumentation-plugin/src/test/java/datadog/trace/plugin/csi/impl/TypeResolverPoolTest.java

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,86 +11,57 @@
1111

1212
class TypeResolverPoolTest {
1313

14+
TypeResolverPool resolver = new TypeResolverPool();
15+
1416
@Test
1517
void testResolvePrimitive() {
16-
TypeResolverPool resolver = new TypeResolverPool();
17-
18-
Class<?> result = resolver.resolveType(Type.INT_TYPE);
19-
20-
assertEquals(int.class, result);
18+
assertEquals(int.class, resolver.resolveType(Type.INT_TYPE));
2119
}
2220

2321
@Test
2422
void testResolvePrimitiveArray() {
25-
TypeResolverPool resolver = new TypeResolverPool();
2623
Type type = Type.getType("[I");
27-
28-
Class<?> result = resolver.resolveType(type);
29-
30-
assertEquals(int[].class, result);
24+
assertEquals(int[].class, resolver.resolveType(type));
3125
}
3226

3327
@Test
3428
void testResolvePrimitiveMultidimensionalArray() {
35-
TypeResolverPool resolver = new TypeResolverPool();
3629
Type type = Type.getType("[[[I");
37-
38-
Class<?> result = resolver.resolveType(type);
39-
40-
assertEquals(int[][][].class, result);
30+
assertEquals(int[][][].class, resolver.resolveType(type));
4131
}
4232

4333
@Test
4434
void testResolveClass() {
45-
TypeResolverPool resolver = new TypeResolverPool();
4635
Type type = Type.getType(String.class);
47-
48-
Class<?> result = resolver.resolveType(type);
49-
50-
assertEquals(String.class, result);
36+
assertEquals(String.class, resolver.resolveType(type));
5137
}
5238

5339
@Test
5440
void testResolveClassArray() {
55-
TypeResolverPool resolver = new TypeResolverPool();
5641
Type type = Type.getType(String[].class);
57-
58-
Class<?> result = resolver.resolveType(type);
59-
60-
assertEquals(String[].class, result);
42+
assertEquals(String[].class, resolver.resolveType(type));
6143
}
6244

6345
@Test
6446
void testResolveClassMultidimensionalArray() {
65-
TypeResolverPool resolver = new TypeResolverPool();
6647
Type type = Type.getType(String[][][].class);
67-
68-
Class<?> result = resolver.resolveType(type);
69-
70-
assertEquals(String[][][].class, result);
48+
assertEquals(String[][][].class, resolver.resolveType(type));
7149
}
7250

7351
@Test
7452
void testTypeResolverFromMethod() {
75-
TypeResolverPool resolver = new TypeResolverPool();
7653
Type type =
7754
Type.getMethodType(
7855
Type.getType(String[].class), Type.getType(String.class), Type.getType(String.class));
79-
80-
Class<?> result = resolver.resolveType(type.getReturnType());
81-
82-
assertEquals(String[].class, result);
56+
assertEquals(String[].class, resolver.resolveType(type.getReturnType()));
8357
}
8458

8559
@Test
8660
void testInheritedMethods() throws Exception {
87-
TypeResolverPool resolver = new TypeResolverPool();
8861
Type owner = Type.getType(HttpServletRequest.class);
8962
String name = "getParameter";
9063
Type descriptor = Type.getMethodType(Type.getType(String.class), Type.getType(String.class));
91-
9264
Method result = (Method) resolver.resolveMethod(new MethodType(owner, name, descriptor));
93-
9465
assertEquals(ServletRequest.class.getDeclaredMethod("getParameter", String.class), result);
9566
}
9667
}

buildSrc/call-site-instrumentation-plugin/src/test/java/datadog/trace/plugin/csi/impl/ext/IastExtensionTest.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import datadog.trace.plugin.csi.impl.assertion.CallSiteAssert;
2323
import datadog.trace.plugin.csi.impl.ext.tests.IastExtensionCallSite;
2424
import java.io.File;
25+
import java.io.IOException;
2526
import java.lang.reflect.Method;
2627
import java.nio.file.Files;
2728
import java.nio.file.Path;
@@ -46,12 +47,15 @@ class IastExtensionTest extends BaseCsiPluginTest {
4647

4748
@BeforeEach
4849
void setup() throws Exception {
49-
targetFolder = buildDir.toPath().resolve("target");
50-
Files.createDirectories(targetFolder);
51-
projectFolder = buildDir.toPath().resolve("project");
52-
Files.createDirectories(projectFolder);
53-
srcFolder = projectFolder.resolve("src/main/java");
54-
Files.createDirectories(srcFolder);
50+
targetFolder = createFolder("target");
51+
projectFolder = createFolder("project");
52+
srcFolder = createFolder("src/main/java");
53+
}
54+
55+
private Path createFolder(String folderName) throws IOException {
56+
Path folder = buildDir.toPath().resolve(folderName);
57+
Files.createDirectories(folder);
58+
return folder;
5559
}
5660

5761
@ParameterizedTest

components/json/src/test/java/datadog/json/JsonMapperTest.java

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import static java.util.Collections.emptyMap;
55
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
66
import static org.junit.jupiter.api.Assertions.assertEquals;
7+
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
78
import static org.junit.jupiter.api.Assertions.assertThrows;
89
import static org.junit.jupiter.api.Assertions.assertTrue;
10+
import static org.junit.jupiter.params.provider.Arguments.arguments;
911

1012
import java.io.IOException;
1113
import java.util.ArrayList;
@@ -24,7 +26,8 @@ class JsonMapperTest {
2426

2527
@ParameterizedTest(name = "test mapping to JSON object: {0}")
2628
@MethodSource("testMappingToJsonObjectArguments")
27-
void testMappingToJsonObject(String testCase, Map<String, Object> input, String expected)
29+
void testMappingToJsonObject(
30+
@SuppressWarnings("unused") String testCase, Map<String, Object> input, String expected)
2831
throws IOException {
2932
String json = JsonMapper.toJson(input);
3033
assertEquals(expected, json);
@@ -42,7 +45,7 @@ void testMappingToJsonObject(String testCase, Map<String, Object> input, String
4245
if (expectedValue instanceof UnsupportedType) {
4346
assertEquals(expectedValue.toString(), parsedValue);
4447
} else if (expectedValue instanceof Float) {
45-
assertTrue(parsedValue instanceof Double);
48+
assertInstanceOf(Double.class, parsedValue);
4649
assertEquals((Float) expectedValue, (Double) parsedValue, 0.001);
4750
} else {
4851
assertEquals(expectedValue, parsedValue);
@@ -74,15 +77,15 @@ static Stream<Arguments> testMappingToJsonObjectArguments() {
7477
complexMap.put("key8", new UnsupportedType());
7578

7679
return Stream.of(
77-
Arguments.of("null input", null, "{}"),
78-
Arguments.of("empty map", new HashMap<>(), "{}"),
79-
Arguments.of("single entry", singleEntry, "{\"key1\":\"value1\"}"),
80-
Arguments.of("two entries", twoEntries, "{\"key1\":\"value1\",\"key2\":\"value2\"}"),
81-
Arguments.of(
80+
arguments("null input", null, "{}"),
81+
arguments("empty map", new HashMap<>(), "{}"),
82+
arguments("single entry", singleEntry, "{\"key1\":\"value1\"}"),
83+
arguments("two entries", twoEntries, "{\"key1\":\"value1\",\"key2\":\"value2\"}"),
84+
arguments(
8285
"quoted entries",
8386
quotedEntries,
8487
"{\"key1\":\"va\\\"lu\\\"e1\",\"ke\\\"y2\":\"value2\"}"),
85-
Arguments.of(
88+
arguments(
8689
"complex map",
8790
complexMap,
8891
"{\"key1\":null,\"key2\":\"bar\",\"key3\":3,\"key4\":3456789123,\"key5\":3.142,\"key6\":3.141592653589793,\"key7\":true,\"key8\":\"toString\"}"));
@@ -96,8 +99,7 @@ void testMappingToMapFromEmptyJsonObject(String json) throws IOException {
9699
}
97100

98101
static Stream<Arguments> testMappingToMapFromEmptyJsonObjectArguments() {
99-
return Stream.of(
100-
Arguments.of((Object) null), Arguments.of("null"), Arguments.of(""), Arguments.of("{}"));
102+
return Stream.of(arguments((Object) null), arguments("null"), arguments(""), arguments("{}"));
101103
}
102104

103105
@ParameterizedTest(name = "test mapping to Map from non-object JSON: {0}")
@@ -118,11 +120,11 @@ void testMappingIterableToJsonArray(List<String> input, String expected) throws
118120

119121
static Stream<Arguments> testMappingIterableToJsonArrayArguments() {
120122
return Stream.of(
121-
Arguments.of(null, "[]"),
122-
Arguments.of(new ArrayList<>(), "[]"),
123-
Arguments.of(Arrays.asList("value1"), "[\"value1\"]"),
124-
Arguments.of(Arrays.asList("value1", "value2"), "[\"value1\",\"value2\"]"),
125-
Arguments.of(Arrays.asList("va\"lu\"e1", "value2"), "[\"va\\\"lu\\\"e1\",\"value2\"]"));
123+
arguments(null, "[]"),
124+
arguments(new ArrayList<>(), "[]"),
125+
arguments(Arrays.asList("value1"), "[\"value1\"]"),
126+
arguments(Arrays.asList("value1", "value2"), "[\"value1\",\"value2\"]"),
127+
arguments(Arrays.asList("va\"lu\"e1", "value2"), "[\"va\\\"lu\\\"e1\",\"value2\"]"));
126128
}
127129

128130
@ParameterizedTest(name = "test mapping array to JSON array: {0}")
@@ -138,11 +140,11 @@ void testMappingArrayToJsonArray(String testCase, String[] input, String expecte
138140

139141
static Stream<Arguments> testMappingArrayToJsonArrayArguments() {
140142
return Stream.of(
141-
Arguments.of("null input", (Object) null, "[]"),
142-
Arguments.of("empty array", new String[] {}, "[]"),
143-
Arguments.of("single element", new String[] {"value1"}, "[\"value1\"]"),
144-
Arguments.of("two elements", new String[] {"value1", "value2"}, "[\"value1\",\"value2\"]"),
145-
Arguments.of(
143+
arguments("null input", (Object) null, "[]"),
144+
arguments("empty array", new String[] {}, "[]"),
145+
arguments("single element", new String[] {"value1"}, "[\"value1\"]"),
146+
arguments("two elements", new String[] {"value1", "value2"}, "[\"value1\",\"value2\"]"),
147+
arguments(
146148
"escaped quotes",
147149
new String[] {"va\"lu\"e1", "value2"},
148150
"[\"va\\\"lu\\\"e1\",\"value2\"]"));
@@ -156,8 +158,7 @@ void testMappingToListFromEmptyJsonObject(String json) throws IOException {
156158
}
157159

158160
static Stream<Arguments> testMappingToListFromEmptyJsonObjectArguments() {
159-
return Stream.of(
160-
Arguments.of((Object) null), Arguments.of("null"), Arguments.of(""), Arguments.of("[]"));
161+
return Stream.of(arguments((Object) null), arguments("null"), arguments(""), arguments("[]"));
161162
}
162163

163164
@ParameterizedTest(name = "test mapping to JSON string: {0}")
@@ -169,20 +170,20 @@ void testMappingToJsonString(String input, String expected) {
169170

170171
static Stream<Arguments> testMappingToJsonStringArguments() {
171172
return Stream.of(
172-
Arguments.of((Object) null, ""),
173-
Arguments.of("", ""),
174-
Arguments.of(String.valueOf((char) 4096), "\"\\u1000\""),
175-
Arguments.of(String.valueOf((char) 256), "\"\\u0100\""),
176-
Arguments.of(String.valueOf((char) 128), "\"\\u0080\""),
177-
Arguments.of("\b", "\"\\b\""),
178-
Arguments.of("\t", "\"\\t\""),
179-
Arguments.of("\n", "\"\\n\""),
180-
Arguments.of("\f", "\"\\f\""),
181-
Arguments.of("\r", "\"\\r\""),
182-
Arguments.of("\"", "\"\\\"\""),
183-
Arguments.of("/", "\"\\/\""),
184-
Arguments.of("\\", "\"\\\\\""),
185-
Arguments.of("a", "\"a\""));
173+
arguments((Object) null, ""),
174+
arguments("", ""),
175+
arguments(String.valueOf((char) 4096), "\"\\u1000\""),
176+
arguments(String.valueOf((char) 256), "\"\\u0100\""),
177+
arguments(String.valueOf((char) 128), "\"\\u0080\""),
178+
arguments("\b", "\"\\b\""),
179+
arguments("\t", "\"\\t\""),
180+
arguments("\n", "\"\\n\""),
181+
arguments("\f", "\"\\f\""),
182+
arguments("\r", "\"\\r\""),
183+
arguments("\"", "\"\\\"\""),
184+
arguments("/", "\"\\/\""),
185+
arguments("\\", "\"\\\\\""),
186+
arguments("a", "\"a\""));
186187
}
187188

188189
private static class UnsupportedType {

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ commons-io:commons-io:2.20.0=spotbugs
5252
de.thetaphi:forbiddenapis:3.10=compileClasspath
5353
io.github.java-diff-utils:java-diff-utils:4.12=testRuntimeClasspath
5454
io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath
55+
io.micrometer:micrometer-commons:1.12.0=testRuntimeClasspath
56+
io.micrometer:micrometer-observation:1.12.0=testRuntimeClasspath
5557
jakarta.annotation:jakarta.annotation-api:1.3.5=testCompileClasspath,testRuntimeClasspath
5658
jaxen:jaxen:2.0.0=spotbugs
5759
junit:junit:4.12=testCompileClasspath,testRuntimeClasspath
@@ -157,12 +159,16 @@ org.springframework.boot:spring-boot-starter-web:2.3.5.RELEASE=testCompileClassp
157159
org.springframework.boot:spring-boot-starter:2.3.5.RELEASE=testCompileClasspath,testRuntimeClasspath
158160
org.springframework.boot:spring-boot:2.3.5.RELEASE=testCompileClasspath,testRuntimeClasspath
159161
org.springframework:spring-aop:5.2.10.RELEASE=testCompileClasspath,testRuntimeClasspath
160-
org.springframework:spring-beans:5.2.10.RELEASE=testCompileClasspath,testRuntimeClasspath
162+
org.springframework:spring-beans:5.2.10.RELEASE=testCompileClasspath
163+
org.springframework:spring-beans:6.1.0=testRuntimeClasspath
161164
org.springframework:spring-context:5.2.10.RELEASE=testCompileClasspath,testRuntimeClasspath
162-
org.springframework:spring-core:5.2.10.RELEASE=testCompileClasspath,testRuntimeClasspath
165+
org.springframework:spring-core:5.2.10.RELEASE=testCompileClasspath
166+
org.springframework:spring-core:6.1.0=testRuntimeClasspath
163167
org.springframework:spring-expression:5.2.10.RELEASE=testCompileClasspath,testRuntimeClasspath
164-
org.springframework:spring-jcl:5.2.10.RELEASE=testCompileClasspath,testRuntimeClasspath
165-
org.springframework:spring-web:5.2.10.RELEASE=testCompileClasspath,testRuntimeClasspath
168+
org.springframework:spring-jcl:5.2.10.RELEASE=testCompileClasspath
169+
org.springframework:spring-jcl:6.1.0=testRuntimeClasspath
170+
org.springframework:spring-web:5.2.10.RELEASE=testCompileClasspath
171+
org.springframework:spring-web:6.1.0=testRuntimeClasspath
166172
org.springframework:spring-webmvc:5.2.10.RELEASE=testCompileClasspath,testRuntimeClasspath
167173
org.xmlresolver:xmlresolver:5.3.3=spotbugs
168174
org.yaml:snakeyaml:1.26=testCompileClasspath,testRuntimeClasspath

0 commit comments

Comments
 (0)