[jboss-svn-commits] JBL Code SVN: r15280 - 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
Fri Sep 21 22:49:15 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-09-21 22:49:15 -0400 (Fri, 21 Sep 2007)
New Revision: 15280

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/PackageBuilderThreadSafetyTest.java
Log:
-changed so it tests janino and eclipse. set to FIXME as there are MVEL thread safety issues.

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/PackageBuilderThreadSafetyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/PackageBuilderThreadSafetyTest.java	2007-09-22 01:15:43 UTC (rev 15279)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/PackageBuilderThreadSafetyTest.java	2007-09-22 02:49:15 UTC (rev 15280)
@@ -1,4 +1,5 @@
 package org.drools.integrationtests;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -8,100 +9,108 @@
 import org.drools.lang.descr.FunctionDescr;
 import org.drools.lang.descr.ImportDescr;
 import org.drools.lang.descr.PackageDescr;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
 
 public class PackageBuilderThreadSafetyTest extends TestCase {
 
-	private static final int _NUMBER_OF_THREADS = 100;
-	private static final int _SLEEP_TIME_MS = 100;
-    
+    private static final int _NUMBER_OF_THREADS = 20;
+    private static final int _SLEEP_TIME_MS     = 100;
+
     protected void setUp() throws Exception {
         super.setUp();
     }
-    
+
     public void testDummy() {
     }
-	
-	public void FIXME_testThreadSafety() {
-		final List errors = new ArrayList();
-		final List exceptions= new ArrayList();
-    Thread[] threads = new Thread[_NUMBER_OF_THREADS];
-    for (int i = 0; i < _NUMBER_OF_THREADS; i++) {
-      final int ID = i;
-      Thread testThread = new Thread() {
-          public void run() {
-          	try {
-                this.setName( "Thread["+ID+"]" );
-	            PackageBuilderConfiguration packageBuilderConfig = new PackageBuilderConfiguration();
-                //((JavaDialectConfiguration) packageBuilderConfig.getDialectConfiguration( "java" )).setCompiler( JavaDialectConfiguration.JANINO );
-	            org.drools.compiler.PackageBuilder builder = null;
-	            try {
-	            	builder = new org.drools.compiler.PackageBuilder(packageBuilderConfig);
-	            } catch (Throwable t) {
-	            	t.printStackTrace();
-	            	throw new RuntimeException(t);
-	            }
-	            PackageDescr packageDescr = new PackageDescr("MyRulebase");
-	        		addImports(packageDescr);
-	        		addFunctions(packageDescr);
-	        		// added some arbitrary sleep statements to encourage 
-	        		// context switching and hope this provokes exceptions 
-	        		sleep(_SLEEP_TIME_MS);
-	        		builder.addPackage(packageDescr);
-	        		sleep(_SLEEP_TIME_MS);
-	         		builder.getPackage();
-	         		sleep(_SLEEP_TIME_MS);
-	         		if (builder.hasErrors()) {
-                        System.out.println("ERROR in thread: "+ID);
-	         			errors.add(builder.getErrors());
-	         		}
-          	} catch (Exception e) {
-          		e.printStackTrace();
-          		exceptions.add(e);
-          	}
-          }
-      };
-      threads[i] = testThread;
-      try {
-      	testThread.start();
-      } catch (Exception e) {
-      	assertTrue(false); 
-      }
+
+    public void FIXME_testThreadSafetyEclipse() {
+        PackageBuilderConfiguration packageBuilderConfig = new PackageBuilderConfiguration();
+        ((JavaDialectConfiguration) packageBuilderConfig.getDialectConfiguration( "java" )).setCompiler( JavaDialectConfiguration.ECLIPSE );
+        execute( packageBuilderConfig );        
     }
-    for (int i = 0; i < _NUMBER_OF_THREADS; i++) {
-    	try {
-	      threads[i].join();
-      } catch (InterruptedException e) {
-      	threads[i].interrupt();
-      }
+
+    public void FIXME_testThreadSafetyJanino() {
+        PackageBuilderConfiguration packageBuilderConfig = new PackageBuilderConfiguration();
+        ((JavaDialectConfiguration) packageBuilderConfig.getDialectConfiguration( "java" )).setCompiler( JavaDialectConfiguration.JANINO );
+        execute( packageBuilderConfig );
     }
-    assertTrue("Exceptions during package compilation (number=" + exceptions.size() + ")" , exceptions.isEmpty());
-    assertTrue("PackageBuilderErrors during package compilation (number=" + errors.size() + ")", errors.isEmpty());
-	}
-	
-	private static void addImports(PackageDescr packageDescr) {
-		packageDescr.addImport(new ImportDescr("java.util.List"));
-		packageDescr.addImport(new ImportDescr("java.util.ArrayList"));
-		packageDescr.addImport(new ImportDescr("java.util.LinkedList"));
-		packageDescr.addImport(new ImportDescr("java.util.Set"));
-		packageDescr.addImport(new ImportDescr("java.util.HashSet"));
-		packageDescr.addImport(new ImportDescr("java.util.SortedSet"));
-		packageDescr.addImport(new ImportDescr("java.util.TreeSet"));
-	}
-	
-	private static void addFunctions(PackageDescr packageDescr) {
-		FunctionDescr functionDescr = new FunctionDescr("foo", "void");
-		functionDescr.addParameter("String", "arg1");
-		String body = 
-			"Set myHashSet = new HashSet();" +
-			"myHashSet.add(arg1);" + 
-			"List myArrayList = new ArrayList();" +
-			"myArrayList.add(arg1);" +
-		  "List myLinkedList = new LinkedList();" +
-		  "myLinkedList.add(arg1);" +
-		  "Set myTreeSet = new TreeSet();" +
-			"myTreeSet.add(arg1);";
-		functionDescr.setText(body);
-		packageDescr.addFunction(functionDescr);
-	}
-    
+
+    public void execute(final PackageBuilderConfiguration packageBuilderConfig) {
+        final List errors = new ArrayList();
+        final List exceptions = new ArrayList();
+        Thread[] threads = new Thread[_NUMBER_OF_THREADS];
+        for ( int i = 0; i < _NUMBER_OF_THREADS; i++ ) {
+            final int ID = i;
+            Thread testThread = new Thread() {
+                public void run() {
+                    try {
+                        this.setName( "Thread[" + ID + "]" );
+                        org.drools.compiler.PackageBuilder builder = null;
+                        try {
+                            builder = new org.drools.compiler.PackageBuilder( packageBuilderConfig );
+                        } catch ( Throwable t ) {
+                            t.printStackTrace();
+                            throw new RuntimeException( t );
+                        }
+                        PackageDescr packageDescr = new PackageDescr( "MyRulebase" );
+                        addImports( packageDescr );
+                        addFunctions( packageDescr );
+                        // added some arbitrary sleep statements to encourage 
+                        // context switching and hope this provokes exceptions 
+                        sleep( _SLEEP_TIME_MS );
+                        builder.addPackage( packageDescr );
+                        sleep( _SLEEP_TIME_MS );
+                        builder.getPackage();
+                        sleep( _SLEEP_TIME_MS );
+                        if ( builder.hasErrors() ) {
+                            System.out.println( "ERROR in thread: " + ID );
+                            errors.add( builder.getErrors() );
+                        }
+                    } catch ( Exception e ) {
+                        e.printStackTrace();
+                        exceptions.add( e );
+                    }
+                }
+            };
+            threads[i] = testThread;
+            try {
+                testThread.start();
+            } catch ( Exception e ) {
+                assertTrue( false );
+            }
+        }
+        for ( int i = 0; i < _NUMBER_OF_THREADS; i++ ) {
+            try {
+                threads[i].join();
+            } catch ( InterruptedException e ) {
+                threads[i].interrupt();
+            }
+        }
+        assertTrue( "Exceptions during package compilation (number=" + exceptions.size() + ")",
+                    exceptions.isEmpty() );
+        assertTrue( "PackageBuilderErrors during package compilation (number=" + errors.size() + ")",
+                    errors.isEmpty() );
+    }
+
+    private static void addImports(PackageDescr packageDescr) {
+        packageDescr.addImport( new ImportDescr( "java.util.List" ) );
+        packageDescr.addImport( new ImportDescr( "java.util.ArrayList" ) );
+        packageDescr.addImport( new ImportDescr( "java.util.LinkedList" ) );
+        packageDescr.addImport( new ImportDescr( "java.util.Set" ) );
+        packageDescr.addImport( new ImportDescr( "java.util.HashSet" ) );
+        packageDescr.addImport( new ImportDescr( "java.util.SortedSet" ) );
+        packageDescr.addImport( new ImportDescr( "java.util.TreeSet" ) );
+    }
+
+    private static void addFunctions(PackageDescr packageDescr) {
+        FunctionDescr functionDescr = new FunctionDescr( "foo",
+                                                         "void" );
+        functionDescr.addParameter( "String",
+                                    "arg1" );
+        String body = "Set myHashSet = new HashSet();" + "myHashSet.add(arg1);" + "List myArrayList = new ArrayList();" + "myArrayList.add(arg1);" + "List myLinkedList = new LinkedList();" + "myLinkedList.add(arg1);"
+                      + "Set myTreeSet = new TreeSet();" + "myTreeSet.add(arg1);";
+        functionDescr.setText( body );
+        packageDescr.addFunction( functionDescr );
+    }
+
 }




More information about the jboss-svn-commits mailing list