diff options
author | Christian Wagner <c.wagner@datentechnik-innovation.com> | 2015-02-06 09:12:22 +0100 |
---|---|---|
committer | Christian Wagner <c.wagner@datentechnik-innovation.com> | 2015-02-06 09:12:22 +0100 |
commit | 01b98af095d8b7f4c33b89e321b3c4c17c597307 (patch) | |
tree | b14bca309fc4504b1ef6ebb698c89c540d775aa0 | |
parent | 859f8eb5138ee33380ccc31cdfb03e292a2bb8fc (diff) | |
download | moa-id-spss-01b98af095d8b7f4c33b89e321b3c4c17c597307.tar.gz moa-id-spss-01b98af095d8b7f4c33b89e321b3c4c17c597307.tar.bz2 moa-id-spss-01b98af095d8b7f4c33b89e321b3c4c17c597307.zip |
adjust process engine tests to process instance persistence
5 files changed, 119 insertions, 44 deletions
diff --git a/id/server/idserverlib/pom.xml b/id/server/idserverlib/pom.xml index 102bec7bd..15a1e8cfc 100644 --- a/id/server/idserverlib/pom.xml +++ b/id/server/idserverlib/pom.xml @@ -419,6 +419,13 @@ <scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.4.178</version>
+ <scope>runtime</scope>
+ </dependency>
+
<!-- tools -->
<dependency>
<groupId>org.apache.commons</groupId>
diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java index 57b1d2a3a..5355f14d3 100644 --- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java +++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest.java @@ -5,20 +5,27 @@ import static org.junit.Assert.*; import java.io.IOException; import java.io.InputStream; +import java.util.Properties; +import org.hibernate.cfg.Configuration; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils; +import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils; +import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore; +import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException; import at.gv.egovernment.moa.id.process.ProcessDefinitionParserException; import at.gv.egovernment.moa.id.process.ProcessEngine; import at.gv.egovernment.moa.id.process.ProcessEngineImpl; import at.gv.egovernment.moa.id.process.ProcessExecutionException; import at.gv.egovernment.moa.id.process.ProcessInstance; import at.gv.egovernment.moa.id.process.api.ExecutionContext; +import at.gv.egovernment.moa.id.process.dao.ProcessInstanceStore; import at.gv.egovernment.moa.id.process.spring.SpringExpressionEvaluator; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * Tests the process engine using processes based on Spring EL referencing the process context and further Spring beans. @@ -35,7 +42,7 @@ public class SpringExpressionAwareProcessEngineTest { @BeforeClass public static void init() throws IOException, ProcessDefinitionParserException { - + pe = new ProcessEngineImpl(); ((ProcessEngineImpl) pe).setTransitionConditionExpressionEvaluator(new SpringExpressionEvaluator()); try (InputStream in = SpringExpressionAwareProcessEngineTest.class.getResourceAsStream("SampleProcessDefinitionWithExpression1.xml")) { @@ -44,29 +51,56 @@ public class SpringExpressionAwareProcessEngineTest { try (InputStream in = SpringExpressionAwareProcessEngineTest.class.getResourceAsStream("SampleProcessDefinitionForSAML1Authentication.xml")) { ((ProcessEngineImpl) pe).registerProcessDefinition(in); } + + initHibernateForTesting(); } - + + private static void initHibernateForTesting() throws IOException{ + + InputStream in = SpringExpressionAwareProcessEngineTest.class.getResourceAsStream("/at/gv/egovernment/moa/id/process/hibernate.configuration.test.properties"); + Properties props = new Properties(); + props.load(in); + + try { + ConfigurationDBUtils.initHibernate(props); + Configuration config = new Configuration(); + config.addProperties(props); + config.addAnnotatedClass(ProcessInstanceStore.class); + config.addAnnotatedClass(InterfederationSessionStore.class); + MOASessionDBUtils.initHibernate(config, props); + } catch (MOADatabaseException e) { + e.printStackTrace(); + } + } + + @Test - public void testSampleProcessDefinitionWithExpression1() throws IOException, ProcessDefinitionParserException, - ProcessExecutionException { + public void testSampleProcessDefinitionWithExpression1() throws IOException, ProcessDefinitionParserException, ProcessExecutionException { + + String piId = pe.createProcessInstance("SampleProcessWithExpression1"); + ProcessInstance pi = pe.getProcessInstance(piId); + assertEquals(NOT_STARTED, pi.getState()); - ProcessInstance pi = pe.createProcessInstance("SampleProcessWithExpression1"); - assertEquals(NOT_STARTED, pi.getState()); // start process - pe.start(pi); + pe.start(piId); + pi = pe.getProcessInstance(piId); assertEquals(ENDED, pi.getState()); } @Test - public void testSampleProcessDefinitionForSAML1Authentication() throws IOException, - ProcessDefinitionParserException, ProcessExecutionException { - ProcessInstance pi = pe.createProcessInstance("SampleProcessDefinitionForSAML1Authentication"); + public void testSampleProcessDefinitionForSAML1Authentication() throws IOException, ProcessDefinitionParserException, ProcessExecutionException { + + String piId = pe.createProcessInstance("SampleProcessDefinitionForSAML1Authentication"); + ProcessInstance pi = pe.getProcessInstance(piId); assertEquals(NOT_STARTED, pi.getState()); + // start process - pe.start(pi); + pe.start(piId); + pi = pe.getProcessInstance(piId); assertEquals(ENDED, pi.getState()); + pi = pe.getProcessInstance(piId); ExecutionContext ec = pi.getExecutionContext(); assertNotNull(ec); System.out.println(ec.keySet()); diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java index 8c718a9e4..4f24468fe 100644 --- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java +++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java @@ -1,31 +1,39 @@ package at.gv.egovernment.moa.id.process.test; -import static at.gv.egovernment.moa.id.process.ProcessInstanceState.ENDED; -import static at.gv.egovernment.moa.id.process.ProcessInstanceState.NOT_STARTED; -import static at.gv.egovernment.moa.id.process.ProcessInstanceState.SUSPENDED; -import static org.junit.Assert.assertEquals; +import static at.gv.egovernment.moa.id.process.ProcessInstanceState.*; +import static org.junit.Assert.*; import java.io.IOException; import java.io.InputStream; +import java.util.Properties; +import org.hibernate.cfg.Configuration; import org.junit.BeforeClass; import org.junit.Test; +import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils; +import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils; +import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore; +import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException; import at.gv.egovernment.moa.id.process.ProcessDefinitionParser; import at.gv.egovernment.moa.id.process.ProcessDefinitionParserException; import at.gv.egovernment.moa.id.process.ProcessEngine; import at.gv.egovernment.moa.id.process.ProcessEngineImpl; import at.gv.egovernment.moa.id.process.ProcessExecutionException; import at.gv.egovernment.moa.id.process.ProcessInstance; +import at.gv.egovernment.moa.id.process.dao.ProcessInstanceStore; public class ProcessEngineTest { private static ProcessEngine pe; - + @BeforeClass public static void init() throws IOException, ProcessDefinitionParserException { + ProcessDefinitionParser pdp = new ProcessDefinitionParser(); + pe = new ProcessEngineImpl(); + ((ProcessEngineImpl) pe).setTransitionConditionExpressionEvaluator(new BooleanStringExpressionEvaluator()); try (InputStream in = ProcessEngineTest.class.getResourceAsStream("SampleProcessDefinition1.xml")) { ((ProcessEngineImpl) pe).registerProcessDefinition(pdp.parse(in)); @@ -33,32 +41,65 @@ public class ProcessEngineTest { try (InputStream in = ProcessEngineTest.class.getResourceAsStream("SampleProcessDefinition2.xml")) { ((ProcessEngineImpl) pe).registerProcessDefinition(pdp.parse(in)); } + + initHibernateForTesting(); + } + + + private static void initHibernateForTesting() throws IOException{ + + InputStream in = ProcessEngineTest.class.getResourceAsStream("/at/gv/egovernment/moa/id/process/hibernate.configuration.test.properties"); + Properties props = new Properties(); + props.load(in); + + try { + ConfigurationDBUtils.initHibernate(props); + Configuration config = new Configuration(); + config.addProperties(props); + config.addAnnotatedClass(ProcessInstanceStore.class); + config.addAnnotatedClass(InterfederationSessionStore.class); + MOASessionDBUtils.initHibernate(config, props); + } catch (MOADatabaseException e) { + e.printStackTrace(); + } } @Test public void testSampleProcess1() throws IOException, ProcessDefinitionParserException, ProcessExecutionException { - ProcessInstance pi = pe.createProcessInstance("SampleProcess1"); + + String piId = pe.createProcessInstance("SampleProcess1"); + ProcessInstance pi = pe.getProcessInstance(piId); assertEquals(NOT_STARTED, pi.getState()); + // start process - pe.start(pi); + pe.start(piId); + pi = pe.getProcessInstance(piId); assertEquals(SUSPENDED, pi.getState()); + System.out.println("Do something asynchronously"); - pe.signal(pi); + pe.signal(piId); + pi = pe.getProcessInstance(piId); assertEquals(ENDED, pi.getState()); } @Test public void testSampleProcess2() throws IOException, ProcessDefinitionParserException, ProcessExecutionException { - ProcessInstance pi = pe.createProcessInstance("SampleProcess2"); + + String piId = pe.createProcessInstance("SampleProcess2"); + ProcessInstance pi = pe.getProcessInstance(piId); assertEquals(NOT_STARTED, pi.getState()); + // start process - pe.start(pi); + pe.start(piId); + pi = pe.getProcessInstance(piId); assertEquals(SUSPENDED, pi.getState()); + System.out.println("Do something asynchronously"); - pe.signal(pi); + pe.signal(piId); + pi = pe.getProcessInstance(piId); assertEquals(ENDED, pi.getState()); } - + @Test(expected = IllegalArgumentException.class) public void testProcessInstanceDoesNotExist() { pe.getProcessInstance("does not exist"); diff --git a/id/server/idserverlib/src/test/resources/at/gv/egovernment/moa/id/process/hibernate.configuration.test.properties b/id/server/idserverlib/src/test/resources/at/gv/egovernment/moa/id/process/hibernate.configuration.test.properties new file mode 100644 index 000000000..c4faa6d09 --- /dev/null +++ b/id/server/idserverlib/src/test/resources/at/gv/egovernment/moa/id/process/hibernate.configuration.test.properties @@ -0,0 +1,12 @@ +# minimal Hibnerate configuration for testing the process engine +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.connection.url=jdbc:h2:mem:moa.id-session;DB_CLOSE_DELAY=-1 +hibernate.connection.charSet=utf-8 +hibernate.connection.driver_class=org.h2.Driver +hibernate.connection.username= +hibernate.connection.password= + +hibernate.format_sql=true +hibernate.show_sql=false +hibernate.transaction.auto_close_session=true +hibernate.hbm2ddl.auto=update diff --git a/id/server/idserverlib/src/test/resources/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest-context.xml b/id/server/idserverlib/src/test/resources/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest-context.xml index 1b6b7658e..9a381d83a 100644 --- a/id/server/idserverlib/src/test/resources/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest-context.xml +++ b/id/server/idserverlib/src/test/resources/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest-context.xml @@ -6,27 +6,8 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="springElAwareExpressionEvaluator" class="at.gv.egovernment.moa.id.process.spring.SpringExpressionEvaluator" /> - + <bean id="processEngine" class="at.gv.egovernment.moa.id.process.ProcessEngineImpl"> <property name="transitionConditionExpressionEvaluator" ref="springElAwareExpressionEvaluator" /> - <property name="processInstanceMaxIdleTimeSeconds" value="600" /> - <!-- - <property name="processDefinitions"> - <list> - <bean class="com.datentechnik.process_engine.spring.ProcessDefinitionFactoryBean"> - <property name="resource" value="classpath:at/gv/egovernment/moa/id/process/spring/test/SampleProcessDefinitionWithExpression1.xml" /> - </bean> - <bean class="com.datentechnik.process_engine.spring.ProcessDefinitionFactoryBean"> - <property name="resource" value="classpath:at/gv/egovernment/moa/id/process/spring/test/SampleProcessDefinitionForSAML1Authentication.xml" /> - </bean> - </list> - </property> - --> </bean> - - <task:scheduler id="taskScheduler" pool-size="1" /> - <task:scheduled-tasks scheduler="taskScheduler"> - <task:scheduled ref="processEngine" method="cleanup" fixed-delay="60000" /> - </task:scheduled-tasks> - </beans> |