[jboss-svn-commits] JBL Code SVN: r34640 - labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Aug 11 11:42:20 EDT 2010
Author: diegoll
Date: 2010-08-11 11:42:19 -0400 (Wed, 11 Aug 2010)
New Revision: 34640
Modified:
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
Log:
[JBRULES-2616] better test organization
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java 2010-08-11 14:39:08 UTC (rev 34639)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java 2010-08-11 15:42:19 UTC (rev 34640)
@@ -57,21 +57,6 @@
DeleteDbFiles.execute( "", H2_DB_NAME, true );
}
- /**
- * this test uses the following process:
- * start -> timer -> action (insert Buddy) -> wait until 5 Buddies inserted -> end
- *
- * start process
- * simulate timer triggered
- * check process still active
- * simulate timer triggered 4 times (total Buddies inserted 5)
- * check process id is not in the session anymore (it has finished)
- *
- * voila
- *
- * @throws InterruptedException
- * @throws HornetQException
- */
@Test
public void checkTriggerCompletedProcess() throws InterruptedException, HornetQException{
String sessionContextLocation = "classpath:/completedProcessSession.xml";
@@ -80,11 +65,7 @@
//start the executor
AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
- JobExecutorService<TimerJob> timerJobExecutorService = (JobExecutorService<TimerJob>) executorContext.getBean("timerJobExecutorService");
- ExecutorService executor = Executors.newSingleThreadExecutor();
- executor.execute(timerJobExecutorService);
- Thread.sleep(1500); //executor doesn't guarantee you it'll run immediately
- Assert.assertTrue(timerJobExecutorService.isRunning());
+ JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
//start process
AbstractApplicationContext sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
@@ -105,13 +86,14 @@
ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (HornetQMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
- TimerSchedulerSimulator scheduler = new TimerSchedulerSimulator(timerJobMessageTranslator, producer);
- scheduler.setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName);
- scheduler.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
- scheduler.setSessionId(sessionId);
- scheduler.setProcessId(processId);
- scheduler.setTimerId(1);
- scheduler.setPeriod(1000); // any value != 0
+ TimerSchedulerSimulator scheduler =
+ new TimerSchedulerSimulator(timerJobMessageTranslator, producer)
+ .setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName)
+ .setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName)
+ .setSessionId(sessionId)
+ .setProcessId(processId)
+ .setTimerId(1)
+ .setPeriod(1000); // any value != 0
scheduler.triggerTimerJob();
Thread.sleep(1000);
@@ -122,75 +104,92 @@
sessionContext.close();
executorContext.close();
}
-
-
- @Test
- public void checkTriggerTimer() throws InterruptedException, HornetQException{
- String sessionContextLocation = "classpath:/timerProcessSession.xml";
- String sessionConfiguratorBeanName = "sessionConfigurator";
- String knowledgeStoreServiceBeanName = "kstore";
- //start the executor
- AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
- JobExecutorService<TimerJob> timerJobExecutorService = (JobExecutorService<TimerJob>) executorContext.getBean("timerJobExecutorService");
- ExecutorService executor = Executors.newSingleThreadExecutor();
- executor.execute(timerJobExecutorService);
- Thread.sleep(1500); //executor doesn't guarantee you it'll run immediately
- Assert.assertTrue(timerJobExecutorService.isRunning());
+ /**
+ * this test uses the following process:
+ * start -> timer -> action (insert Buddy) -> wait until 5 Buddies inserted -> end
+ *
+ * start process
+ * simulate timer triggered
+ * check process still active
+ * simulate timer triggered 4 times (total Buddies inserted 5)
+ * check process id is not in the session anymore (it has finished)
+ *
+ * voila
+ *
+ * @throws InterruptedException
+ * @throws HornetQException
+ */
- //start process
- AbstractApplicationContext sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
- StatefulKnowledgeSession ksession = createSession(knowledgeStoreServiceBeanName, sessionContext);
- int sessionId = ksession.getId();
- KnowledgeSessionRuntimeConfigurator sessionConfigurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(sessionConfiguratorBeanName);
- sessionConfigurator.configure(ksession);
-
- long processId = ksession.startProcess("timerProcess").getId();
- ksession.dispose();
-
- //create scheduler simulator
- ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
- @SuppressWarnings("unchecked")
- HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (SerializedMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
- TimerSchedulerSimulator scheduler = new TimerSchedulerSimulator(timerJobMessageTranslator, producer);
- scheduler.setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName);
- scheduler.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
- scheduler.setSessionId(sessionId);
- scheduler.setProcessId(processId);
- scheduler.setTimerId(1);
- scheduler.setPeriod(1000); // any value != 0
-
- scheduler.triggerTimerJob();
- Thread.sleep(1000);
+ @Test
+ public void checkTriggerTimer() throws InterruptedException, HornetQException{
+ String sessionContextLocation = "classpath:/timerProcessSession.xml";
+ String sessionConfiguratorBeanName = "sessionConfigurator";
+ String knowledgeStoreServiceBeanName = "kstore";
- ksession = loadSession(sessionId, knowledgeStoreServiceBeanName, sessionContext);
- ProcessInstance processInstance = ksession.getProcessInstance(processId);
- Assert.assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
- ksession.dispose();
+ //start the executor
+ AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
+ JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
- scheduler.triggerTimerJob();
- scheduler.triggerTimerJob();
- scheduler.triggerTimerJob();
- scheduler.triggerTimerJob();
- Thread.sleep(4000);
-
- ksession = loadSession(sessionId, knowledgeStoreServiceBeanName, sessionContext);
- processInstance = ksession.getProcessInstance(processId);
- Assert.assertNull(processInstance);
-
- //close everything
- timerJobExecutorService.cancel();
- producer.close();
- sessionContext.close();
- executorContext.close();
+ //start process
+ AbstractApplicationContext sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
+ StatefulKnowledgeSession ksession = createSession(knowledgeStoreServiceBeanName, sessionContext);
+ int sessionId = ksession.getId();
+ KnowledgeSessionRuntimeConfigurator sessionConfigurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(sessionConfiguratorBeanName);
+ sessionConfigurator.configure(ksession);
+
+ long processId = ksession.startProcess("timerProcess").getId();
+ ksession.dispose();
+
+ //create scheduler simulator
+ ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
+ @SuppressWarnings("unchecked")
+ HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (SerializedMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
+ TimerSchedulerSimulator scheduler =
+ new TimerSchedulerSimulator(timerJobMessageTranslator, producer)
+ .setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName)
+ .setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName)
+ .setSessionId(sessionId)
+ .setProcessId(processId)
+ .setTimerId(1)
+ .setPeriod(1000); // any value != 0
+
+ scheduler.triggerTimerJob();
+ Thread.sleep(1000);
- //close everything
- timerJobExecutorService.cancel();
- producer.close();
- sessionContext.close();
- executorContext.close();
- }
+ ksession = loadSession(sessionId, knowledgeStoreServiceBeanName, sessionContext);
+ ProcessInstance processInstance = ksession.getProcessInstance(processId);
+ Assert.assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
+ ksession.dispose();
+ scheduler.triggerTimerJob();
+ scheduler.triggerTimerJob();
+ scheduler.triggerTimerJob();
+ scheduler.triggerTimerJob();
+ Thread.sleep(4000);
+
+ ksession = loadSession(sessionId, knowledgeStoreServiceBeanName, sessionContext);
+ processInstance = ksession.getProcessInstance(processId);
+ Assert.assertNull(processInstance); // this mean the process was completed elsewhere
+
+ //close everything
+ timerJobExecutorService.cancel();
+ producer.close();
+ sessionContext.close();
+ executorContext.close();
+ }
+
+ private JobExecutorService<TimerJob> startJobExecutor(AbstractApplicationContext executorContext)
+ throws InterruptedException {
+ @SuppressWarnings("unchecked")
+ JobExecutorService<TimerJob> timerJobExecutorService = (JobExecutorService<TimerJob>) executorContext.getBean("timerJobExecutorService");
+ ExecutorService executor = Executors.newSingleThreadExecutor();
+ executor.execute(timerJobExecutorService);
+ Thread.sleep(1500); // executor doesn't guarantee you it'll run immediately
+ Assert.assertTrue(timerJobExecutorService.isRunning());
+ return timerJobExecutorService;
+ }
+
private AbstractApplicationContext createExecutorContext(String sessionContextLocation) {
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
Properties properties = new Properties();
@@ -263,57 +262,63 @@
timerJob.setKnowledgeStoreServiceBeanName(getKnowledgeStoreServiceBeanName());
timerJob.setRuntimeSessionConfiguratorBeanName(getKnowledgeSessionRuntimeConfiguratorBeanName());
- producer.send(getTranslator().writeMessage(timerJob));
+ getProducer().send(getTranslator().writeMessage(timerJob));
}
public long getProcessId() {
return processId;
}
- public void setProcessId(long processId) {
+ public TimerSchedulerSimulator setProcessId(long processId) {
this.processId = processId;
+ return this;
}
public int getSessionId() {
return sessionId;
}
- public void setSessionId(int sessionId) {
+ public TimerSchedulerSimulator setSessionId(int sessionId) {
this.sessionId = sessionId;
+ return this;
}
public long getTimerId() {
return timerId;
}
- public void setTimerId(long timerId) {
+ public TimerSchedulerSimulator setTimerId(long timerId) {
this.timerId = timerId;
+ return this;
}
public long getPeriod() {
return period;
}
- public void setPeriod(long period) {
+ public TimerSchedulerSimulator setPeriod(long period) {
this.period = period;
+ return this;
}
public String getKnowledgeStoreServiceBeanName() {
return knowledgeStoreServiceBeanName;
}
- public void setKnowledgeStoreServiceBeanName(
+ public TimerSchedulerSimulator setKnowledgeStoreServiceBeanName(
String knowledgeStoreServiceBeanName) {
this.knowledgeStoreServiceBeanName = knowledgeStoreServiceBeanName;
+ return this;
}
public String getKnowledgeSessionRuntimeConfiguratorBeanName() {
return knowledgeSessionRuntimeConfiguratorBeanName;
}
- public void setKnowledgeSessionRuntimeConfiguratorBeanName(
+ public TimerSchedulerSimulator setKnowledgeSessionRuntimeConfiguratorBeanName(
String knowledgeSessionRuntimeConfiguratorBeanName) {
this.knowledgeSessionRuntimeConfiguratorBeanName = knowledgeSessionRuntimeConfiguratorBeanName;
+ return this;
}
public HornetQMessageTranslator<TimerJob> getTranslator() {
More information about the jboss-svn-commits
mailing list