[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