package org.camunda.bpm.extension.osgi.karaf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import static org.ops4j.pax.exam.CoreOptions.maven;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFileExtend;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
import java.io.File;
import javax.inject.Inject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.options.MavenArtifactUrlReference;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public class KarafMinimalFeatureIntegrationTest {
@Inject
protected BundleContext ctx;
@Configuration
public Option[] config() {
MavenArtifactUrlReference karafUrl =
maven()
.groupId("org.apache.karaf")
.artifactId("apache-karaf")
.type("zip")
.versionAsInProject();
return new Option[] {
// logLevel(LogLevel.TRACE),
// debugConfiguration("5005", true),
karafDistributionConfiguration().frameworkUrl(karafUrl)
.unpackDirectory(new File("target/exam"))
// .useDeployFolder(false)
,
// We use this option to allow the container to use artifacts found in private / local repo.
editConfigurationFileExtend("etc/org.ops4j.pax.url.mvn.cfg",
"org.ops4j.pax.url.mvn.repositories",
"file:${maven.repo.local}@id=mavenlocalrepo@snapshots"),
editConfigurationFileExtend("etc/org.ops4j.pax.url.mvn.cfg",
"org.ops4j.pax.url.mvn.localRepository",
"${maven.repo.local}"),
editConfigurationFileExtend("etc/system.properties",
"maven.repo.local",
System.getProperty("maven.repo.local", "")), keepRuntimeFolder(),
features(new File("target/classes/features.xml").toURI().toString(),
"camunda-bpm-karaf-feature-minimal")
};
}
@Test
public void startCamundaOsgiBundle() throws BundleException {
assertThat(ctx, is(notNullValue()));
Bundle[] bundles = ctx.getBundles();
boolean found = false;
for (Bundle b : bundles) {
if (b.getSymbolicName().equals("org.camunda.bpm.extension.osgi")) {
b.start();
found = true;
}
}
if (!found) {
fail("Couldn't find bundle");
}
}
}