[jboss-svn-commits] JBL Code SVN: r18324 - in labs/jbossrules/trunk/drools-compiler/src/test: resources/org/drools/integrationtests and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 5 15:03:04 EST 2008
Author: tirelli
Date: 2008-02-05 15:03:03 -0500 (Tue, 05 Feb 2008)
New Revision: 18324
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_MultithreadFiringCheck.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MultithreadTest.java
Log:
JBRULES-1392: adding multithread test case
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MultithreadTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MultithreadTest.java 2008-02-05 19:37:03 UTC (rev 18323)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MultithreadTest.java 2008-02-05 20:03:03 UTC (rev 18324)
@@ -19,6 +19,12 @@
package org.drools.integrationtests;
import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
import junit.framework.TestCase;
@@ -26,9 +32,11 @@
import org.drools.GrandParent;
import org.drools.Parent;
import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
/**
* This is a test case for multi-thred issues
@@ -150,4 +158,53 @@
}
+ public void testExpectedFires() {
+ try {
+ final PackageBuilder packageBuilder = new PackageBuilder();
+ packageBuilder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_MultithreadFiringCheck.drl" ) ) );
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( packageBuilder.getPackage() );
+ final Queue errorList = new ConcurrentLinkedQueue();
+ final Thread t[] = new Thread[50];
+ for ( int i = 0; i < t.length; i++ ) {
+ final int count = i;
+ t[i] = new Thread( new Runnable() {
+ public void run() {
+ try {
+ final int iterations = count * 15 + 3000;
+ final List results = new ArrayList();
+ final StatefulSession session2 = ruleBase.newStatefulSession();
+ session2.setGlobal( "results",
+ results );
+ session2.insert( new Integer( -1 ) );
+ for ( int k = 0; k < iterations; k++ ) {
+ session2.insert( new Integer( k ) );
+ if ( k + 1 != session2.getAgenda().agendaSize() ) {
+ errorList.add( "THREAD-" + count + " ERROR: expected agenda size=" + (k + 1) + " but was " + session2.getAgenda().agendaSize() );
+ }
+ }
+ session2.fireAllRules();
+ session2.dispose();
+ if ( results.size() != iterations ) {
+ errorList.add( "THREAD-" + count + " ERROR: expected fire count=" + iterations + " but was " + results.size() );
+ }
+ } catch ( Exception e ) {
+ errorList.add( "THREAD-" + count + " EXCEPTION: " + e.getMessage() );
+ e.printStackTrace();
+ }
+ }
+ } );
+ t[i].start();
+ }
+ for ( int i = 0; i < t.length; i++ ) {
+ t[i].join();
+ }
+ assertTrue( "Errors during execution: " + errorList.toString(),
+ errorList.isEmpty() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ fail( "No exception should have been raised: "+e.getMessage());
+ }
+ }
+
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_MultithreadFiringCheck.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_MultithreadFiringCheck.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_MultithreadFiringCheck.drl 2008-02-05 20:03:03 UTC (rev 18324)
@@ -0,0 +1,11 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "Should fire"
+when
+ $i1 : Integer( intValue == -1 )
+ $i2 : Integer( intValue > $i1 )
+then
+ results.add( $i2 );
+end
More information about the jboss-svn-commits
mailing list