/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.karaf.itest.blueprint;
import org.junit.Ignore;
import org.kie.karaf.itest.AbstractKarafIntegrationTest;
import org.kie.karaf.itest.beans.AbstractProcessWithPersistenceBean;
import org.kie.karaf.itest.beans.ProcessWithPersistenceDirectBean;
import org.kie.karaf.itest.beans.ProcessWithPersistenceEnvBean;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.process.ProcessInstance;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.karaf.options.LogLevelOption;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.ops4j.pax.exam.util.Filter;
import org.osgi.framework.Constants;
import javax.inject.Inject;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.ops4j.pax.exam.CoreOptions.streamBundle;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.*;
import static org.ops4j.pax.tinybundles.core.TinyBundles.bundle;
/**
* Tests starting a jBPM process using RuntimeManager with persistence enabled in Blueprint environment.
*/
@Ignore("JPA 2.1 not supported with Aries Blueprint - see https://issues.jboss.org/browse/DROOLS-1380")
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public class KieBlueprintjBPMPersistenceKarafIntegrationTest extends AbstractKarafIntegrationTest {
private static final String BLUEPRINT_XML_LOCATION = "/org/kie/karaf/itest/blueprint/processpersistence/kie-beans-blueprint-process-persistence.xml";
private static final String PERSISTENCE_XML_LOCATION = "/org/kie/karaf/itest/blueprint/processpersistence/persistence.xml";
private static final String DATASOURCE_XML_LOCATION = "/org/kie/karaf/itest/blueprint/processpersistence/datasource.xml";
private static final String KMODULE_XML_LOCATION = "/org/kie/karaf/itest/blueprint/processpersistence/kmodule.xml";
private static final String POM_PROPS_LOCATION = "/META-INF/maven/org.kie/kie-osgi/pom.properties";
private static final String DRL_LOCATION = "/blueprint_process_persistence/sampleRule.drl";
private static final String BPMN_LOCATION = "/blueprint_process_persistence/sampleProcess.bpmn2";
private static final String PROCESS_ID = "orderApproval";
@Inject
@Filter("(osgi.jndi.service.name=kiesession/sessionWithoutEnv)")
private KieSession processWithPersistenceNoEnv;
@Inject
@Filter("(osgi.jndi.service.name=kiesession/sessionWithEnv)")
private KieSession processWithPersistenceEnv;
@Test
public void testStartProcessNoEnv() throws Exception {
assertNotNull(processWithPersistenceNoEnv);
final ProcessInstance processInstance = processWithPersistenceNoEnv.startProcess(PROCESS_ID);
assertEquals("Unexpected process instance state.", ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
@Test
public void testStartProcessEnv() throws Exception {
assertNotNull(processWithPersistenceEnv);
final ProcessInstance processInstance = processWithPersistenceEnv.startProcess(PROCESS_ID);
assertEquals("Unexpected process instance state.", ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
@Configuration
public static Option[] configure() {
return new Option[]{
// Install Karaf Container
getKarafDistributionOption(),
// It is really nice if the container sticks around after the test so you can check the contents
// of the data directory when things go wrong.
keepRuntimeFolder(),
// Don't bother with local console output as it just ends up cluttering the logs
configureConsole().ignoreLocalConsole(),
// Force the log level to INFO so we have more details during the test. It defaults to WARN.
logLevel(LogLevelOption.LogLevel.WARN),
// Option to be used to do remote debugging
// debugConfiguration("5005", true),
// Load KIE features
loadKieFeatures("jndi", "transaction", "droolsjbpm-hibernate", "h2", "jbpm", "kie-aries-blueprint"),
// Create Datasource for the test
streamBundle(bundle()
.add("OSGI-INF/blueprint/datasource.xml",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource(DATASOURCE_XML_LOCATION))
.set(Constants.BUNDLE_SYMBOLICNAME, "Test-Blueprint-Datasource-Bundle")
.set(Constants.IMPORT_PACKAGE, "javax.transaction," +
"javax.sql," +
"org.apache.commons.dbcp.managed," +
"org.h2")
.build()).start(),
// Create a bundle with META-INF/blueprint/kie-beans-?.xml - this should be processed automatically by Blueprint
streamBundle(bundle()
.add("OSGI-INF/blueprint/kie-beans-blueprint-process-persistence.xml",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource(BLUEPRINT_XML_LOCATION))
// add persistence resources
.add("META-INF/persistence.xml",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource(PERSISTENCE_XML_LOCATION))
.add("META-INF/JBPMorm.xml",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource("/META-INF/JBPMorm.xml"))
.add("META-INF/Taskorm.xml",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource("/META-INF/Taskorm.xml"))
.add("META-INF/TaskAuditorm.xml",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource("/META-INF/TaskAuditorm.xml"))
// add kmodule resources
.add("blueprint_process_persistence/sampleRule.drl",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource(DRL_LOCATION))
.add("blueprint_process_persistence/sampleProcess.bpmn2",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource(BPMN_LOCATION))
.add("META-INF/kmodule.xml",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource(KMODULE_XML_LOCATION))
.add("META-INF/maven/kjar/pom.properties",
KieBlueprintjBPMPersistenceKarafIntegrationTest.class.getResource(POM_PROPS_LOCATION))
// add helper beans
.add(ProcessWithPersistenceDirectBean.class)
.add(ProcessWithPersistenceEnvBean.class)
.add(AbstractProcessWithPersistenceBean.class)
.set("Meta-Persistence", "META-INF/persistence.xml")
.set(Constants.IMPORT_PACKAGE, "org.kie.aries.blueprint," +
"org.kie.aries.blueprint.factorybeans," +
"org.kie.aries.blueprint.helpers," +
"org.kie.api," +
"org.kie.api.runtime," +
"org.kie.api.runtime.manager," +
"org.kie.api.runtime.process," +
"org.kie.api.task," +
"org.jbpm.persistence.processinstance," +
"org.jbpm.runtime.manager.impl," +
"org.jbpm.process.instance.impl," +
"org.jbpm.services.task.identity," +
"org.jbpm.services.task.impl.model," +
"org.kie.internal.runtime.manager.context," +
"javax.transaction," +
"javax.persistence," +
"*")
.set(Constants.BUNDLE_SYMBOLICNAME, "Test-Blueprint-Bundle")
.build()).start()
};
}
}