[jboss-svn-commits] JBL Code SVN: r12918 - 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 Jun 28 07:02:38 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-06-28 07:02:37 -0400 (Thu, 28 Jun 2007)
New Revision: 12918

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java
Log:
JBRULES-957 Async method calls don't work
-Stateful session calls are now unit tested
-Added ability to record any thrown Exceptions.

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulSessionTest.java	2007-06-28 11:02:37 UTC (rev 12918)
@@ -0,0 +1,206 @@
+package org.drools.integrationtests;
+
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.Cheese;
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.WorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.concurrent.Future;
+import org.drools.rule.Package;
+
+import junit.framework.TestCase;
+
+public class StatefulSessionTest extends TestCase {
+    final List list = new ArrayList();
+
+    protected RuleBase getRuleBase() throws Exception {
+
+        return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+                                            null );
+    }
+
+    protected RuleBase getRuleBase(final RuleBaseConfiguration config) throws Exception {
+
+        return RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+                                            config );
+    }
+
+    public void testSingleObjectAssert() throws Exception {
+        StatefulSession session = getSession();
+
+        final Cheese stilton = new Cheese( "stilton",
+                                           5 );        
+
+        Future futureAssert = session.asyncInsert( stilton );               
+        Future futureFireAllRules = session.asyncFireAllRules();
+        
+        int i = 0;
+        while ( !futureFireAllRules.isDone() ) {
+            Thread.sleep( 100 );
+            if (i++ > 5) {
+                fail( "Future should have finished by now" );
+            }
+        }        
+               
+        assertTrue( futureAssert.getObject() instanceof FactHandle );
+        assertEquals( "stilton",
+                      list.get( 0 ) );
+        
+    }
+    
+    public void testArrayObjectAssert() throws Exception {
+        StatefulSession session = getSession();
+
+        final Cheese stilton = new Cheese( "stilton",
+                                           5 );        
+
+        Future futureAssert = session.asyncInsert( new Object[] { stilton } );                
+        Future futureFireAllRules = session.asyncFireAllRules();
+        
+        int i = 0;
+        while ( !futureFireAllRules.isDone() ) {
+            Thread.sleep( 100 );
+            if (i++ > 5) {
+                fail( "Future should have finished by now" );
+            }
+        }        
+               
+        
+        assertTrue( futureAssert.getObject() instanceof List );
+        assertTrue( ((List)futureAssert.getObject()).get( 0 ) instanceof FactHandle );
+
+        assertEquals( "stilton",
+                      list.get( 0 ) );        
+    } 
+    
+    public void testCollectionObjectAssert() throws Exception {
+        StatefulSession session = getSession();
+
+        final Cheese stilton = new Cheese( "stilton",
+                                           5 );        
+
+        List collection = new ArrayList();
+        collection.add( stilton );
+        Future futureAssert = session.asyncInsert( collection );
+        
+        Future futureFireAllRules = session.asyncFireAllRules();
+        int i = 0;
+        while ( !futureFireAllRules.isDone() ) {
+            Thread.sleep( 100 );
+            if (i++ > 5) {
+                fail( "Future should have finished by now" );
+            }
+        }        
+               
+        assertTrue( futureAssert.getObject() instanceof List );
+        assertTrue( ((List)futureAssert.getObject()).get( 0 ) instanceof FactHandle );
+        
+        assertEquals( "stilton",
+                      list.get( 0 ) );
+    }   
+    
+    public void testHasExceptionSingleAssert()throws Exception {
+
+        StatefulSession session = getExceptionSession();
+
+        final Cheese brie = new Cheese( "brie",
+                                        12 );      
+
+        Future futureAssert = session.asyncInsert( brie );
+
+        Future futureFireAllRules = session.asyncFireAllRules();
+        int i = 0;
+        while ( !futureFireAllRules.isDone() ) {
+            Thread.sleep( 100 );
+            if (i++ > 5) {
+                fail( "Future should have finished by now" );
+            }
+        }   
+        
+
+        assertTrue( futureAssert.getObject() instanceof FactHandle );        
+        assertTrue( futureFireAllRules.exceptionThrown() );
+        assertTrue( futureFireAllRules.getException() instanceof Exception );
+    }
+    
+    public void testHasExceptionArrayAssert()throws Exception {
+
+        StatefulSession session = getExceptionSession();
+
+        final Cheese brie = new Cheese( "brie",
+                                        12 );      
+
+        Future futureAssert = session.asyncInsert( new Object[] { brie } );                
+        Future futureFireAllRules = session.asyncFireAllRules();
+        
+        int i = 0;
+        while ( !futureFireAllRules.isDone() ) {
+            Thread.sleep( 100 );
+            if (i++ > 5) {
+                fail( "Future should have finished by now" );
+            }
+        }        
+                       
+        assertTrue( futureAssert.getObject() instanceof List );
+        assertTrue( ((List)futureAssert.getObject()).get( 0 ) instanceof FactHandle );        
+        assertTrue( futureFireAllRules.getException() instanceof Exception );
+    }   
+    
+    public void testHasExceptionCollectionAssert()throws Exception {
+
+        StatefulSession session = getExceptionSession();
+
+        final Cheese brie = new Cheese( "brie",
+                                        12 );      
+
+        List collection = new ArrayList();
+        collection.add( brie );
+        Future futureAssert = session.asyncInsert( collection );             
+        Future futureFireAllRules = session.asyncFireAllRules();
+        
+        int i = 0;
+        while ( !futureFireAllRules.isDone() ) {
+            Thread.sleep( 100 );
+            if (i++ > 5) {
+                fail( "Future should have finished by now" );
+            }
+        }        
+                       
+        assertTrue( futureAssert.getObject() instanceof List );
+        assertTrue( ((List)futureAssert.getObject()).get( 0 ) instanceof FactHandle );        
+        assertTrue( futureFireAllRules.getException() instanceof Exception );
+    }    
+    
+    private StatefulSession getExceptionSession() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ConsequenceException.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        return ruleBase.newStatefulSession();
+    }
+
+    private StatefulSession getSession() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "literal_rule_test.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        final StatefulSession session = ruleBase.newStatefulSession();
+
+        session.setGlobal( "list",
+                           this.list );
+        return session;
+    }
+}




More information about the jboss-svn-commits mailing list