Simply since the agent code doesn't run without java.instrument

This commit is contained in:
Laplie Anderson 2019-08-22 12:59:32 -04:00
parent 7a0ba452b8
commit fa378e16d3
11 changed files with 35 additions and 102 deletions

View File

@ -1,21 +0,0 @@
ext {
minJavaVersionForTests = JavaVersion.VERSION_1_9
}
apply from: "${rootDir}/gradle/java.gradle"
jar {
manifest {
attributes(
'Main-Class': 'datadog.smoketest.moduleapp.instrumentable.ModuleApplication'
)
}
}
jlink {
moduleName = 'datadog.smoketest.moduleapp.instrumentable'
options = ['--no-man-pages', '--no-header-files']
}
sourceCompatibility = "1.9"
targetCompatibility = "1.9"

View File

@ -1,11 +0,0 @@
package datadog.smoketest.moduleapp.instrumentable;
public class ModuleApplication {
public static void main(final String[] args) {
final String agentStatus = System.getProperty("dd.agent.status");
if (!"INSTALLED".equals(agentStatus)) {
throw new RuntimeException("Incorrect agent status: " + agentStatus);
}
}
}

View File

@ -1,3 +0,0 @@
module datadog.smoketest.moduleapp.instrumentable {
exports datadog.smoketest.moduleapp.instrumentable;
}

View File

@ -2,21 +2,34 @@ plugins {
id 'org.beryx.jlink' version '2.1.1' // latest version that doesn't have a Java 11+ warning
}
ext {
minJavaVersionForTests = JavaVersion.VERSION_1_9
}
apply from: "${rootDir}/gradle/java.gradle"
sourceCompatibility = "1.9"
targetCompatibility = "1.9"
jar {
manifest {
attributes(
'Main-Class': 'datadog.smoketest.moduleapp.ModuleApplication'
)
}
}
jlink {
moduleName = 'datadog.smoketest.moduleapp'
options = ['--no-man-pages', '--no-header-files', '--add-modules', 'java.instrument']
}
test {
dependsOn tasks.jlink
jvmArgs "-Ddatadog.smoketest.module.image=${jlink.imageDir.get()}"
}
dependencies {
testCompile project(':dd-smoke-tests')
}
Project main_project = project
subprojects { subProject ->
apply plugin: "org.beryx.jlink"
main_project.tasks.test.dependsOn subProject.tasks.jlink
main_project.tasks.test.jvmArgs "-Ddatadog.smoketest.${subProject.tasks.jlink.moduleName.get()}.image=${subProject.tasks.jlink.imageDir.get()}"
}

View File

@ -0,0 +1,7 @@
package datadog.smoketest.moduleapp;
public class ModuleApplication {
public static void main(final String[] args) throws InterruptedException {
Thread.sleep(600);
}
}

View File

@ -0,0 +1,3 @@
module datadog.smoketest.moduleapp {
exports datadog.smoketest.moduleapp;
}

View File

@ -4,27 +4,25 @@ import spock.lang.Timeout
import java.util.concurrent.TimeUnit
abstract class Java9ModulesSmokeTest extends AbstractSmokeTest {
class Java9ModulesSmokeTest extends AbstractSmokeTest {
// Estimate for the amount of time instrumentation plus some extra
private static final int TIMEOUT_SECS = 30
@Override
ProcessBuilder createProcessBuilder() {
println System.getProperties()
String imageDir = System.getProperty("datadog.smoketest.${moduleName}.image")
String imageDir = System.getProperty("datadog.smoketest.module.image")
assert imageDir != null
List<String> command = new ArrayList<>()
command.add(imageDir + "/bin/java")
command.addAll(defaultJavaProperties)
command.addAll((String[]) ["-m", "${moduleName}/${moduleName}.ModuleApplication"])
command.addAll((String[]) ["-m", "datadog.smoketest.moduleapp/datadog.smoketest.moduleapp.ModuleApplication"])
ProcessBuilder processBuilder = new ProcessBuilder(command)
processBuilder.directory(new File(buildDirectory))
}
abstract getModuleName()
// TODO: once java7 support is dropped use waitFor() with timeout call added in java8
// instead of timeout on test
@Timeout(value = TIMEOUT_SECS, unit = TimeUnit.SECONDS)
@ -33,19 +31,3 @@ abstract class Java9ModulesSmokeTest extends AbstractSmokeTest {
assert serverProcess.waitFor() == 0
}
}
class InstrumentableModuleTest extends Java9ModulesSmokeTest {
@Override
def getModuleName() {
return "datadog.smoketest.moduleapp.instrumentable"
}
}
class UninstrumentableModuleTest extends Java9ModulesSmokeTest {
@Override
def getModuleName() {
return "datadog.smoketest.moduleapp.uninstrumentable"
}
}

View File

@ -1,11 +0,0 @@
package datadog.smoketest.moduleapp.uninstrumentable;
public class ModuleApplication {
public static void main(final String[] args) {
final String agentStatus = System.getProperty("dd.agent.status");
if (!"NOT_INSTALLED".equals(agentStatus)) {
throw new RuntimeException("Incorrect agent status: " + agentStatus);
}
}
}

View File

@ -1,3 +0,0 @@
module datadog.smoketest.moduleapp.uninstrumentable {
exports datadog.smoketest.moduleapp.uninstrumentable;
}

View File

@ -1,21 +0,0 @@
ext {
minJavaVersionForTests = JavaVersion.VERSION_1_9
}
apply from: "${rootDir}/gradle/java.gradle"
jar {
manifest {
attributes(
'Main-Class': 'datadog.smoketest.moduleapp.uninstrumentable.ModuleApplication'
)
}
}
jlink {
moduleName = 'datadog.smoketest.moduleapp.uninstrumentable'
options = ['--no-man-pages', '--no-header-files']
}
sourceCompatibility = "1.9"
targetCompatibility = "1.9"

View File

@ -24,8 +24,6 @@ include ':dd-smoke-tests:springboot'
include ':dd-smoke-tests:wildfly'
include ':dd-smoke-tests:cli'
include ':dd-smoke-tests:java9-modules'
include ':dd-smoke-tests:java9-modules:instrumentable-module-app'
include ':dd-smoke-tests:java9-modules:uninstrumentable-module-app'
// instrumentation:
include ':dd-java-agent:instrumentation:akka-http-10.0'