Skip to content

Commit e5ad0f5

Browse files
committed
fix(smoke-tests): Replace JAVA_TOOL_OPTIONS by jvm.options openliberty configuration file
JAVA_TOOL_OPTIONS is limited to 1024 characters and it starts reaching the limit.
1 parent 7c67b63 commit e5ad0f5

File tree

4 files changed

+87
-51
lines changed

4 files changed

+87
-51
lines changed

dd-smoke-tests/springboot-openliberty-20/src/test/groovy/datadog/smoketest/SpringBootOpenLibertySmokeTest.groovy

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import okhttp3.Request
77
import spock.lang.Requires
88
import spock.lang.Shared
99

10-
import java.util.stream.Collectors
10+
import java.nio.file.FileSystems
11+
import java.nio.file.Files
1112

1213
// This test currently fails on IBM JVMs
1314
@Requires({ !Platform.isJ9() })
@@ -24,30 +25,40 @@ class SpringBootOpenLibertySmokeTest extends AbstractServerSmokeTest {
2425
List<String> command = new ArrayList<>()
2526
command.add(javaPath())
2627

27-
command.addAll((String[]) ["-jar", openLibertyShadowJar, "--server.port=${httpPort}"])
28+
command.addAll("-jar", openLibertyShadowJar, "--server.port=${httpPort}" as String)
2829

29-
List<String> envParams = new ArrayList<>()
30-
envParams.addAll(defaultJavaProperties)
31-
envParams.addAll(
32-
"-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()},DDAgentWriter",
30+
List<String> jvmOptions = new ArrayList<>()
31+
jvmOptions.addAll(defaultJavaProperties)
32+
jvmOptions.addAll(
33+
"-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()},DDAgentWriter" as String,
3334
"-Ddd.jmxfetch.enabled=false",
3435
"-Ddd.appsec.enabled=true",
3536
"-Ddatadog.slf4j.simpleLogger.defaultLogLevel=debug",
3637
"-Dorg.slf4j.simpleLogger.defaultLogLevel=debug",
3738
"-Ddd.iast.enabled=true", "-Ddd.iast.request-sampling=100",
3839
"-Ddd.integration.spring-boot.enabled=true"
3940
)
40-
41-
42-
String javaToolOptions = envParams.stream().collect(Collectors.joining(" "))
43-
41+
injectOpenLibertyJvmOptions(jvmOptions)
4442

4543
ProcessBuilder processBuilder = new ProcessBuilder(command)
46-
processBuilder.environment().put("JAVA_TOOL_OPTIONS", javaToolOptions)
44+
processBuilder.environment().put('WLP_JAR_EXTRACT_ROOT', 'application')
4745
processBuilder.directory(new File(buildDirectory))
4846
return processBuilder
4947
}
5048

49+
void injectOpenLibertyJvmOptions(List<String> options) {
50+
def appUri = URI.create("jar:file:$openLibertyShadowJar")
51+
try (def fs = FileSystems.newFileSystem(appUri, [:])) {
52+
def jvmOptionFile = fs.getPath( 'wlp', 'usr', 'servers', 'defaultServer', 'jvm.options')
53+
try (def writer = Files.newBufferedWriter(jvmOptionFile)) {
54+
options.each {
55+
writer.write(it)
56+
writer.newLine()
57+
}
58+
}
59+
}
60+
}
61+
5162
@Override
5263
File createTemporaryFile() {
5364
return new File("${buildDirectory}/tmp/springboot-openliberty.out")

dd-smoke-tests/springboot-openliberty-20/src/test/groovy/datadog/smoketest/SpringBootOpenLibertySmokeVulnerabilityTest.groovy

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
package datadog.smoketest
22

3-
43
import datadog.trace.api.Platform
54
import datadog.trace.test.agent.decoder.DecodedSpan
65
import okhttp3.Request
76
import spock.lang.Requires
87
import spock.lang.Shared
98
import spock.util.concurrent.PollingConditions
109

10+
import java.nio.file.FileSystems
11+
import java.nio.file.Files
1112
import java.util.function.Function
12-
import java.util.stream.Collectors
1313

1414
// This test currently fails on IBM JVMs
1515
@Requires({ !Platform.isJ9() })
1616
class SpringBootOpenLibertySmokeVulnerabilityTest extends AbstractServerSmokeTest {
1717

18-
@Shared
19-
int totalInvocations = 100
20-
2118
@Shared
2219
String openLibertyShadowJar = System.getProperty("datadog.smoketest.openliberty.jar.path")
2320

@@ -26,29 +23,39 @@ class SpringBootOpenLibertySmokeVulnerabilityTest extends AbstractServerSmokeTes
2623
List<String> command = new ArrayList<>()
2724
command.add(javaPath())
2825

29-
command.addAll((String[]) ["-jar", openLibertyShadowJar, "--server.port=${httpPort}"])
26+
command.addAll("-jar", openLibertyShadowJar, "--server.port=${httpPort}" as String)
3027

31-
List<String> envParams = new ArrayList<>()
32-
envParams.addAll(defaultJavaProperties)
33-
envParams.addAll(
34-
"-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()},DDAgentWriter",
28+
List<String> jvmOptions = new ArrayList<>()
29+
jvmOptions.addAll(defaultJavaProperties)
30+
jvmOptions.addAll(
31+
"-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()},DDAgentWriter" as String,
3532
"-Ddd.jmxfetch.enabled=false",
3633
"-Ddd.appsec.enabled=true",
3734
"-Ddatadog.slf4j.simpleLogger.defaultLogLevel=debug",
3835
"-Dorg.slf4j.simpleLogger.defaultLogLevel=debug",
3936
"-Ddd.iast.enabled=true", "-Ddd.iast.request-sampling=100"
4037
)
41-
42-
43-
String javaToolOptions = envParams.stream().collect(Collectors.joining(" "))
44-
38+
injectOpenLibertyJvmOptions(jvmOptions)
4539

4640
ProcessBuilder processBuilder = new ProcessBuilder(command)
47-
processBuilder.environment().put("JAVA_TOOL_OPTIONS", javaToolOptions)
41+
processBuilder.environment().put('WLP_JAR_EXTRACT_ROOT', 'application')
4842
processBuilder.directory(new File(buildDirectory))
4943
return processBuilder
5044
}
5145

46+
void injectOpenLibertyJvmOptions(List<String> options) {
47+
def appUri = URI.create("jar:file:$openLibertyShadowJar")
48+
try (def fs = FileSystems.newFileSystem(appUri, [:])) {
49+
def jvmOptionFile = fs.getPath( 'wlp', 'usr', 'servers', 'defaultServer', 'jvm.options')
50+
try (def writer = Files.newBufferedWriter(jvmOptionFile)) {
51+
options.each {
52+
writer.write(it)
53+
writer.newLine()
54+
}
55+
}
56+
}
57+
}
58+
5259
@Override
5360
File createTemporaryFile() {
5461
return new File("${buildDirectory}/tmp/springboot-openliberty.out")

dd-smoke-tests/springboot-openliberty-23/src/test/groovy/datadog/smoketest/SpringBootOpenLibertySmokeTest.groovy

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import okhttp3.Request
77
import spock.lang.Requires
88
import spock.lang.Shared
99

10-
import java.util.stream.Collectors
10+
import java.nio.file.FileSystems
11+
import java.nio.file.Files
1112

1213
// This test currently fails on IBM JVMs
1314
@Requires({ !Platform.isJ9() })
@@ -26,10 +27,10 @@ class SpringBootOpenLibertySmokeTest extends AbstractServerSmokeTest {
2627

2728
command.addAll((String[]) ["-jar", openLibertyShadowJar, "--server.port=${httpPort}"])
2829

29-
List<String> envParams = new ArrayList<>()
30-
envParams.addAll(defaultJavaProperties)
31-
envParams.addAll([
32-
"-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()}:includeService,DDAgentWriter",
30+
List<String> jvmOptions = new ArrayList<>()
31+
jvmOptions.addAll(defaultJavaProperties)
32+
jvmOptions.addAll([
33+
"-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()}:includeService,DDAgentWriter" as String,
3334
"-Ddd.jmxfetch.enabled=false",
3435
"-Ddd.appsec.enabled=true",
3536
"-Ddatadog.slf4j.simpleLogger.defaultLogLevel=debug",
@@ -38,18 +39,27 @@ class SpringBootOpenLibertySmokeTest extends AbstractServerSmokeTest {
3839
"-Ddd.iast.request-sampling=100",
3940
"-Ddd.integration.spring-boot.enabled=true"
4041
])
41-
42-
43-
String javaToolOptions = envParams.stream().collect(Collectors.joining(" "))
44-
42+
injectOpenLibertyJvmOptions(jvmOptions)
4543

4644
ProcessBuilder processBuilder = new ProcessBuilder(command)
47-
System.err.println(javaToolOptions)
48-
processBuilder.environment().put("JAVA_TOOL_OPTIONS", javaToolOptions)
45+
processBuilder.environment().put('WLP_JAR_EXTRACT_ROOT', 'application')
4946
processBuilder.directory(new File(buildDirectory))
5047
return processBuilder
5148
}
5249

50+
void injectOpenLibertyJvmOptions(List<String> options) {
51+
def appUri = URI.create("jar:file:$openLibertyShadowJar")
52+
try (def fs = FileSystems.newFileSystem(appUri, [:])) {
53+
def jvmOptionFile = fs.getPath( 'wlp', 'usr', 'servers', 'defaultServer', 'jvm.options')
54+
try (def writer = Files.newBufferedWriter(jvmOptionFile)) {
55+
options.each {
56+
writer.write(it)
57+
writer.newLine()
58+
}
59+
}
60+
}
61+
}
62+
5363
@Override
5464
def inferServiceName() {
5565
false // will use spring properties

dd-smoke-tests/springboot-openliberty-23/src/test/groovy/datadog/smoketest/SpringBootOpenLibertySmokeVulnerabilityTest.groovy

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,14 @@ import spock.lang.Requires
88
import spock.lang.Shared
99
import spock.util.concurrent.PollingConditions
1010

11+
import java.nio.file.FileSystems
12+
import java.nio.file.Files
1113
import java.util.function.Function
12-
import java.util.stream.Collectors
1314

1415
// This test currently fails on IBM JVMs
1516
@Requires({ !Platform.isJ9() })
1617
class SpringBootOpenLibertySmokeVulnerabilityTest extends AbstractServerSmokeTest {
1718

18-
@Shared
19-
int totalInvocations = 100
20-
2119
@Shared
2220
String openLibertyShadowJar = System.getProperty("datadog.smoketest.openliberty.jar.path")
2321

@@ -26,29 +24,39 @@ class SpringBootOpenLibertySmokeVulnerabilityTest extends AbstractServerSmokeTes
2624
List<String> command = new ArrayList<>()
2725
command.add(javaPath())
2826

29-
command.addAll((String[]) ["-jar", openLibertyShadowJar, "--server.port=${httpPort}"])
27+
command.addAll("-jar", openLibertyShadowJar, "--server.port=${httpPort}" as String)
3028

31-
List<String> envParams = new ArrayList<>()
32-
envParams.addAll(defaultJavaProperties)
33-
envParams.addAll(
34-
"-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()},DDAgentWriter",
29+
List<String> jvmOptions = new ArrayList<>()
30+
jvmOptions.addAll(defaultJavaProperties)
31+
jvmOptions.addAll(
32+
"-Ddd.writer.type=MultiWriter:TraceStructureWriter:${output.getAbsolutePath()},DDAgentWriter" as String,
3533
"-Ddd.jmxfetch.enabled=false",
3634
"-Ddd.appsec.enabled=true",
3735
"-Ddatadog.slf4j.simpleLogger.defaultLogLevel=debug",
3836
"-Dorg.slf4j.simpleLogger.defaultLogLevel=debug",
3937
"-Ddd.iast.enabled=true", "-Ddd.iast.request-sampling=100"
4038
)
41-
42-
43-
String javaToolOptions = envParams.stream().collect(Collectors.joining(" "))
44-
39+
injectOpenLibertyJvmOptions(jvmOptions)
4540

4641
ProcessBuilder processBuilder = new ProcessBuilder(command)
47-
processBuilder.environment().put("JAVA_TOOL_OPTIONS", javaToolOptions)
42+
processBuilder.environment().put('WLP_JAR_EXTRACT_ROOT', 'application')
4843
processBuilder.directory(new File(buildDirectory))
4944
return processBuilder
5045
}
5146

47+
void injectOpenLibertyJvmOptions(List<String> options) {
48+
def appUri = URI.create("jar:file:$openLibertyShadowJar")
49+
try (def fs = FileSystems.newFileSystem(appUri, [:])) {
50+
def jvmOptionFile = fs.getPath( 'wlp', 'usr', 'servers', 'defaultServer', 'jvm.options')
51+
try (def writer = Files.newBufferedWriter(jvmOptionFile)) {
52+
options.each {
53+
writer.write(it)
54+
writer.newLine()
55+
}
56+
}
57+
}
58+
}
59+
5260
@Override
5361
File createTemporaryFile() {
5462
return new File("${buildDirectory}/tmp/springboot-openliberty.out")

0 commit comments

Comments
 (0)