use of com.oracle.bedrock.runtime.java.ClassPath in project oracle-bedrock by coherence-community.
the class LocalCoherenceClusterBuilderIT method shouldEstablishStorageAndProxyClusterWithCodeCoverage.
/**
* Ensure we can build and close a {@link CoherenceCluster}
* of storage enabled members with a proxy server when using code-coverage tools.
*/
@Test
public void shouldEstablishStorageAndProxyClusterWithCodeCoverage() throws Exception {
// determine the classpath of the JaCoCo runtime agent jar (should be something like jacocoagent-x.y.z.jar)
ClassPath jacocoPath = ClassPath.ofClass(RT.class);
// define a temp file name pattern for JaCoCo code coverage reports
String jacocoDestinationFileName = "jacoco-${bedrock.runtime.id}.exec";
File destinationFile = new File(System.getProperty("java.io.tmpdir"), jacocoDestinationFileName);
// define the JavaAgent for JaCoCo
JavaAgent javaAgent = JavaAgent.using(jacocoPath.toString(), "destfile=" + destinationFile + ",output=file,sessionid=${bedrock.runtime.id},dumponexit=true");
AvailablePortIterator availablePorts = LocalPlatform.get().getAvailablePorts();
Capture<Integer> clusterPort = new Capture<>(availablePorts);
CoherenceClusterBuilder builder = new CoherenceClusterBuilder();
builder.include(2, CoherenceClusterMember.class, DisplayName.of("storage"), ClusterPort.of(clusterPort), LocalStorage.enabled(), CacheConfig.of("test-cache-config.xml"), LocalHost.only(), ClusterName.of("Storage-Proxy"), javaAgent, RuntimeExit.withExitCode(0));
builder.include(1, CoherenceClusterMember.class, DisplayName.of("extend"), ClusterPort.of(clusterPort), LocalStorage.disabled(), CacheConfig.of("test-extend-proxy-config.xml"), LocalHost.only(), ClusterName.of("Storage-Proxy"), javaAgent, RuntimeExit.withExitCode(0));
try (CoherenceCluster cluster = builder.build(Console.system())) {
// ensure the cluster size is as expected
assertThat(invoking(cluster).getClusterSize(), is(3));
CoherenceClusterMember extendMember = cluster.get("extend-1");
assertThat(invoking(extendMember).isServiceRunning("ExtendTcpProxyService"), is(true));
for (CoherenceClusterMember storageMember : cluster.getAll("storage")) {
assertThat(invoking(storageMember).isServiceRunning("ExtendTcpProxyService"), is(false));
}
} catch (Exception e) {
e.printStackTrace();
Assertions.fail();
}
}
use of com.oracle.bedrock.runtime.java.ClassPath in project oracle-bedrock by coherence-community.
the class Maven method onLaunching.
@Override
public void onLaunching(Platform platform, MetaClass metaClass, OptionsByType optionsByType) {
// resolve the class path based on the required maven artifacts
try {
perform((system, session, repositories, scope) -> {
// we only filter based on the scope
DependencyFilter filter = DependencyFilterUtils.classpathFilter(scope);
// collect class paths for each resolved artifact
LinkedHashSet<ClassPath> artifactPaths = new LinkedHashSet<>();
for (Artifact artifact : artifacts.values()) {
CollectRequest collectRequest = new CollectRequest();
collectRequest.setRoot(new Dependency(artifact, scope));
collectRequest.setRepositories(repositories);
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, filter);
List<ArtifactResult> artifactResults = system.resolveDependencies(session, dependencyRequest).getArtifactResults();
for (ArtifactResult artifactResult : artifactResults) {
artifactPaths.add(ClassPath.ofFile(artifactResult.getArtifact().getFile()));
}
}
// define the ClassPath based on the artifact paths
ClassPath classPath = new ClassPath(artifactPaths);
// add the additional ClassPaths (when defined)
classPath = additionalClassPath == null ? classPath : new ClassPath(classPath, additionalClassPath);
optionsByType.add(classPath);
}, optionsByType);
} catch (RepositoryException e) {
throw new RuntimeException("Failed to resolve artifact", e);
}
}
use of com.oracle.bedrock.runtime.java.ClassPath in project oracle-bedrock by coherence-community.
the class JacocoProfile method onLaunching.
@Override
public void onLaunching(Platform platform, MetaClass metaClass, OptionsByType optionsByType) {
if (enabled && metaClass != null && JavaApplication.class.isAssignableFrom(metaClass.getImplementationClass(platform, optionsByType))) {
try {
// determine the classpath of the JaCoCo runtime agent jar (should be something like jacocoagent-x.y.z.jar)
ClassPath jacocoPath = ClassPath.ofClass(RT.class);
// define a JavaAgent for JaCoCo
JavaAgent javaAgent = JavaAgent.using(jacocoPath.toString(), parameters);
optionsByType.add(javaAgent);
} catch (Exception e) {
// ignored
}
}
}
use of com.oracle.bedrock.runtime.java.ClassPath in project oracle-bedrock by coherence-community.
the class MavenTest method shouldResolveSingleArtifactWithTransitiveDependency.
/**
* Ensure that {@link Maven} can resolve a single artifact (with a transitive dependency).
*/
@Test
public void shouldResolveSingleArtifactWithTransitiveDependency() {
LocalPlatform platform = LocalPlatform.get();
MetaClass metaClass = new JavaApplication.MetaClass();
OptionsByType optionsByType = OptionsByType.empty();
optionsByType.add(Maven.artifact("junit:junit:jar:4.12"));
Maven maven = optionsByType.get(Maven.class);
maven.onLaunching(platform, metaClass, optionsByType);
ClassPath classPath = optionsByType.getOrDefault(ClassPath.class, null);
assertThat(classPath, is(not(nullValue())));
assertThat(classPath.size(), is(2));
assertThat(classPath.toString(), containsString("junit-4.12.jar"));
assertThat(classPath.toString(), containsString("hamcrest-core-1.3.jar"));
}
use of com.oracle.bedrock.runtime.java.ClassPath in project oracle-bedrock by coherence-community.
the class TestClassesClassPathClassesTest method shouldLoadRunWithAnnotatedTestClass.
@Test
public void shouldLoadRunWithAnnotatedTestClass() throws Exception {
File folder = createClassesFolder(RunWithAnnotatedTest.class);
ClassPath classPath = ClassPath.ofFile(folder);
TestClasses.ClassPathClasses testClasses = new TestClasses.ClassPathClasses(classPath);
Set<Class<?>> classes = testClasses.resolveTestClasses();
assertThat(classes, is(notNullValue()));
assertThat(classes, containsInAnyOrder(RunWithAnnotatedTest.class));
}
Aggregations