[jboss-svn-commits] JBL Code SVN: r30469 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Dec 3 21:06:02 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-12-03 21:06:02 -0500 (Thu, 03 Dec 2009)
New Revision: 30469

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
Log:
JBRULES-1944 Adding crontab type functionality for repetitive rules
-removed uneeded imports.

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2009-12-04 00:21:16 UTC (rev 30468)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2009-12-04 02:06:02 UTC (rev 30469)
@@ -17,7 +17,6 @@
 import org.drools.Alarm;
 import org.drools.Cell;
 import org.drools.Cheese;
-import org.drools.ClockType;
 import org.drools.FactHandle;
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactory;
@@ -40,12 +39,10 @@
 import org.drools.compiler.DroolsParserException;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilder.PackageMergeException;
-import org.drools.conf.Option;
 import org.drools.event.ActivationCancelledEvent;
 import org.drools.event.ActivationCreatedEvent;
 import org.drools.event.AgendaEventListener;
 import org.drools.event.DefaultAgendaEventListener;
-import org.drools.integrationtests.eventgenerator.PseudoSessionClock;
 import org.drools.io.ResourceFactory;
 import org.drools.lang.descr.PackageDescr;
 import org.drools.process.instance.ProcessInstance;
@@ -56,13 +53,8 @@
 import org.drools.spi.Activation;
 import org.drools.spi.ActivationGroup;
 import org.drools.spi.AgendaGroup;
-import org.drools.time.impl.CronTrigger;
 import org.drools.time.impl.PseudoClockScheduler;
-import org.drools.time.impl.JDKTimerServiceTest.HelloWorldJob;
-import org.drools.time.impl.JDKTimerServiceTest.HelloWorldJobContext;
 
-import sun.net.dns.ResolverConfiguration.Options;
-
 public class ExecutionFlowControlTest extends TestCase {
     protected RuleBase getRuleBase() throws Exception {
 
@@ -941,9 +933,10 @@
 
         KnowledgeSessionConfiguration conf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
         conf.setOption( ClockTypeOption.get( "pseudo" ) );
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession( conf, null );
         
         List list = new ArrayList();
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession( conf, null );
+
         PseudoClockScheduler timeService = ( PseudoClockScheduler ) ksession.getSessionClock();
         timeService.advanceTime( new Date().getTime(), TimeUnit.MILLISECONDS );
         
@@ -1028,7 +1021,63 @@
         ksession.fireAllRules();        
         assertEquals( 2, list.size() );                   
     }        
+    
+    public void testCalendarNormalActivation() throws Exception {
+        String str = "";
+        str += "package org.simple \n";
+        str += "global java.util.List list \n";
+        str += "rule xxx \n";
+        str += "  duration (cron:15 * * * * ?) ";
+        str += "when \n";
+        str += "then \n";
+        str += "  list.add(\"fired\"); \n";
+        str += "end  \n";
 
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+                      ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( kbuilder.getErrors() );
+            assertTrue( kbuilder.hasErrors() );
+        }
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        KnowledgeSessionConfiguration conf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
+        conf.setOption( ClockTypeOption.get( "pseudo" ) );
+        
+        List list = new ArrayList();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession( conf, null );
+        PseudoClockScheduler timeService = ( PseudoClockScheduler ) ksession.getSessionClock();
+        DateFormat df = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSSZ" );
+        Date date = df.parse( "2009-01-01T00:00:00.000-0000" );
+        
+        timeService.advanceTime( date.getTime(), TimeUnit.MILLISECONDS );
+        
+        ksession.setGlobal( "list", list );
+  
+        ksession.fireAllRules();        
+        assertEquals( 0, list.size() ); 
+                
+        timeService.advanceTime( 10, TimeUnit.SECONDS );
+        ksession.fireAllRules();        
+        assertEquals( 0, list.size() ); 
+                 
+        timeService.advanceTime( 10, TimeUnit.SECONDS );            
+        ksession.fireAllRules();        
+        assertEquals( 1, list.size() ); 
+        
+        timeService.advanceTime( 30, TimeUnit.SECONDS );   
+        ksession.fireAllRules();        
+        assertEquals( 1, list.size() ); 
+        
+        timeService.advanceTime( 30, TimeUnit.SECONDS );  
+        ksession.fireAllRules();        
+        assertEquals( 2, list.size() );                   
+    }         
+
     public void testFireRuleAfterDuration() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_FireRuleAfterDuration.drl" ) ) );



More information about the jboss-svn-commits mailing list