[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