Skip to content

Commit 08ffeb7

Browse files
committed
Refactor to introduce Result class
Introducing Result class to replace just returning exitCode In subsequent change, Result class will also provide the forwarded JSON telemetry information
1 parent 83b0eaa commit 08ffeb7

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

dd-java-agent/src/test/groovy/datadog/trace/agent/InitializationTelemetryTest.groovy

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,33 @@ class InitializationTelemetryTest extends Specification {
1111
// In this case, the SecurityManager blocks loading of the Premain Class,
1212
// so the JVM is expected to terminate with an error
1313
expect:
14-
InitializationTelemetryCheck.runTestJvm(InitializationTelemetryCheck.BlockAgentLoading) != 0
14+
InitializationTelemetryCheck.runTestJvm(InitializationTelemetryCheck.BlockAgentLoading).exitCode != 0
1515
}
1616

1717
def "normal start-up"() {
1818
expect:
19-
InitializationTelemetryCheck.runTestJvm(null) == 0
19+
InitializationTelemetryCheck.runTestJvm(null).exitCode == 0
2020
}
2121

2222
def "incomplete agent start-up"() {
2323
// In this case, the SecurityManager blocks a custom permission that is checked by bytebuddy causing
2424
// agent initialization to fail. However, we should catch the exception allowing the application
2525
// to run normally.
2626
expect:
27-
InitializationTelemetryCheck.runTestJvm(InitializationTelemetryCheck.BlockByteBuddy) == 0
27+
InitializationTelemetryCheck.runTestJvm(InitializationTelemetryCheck.BlockByteBuddy).exitCode == 0
2828
}
2929

3030
def "block forwarder env var"() {
3131
// In this case, the SecurityManager blocks access to the forwarder environment variable,
3232
// so the tracer is unable to report initialization telemetry
3333
expect:
34-
InitializationTelemetryCheck.runTestJvm(InitializationTelemetryCheck.BlockForwarderEnvVar, true) == 0
34+
InitializationTelemetryCheck.runTestJvm(InitializationTelemetryCheck.BlockForwarderEnvVar, true).exitCode == 0
3535
}
3636

3737
def "block forwarder execution"() {
3838
// In this case, the SecurityManager blocks access to process execution, so the tracer is
3939
// unable to invoke the forwarder executable
4040
expect:
41-
InitializationTelemetryCheck.runTestJvm(InitializationTelemetryCheck.BlockForwarderExecution, true) == 0
41+
InitializationTelemetryCheck.runTestJvm(InitializationTelemetryCheck.BlockForwarderExecution, true).exitCode == 0
4242
}
4343
}

dd-java-agent/src/test/java/jvmbootstraptest/InitializationTelemetryCheck.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,24 +61,26 @@ protected boolean checkFileExecutePermission(FilePermission perm, Object ctx, St
6161
}
6262
}
6363

64-
public static final int runTestJvm(Class<? extends TestSecurityManager> securityManagerClass)
64+
public static final Result runTestJvm(Class<? extends TestSecurityManager> securityManagerClass)
6565
throws Exception {
6666
return runTestJvm(securityManagerClass, false);
6767
}
6868

69-
public static final int runTestJvm(
69+
public static final Result runTestJvm(
7070
Class<? extends TestSecurityManager> securityManagerClass, boolean printStreams)
7171
throws Exception {
7272
File jarFile =
7373
IntegrationTestUtils.createJarFileWithClasses(requiredClasses(securityManagerClass));
7474
try {
75-
return IntegrationTestUtils.runOnSeparateJvm(
75+
int exitCode = IntegrationTestUtils.runOnSeparateJvm(
7676
InitializationTelemetryCheck.class.getName(),
7777
InitializationTelemetryCheck.jvmArgs(securityManagerClass),
7878
InitializationTelemetryCheck.mainArgs(),
7979
InitializationTelemetryCheck.envVars(),
8080
jarFile,
8181
printStreams);
82+
83+
return new Result(exitCode);
8284
} finally {
8385
jarFile.delete();
8486
}
@@ -88,10 +90,13 @@ public static final Class<?>[] requiredClasses(
8890
Class<? extends TestSecurityManager> securityManagerClass) {
8991

9092
if (securityManagerClass == null) {
91-
return new Class<?>[] {InitializationTelemetryCheck.class};
93+
return new Class<?>[] {
94+
InitializationTelemetryCheck.class,
95+
InitializationTelemetryCheck.Result.class};
9296
} else {
9397
return new Class<?>[] {
9498
InitializationTelemetryCheck.class,
99+
InitializationTelemetryCheck.Result.class,
95100
securityManagerClass,
96101
TestSecurityManager.class,
97102
CustomSecurityManager.class
@@ -116,4 +121,12 @@ public static final Map<String, String> envVars() {
116121
envVars.put("DD_TELEMETRY_FORWARDER_PATH", "/dummy/path");
117122
return envVars;
118123
}
124+
125+
public static final class Result {
126+
public final int exitCode;
127+
128+
public Result(int exitCode) {
129+
this.exitCode = exitCode;
130+
}
131+
}
119132
}

0 commit comments

Comments
 (0)