Skip to content

Commit 0aadf20

Browse files
Merge pull request #6904 from DataDog/bbujon/ci-flaky-profiling
Fix profiling integration test app startup
2 parents 58cddb6 + 7a4bfb0 commit 0aadf20

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

dd-smoke-tests/profiling-integration-tests/src/test/java/datadog/smoketest/CodeHotspotsTest.java

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package datadog.smoketest;
22

33
import static datadog.smoketest.SmokeTestUtils.buildDirectory;
4+
import static datadog.smoketest.SmokeTestUtils.checkProcessSuccessfullyEnd;
45
import static datadog.smoketest.SmokeTestUtils.createProcessBuilder;
5-
import static org.junit.jupiter.api.Assertions.assertEquals;
66
import static org.junit.jupiter.api.Assertions.assertFalse;
77
import static org.junit.jupiter.api.Assertions.assertTrue;
88
import static org.junit.jupiter.api.Assertions.fail;
@@ -136,9 +136,7 @@ void testReactive(Duration meanServiceTime, int arrivalRate, double minCoverage)
136136
Long.toString(arrivalRate),
137137
Integer.toString(timeout))
138138
.start();
139-
140-
int ret = targetProcess.waitFor();
141-
assertEquals(0, ret);
139+
checkProcessSuccessfullyEnd(targetProcess, logFilePath);
142140

143141
long serviceRate = (long) (workers * 1_000_000_000d) / meanServiceTime.toNanos();
144142
double idleness = Math.max(0d, (serviceRate - arrivalRate) / (double) serviceRate);
@@ -179,9 +177,7 @@ void testBatch() throws Exception {
179177
Long.toString(meanServiceTimeNs),
180178
Integer.toString(timeout))
181179
.start();
182-
183-
int ret = targetProcess.waitFor();
184-
assertEquals(0, ret);
180+
checkProcessSuccessfullyEnd(targetProcess, logFilePath);
185181

186182
Files.walk(dumpDir)
187183
.filter(Files::isRegularFile)
@@ -213,9 +209,7 @@ void testSaturatedFanout() throws Exception {
213209
Long.toString(meanServiceTimeNs),
214210
Integer.toString(timeout))
215211
.start();
216-
217-
int ret = targetProcess.waitFor();
218-
assertEquals(0, ret);
212+
checkProcessSuccessfullyEnd(targetProcess, logFilePath);
219213

220214
Files.walk(dumpDir)
221215
.filter(Files::isRegularFile)
@@ -240,9 +234,7 @@ void testNativeLibrary(String libraryName) throws Exception {
240234
logFilePath,
241235
libraryName)
242236
.start();
243-
244-
int ret = targetProcess.waitFor();
245-
assertEquals(0, ret);
237+
checkProcessSuccessfullyEnd(targetProcess, logFilePath);
246238

247239
Files.walk(dumpDir)
248240
.filter(Files::isRegularFile)
@@ -287,9 +279,7 @@ private void runTestGenerativeStackTraces(String mode, int depth) throws Excepti
287279
"1000",
288280
mode)
289281
.start();
290-
291-
int ret = targetProcess.waitFor();
292-
assertEquals(0, ret);
282+
checkProcessSuccessfullyEnd(targetProcess, logFilePath);
293283

294284
Files.walk(dumpDir)
295285
.filter(Files::isRegularFile)

dd-smoke-tests/profiling-integration-tests/src/test/java/datadog/smoketest/SmokeTestUtils.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package datadog.smoketest;
22

3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
35
import datadog.trace.api.config.ProfilingConfig;
46
import java.io.File;
7+
import java.io.IOException;
8+
import java.nio.file.Files;
59
import java.nio.file.Path;
610
import java.util.ArrayList;
711
import java.util.Arrays;
@@ -59,17 +63,18 @@ static ProcessBuilder createProcessBuilder(
5963
"-XX:+IgnoreUnrecognizedVMOptions",
6064
"-XX:+UnlockCommercialFeatures",
6165
"-XX:+FlightRecorder",
62-
"-Ddd." + ProfilingConfig.PROFILING_TEMPLATE_OVERRIDE_FILE + "=" + templateOverride,
63-
"-cp",
64-
profilingShadowJar(),
65-
targetClass));
66+
"-Ddd."
67+
+ ProfilingConfig.PROFILING_TEMPLATE_OVERRIDE_FILE
68+
+ "="
69+
+ templateOverride));
6670
if (System.getenv("TEST_LIBASYNC") != null) {
6771
command.add(
6872
"-Ddd."
6973
+ ProfilingConfig.PROFILING_DATADOG_PROFILER_LIBPATH
7074
+ "="
7175
+ System.getenv("TEST_LIBASYNC"));
7276
}
77+
command.addAll(Arrays.asList("-cp", profilingShadowJar(), targetClass));
7378
command.addAll(Arrays.asList(args));
7479
final ProcessBuilder processBuilder = new ProcessBuilder(command);
7580
processBuilder.directory(new File(buildDirectory()));
@@ -97,4 +102,20 @@ static String agentShadowJar() {
97102
static String buildDirectory() {
98103
return System.getProperty("datadog.smoketest.builddir");
99104
}
105+
106+
static void checkProcessSuccessfullyEnd(final Process process, final Path log)
107+
throws InterruptedException {
108+
int exitCode = process.waitFor();
109+
if (exitCode != 0) {
110+
try {
111+
System.out.println(
112+
"=== Profiling application log start ==="
113+
+ String.join("\n", Files.readAllLines(log))
114+
+ "=== Profiling application log end ===");
115+
} catch (IOException e) {
116+
throw new RuntimeException(e);
117+
}
118+
}
119+
assertEquals(0, exitCode, "Failed to run profiling process, exited in error");
120+
}
100121
}

0 commit comments

Comments
 (0)