package org.camunda.bpm.extension.osgi.itest; import static org.ops4j.pax.exam.CoreOptions.*; import javax.inject.Inject; import javax.sql.DataSource; import org.h2.jdbcx.JdbcDataSource; import org.ops4j.pax.exam.ConfigurationFactory; import org.ops4j.pax.exam.CoreOptions; import org.ops4j.pax.exam.Option; import org.ops4j.pax.exam.OptionUtils; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleException; /** * This class sets up the common environment for all integration tests. * <p/> * This class is also referenced as default configuration in<br/> * <code> * src/test/resources/META-INF/services/org.ops4j.pax.exam.ConfigurationFactory * </code> * * @author Ronny Bräunlich */ public class OSGiTestEnvironment implements ConfigurationFactory { @Inject protected BundleContext ctx; @Override public Option[] createConfiguration() { Option[] camundaBundles = options( // camunda core mavenBundle("org.camunda.bpm", "camunda-engine").versionAsInProject(), mavenBundle("org.camunda.bpm.dmn", "camunda-engine-feel-api").versionAsInProject(), mavenBundle("org.camunda.bpm.dmn", "camunda-engine-feel-juel").versionAsInProject(), mavenBundle("org.camunda.bpm.dmn", "camunda-engine-dmn").versionAsInProject(), mavenBundle("org.camunda.bpm.model", "camunda-bpmn-model").versionAsInProject(), mavenBundle("org.camunda.bpm.model", "camunda-cmmn-model").versionAsInProject(), mavenBundle("org.camunda.bpm.model", "camunda-xml-model").versionAsInProject(), mavenBundle("org.camunda.bpm.model", "camunda-dmn-model").versionAsInProject(), mavenBundle("org.camunda.commons", "camunda-commons-typed-values").versionAsInProject(), mavenBundle("org.camunda.commons", "camunda-commons-logging").versionAsInProject(), mavenBundle("org.camunda.commons", "camunda-commons-utils").versionAsInProject(), // camunda core dependencies mavenBundle("joda-time", "joda-time").versionAsInProject(), mavenBundle("com.h2database", "h2").versionAsInProject(), mavenBundle("org.mybatis", "mybatis").versionAsInProject(), mavenBundle("com.fasterxml.uuid", "java-uuid-generator").versionAsInProject(), mavenBundle("de.odysseus.juel", "juel-api").versionAsInProject(), mavenBundle("de.odysseus.juel", "juel-impl").versionAsInProject(), mavenBundle("org.slf4j", "slf4j-api", "1.7.7"), mavenBundle("ch.qos.logback", "logback-core", "1.1.2"), mavenBundle("ch.qos.logback", "logback-classic", "1.1.2"), //camunda osgi mavenBundle("org.camunda.bpm.extension.osgi", "camunda-bpm-osgi").versionAsInProject(), //camunda osgi dependencies mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager").versionAsInProject(), // make sure compiled classes from src/main are included bundle("reference:file:target/classes")); return OptionUtils.combine( camundaBundles, CoreOptions.junitBundles() ); } protected Bundle getBundle(String bundleSymbolicName) { for (Bundle bundle : ctx.getBundles()) { if (bundle.getSymbolicName() != null && bundle.getSymbolicName().equals(bundleSymbolicName)) { return bundle; } } return null; } protected Bundle startBundle(String bundleSymbolicName) throws BundleException { Bundle bundle = getBundle(bundleSymbolicName); bundle.start(); return bundle; } /** * Creates a h2 in memory datasource for the tests. */ public DataSource createDatasource(){ JdbcDataSource dataSource = new JdbcDataSource(); dataSource.setURL("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"); dataSource.setUser("sa"); dataSource.setPassword(""); return dataSource; } }