Author: struberg
Date: Thu Feb 24 23:04:33 2011
New Revision: 1074343

URL: http://svn.apache.org/viewvc?rev=1074343&view=rev
Log:
introduce a parallel test to measure our performance

Modified:
    
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/business/tests/InterceptorPerformanceTest.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/business/tests/InterceptorPerformanceTest.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/business/tests/InterceptorPerformanceTest.java?rev=1074343&r1=1074342&r2=1074343&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/business/tests/InterceptorPerformanceTest.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/business/tests/InterceptorPerformanceTest.java
 Thu Feb 24 23:04:33 2011
@@ -19,6 +19,7 @@
 package org.apache.webbeans.newtests.interceptors.business.tests;
 
 import junit.framework.Assert;
+import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.logger.WebBeansLogger;
 import org.apache.webbeans.newtests.AbstractUnitTest;
 import org.apache.webbeans.newtests.interceptors.beans.ApplicationScopedBean;
@@ -41,13 +42,14 @@ public class InterceptorPerformanceTest 
 {
     private static final String PACKAGE_NAME = 
DependingInterceptorTest.class.getPackage().getName();
 
-    private static final int ITERATIONS = 10000;
+    private static final int ITERATIONS = 30000;
+    private static final int NUM_THREADS = 50;
 
     private static WebBeansLogger logger = 
WebBeansLogger.getLogger(InterceptorPerformanceTest.class);
 
 
     @Test
-    public void testInterceptorPerformance()
+    public void testInterceptorPerformance() throws Exception
     {
         Collection<String> beanXmls = new ArrayList<String>();
         beanXmls.add(getXmlPath(PACKAGE_NAME, "DependingInterceptorTest"));
@@ -61,33 +63,22 @@ public class InterceptorPerformanceTest 
 
         startContainer(beanClasses, beanXmls);
 
-        Set<Bean<?>> beans = 
getBeanManager().getBeans(RequestScopedBean.class);
-        Assert.assertNotNull(beans);
-        Bean<RequestScopedBean> bean = 
(Bean<RequestScopedBean>)beans.iterator().next();
-
-        CreationalContext<RequestScopedBean> ctx = 
getBeanManager().createCreationalContext(bean);
-
-        Object reference1 = getBeanManager().getReference(bean, 
RequestScopedBean.class, ctx);
-        Assert.assertNotNull(reference1);
-
-        Assert.assertTrue(reference1 instanceof RequestScopedBean);
-
-        RequestScopedBean beanInstance1 = (RequestScopedBean)reference1;
+        long start = System.nanoTime();
 
-        TransactionInterceptor.count = 0;
+        //X TODO START THREADS
+        CalculationRunner[] threads = new CalculationRunner[NUM_THREADS];
+        for (int i= 0 ; i < NUM_THREADS; i++)
+        {
+            threads[i] = new CalculationRunner("t" + i);
+            threads[i].start();
+        }
 
-        long start = System.nanoTime();
-        long startDek = start;
-        for (int i= 1; i < ITERATIONS; i++)
+        for (int i= 0 ; i < NUM_THREADS; i++)
         {
-            beanInstance1.getMyService().getJ();
-            if (i % 100 == 0)
-            {
-                long endDek = System.nanoTime();
-                logger.info("Executing 100 iterations took {0} ns", endDek - 
startDek);
-                startDek = endDek;
-            }
+            threads[i].join();
         }
+
+
         long end = System.nanoTime();
 
         logger.info("Executing {0} iterations took {1} ns", ITERATIONS, end - 
start);
@@ -102,4 +93,52 @@ public class InterceptorPerformanceTest 
 
     }
 
+    public class CalculationRunner extends Thread
+    {
+        private String threadName;
+
+        public CalculationRunner(String name)
+        {
+            super(name);
+            threadName = name;
+        }
+
+        @Override
+        public void run()
+        {
+            
WebBeansContext.currentInstance().getContextFactory().initRequestContext(null);
+
+            Set<Bean<?>> beans = 
getBeanManager().getBeans(RequestScopedBean.class);
+            Assert.assertNotNull(beans);
+            Bean<RequestScopedBean> bean = 
(Bean<RequestScopedBean>)beans.iterator().next();
+
+            CreationalContext<RequestScopedBean> ctx = 
getBeanManager().createCreationalContext(bean);
+
+            Object reference1 = getBeanManager().getReference(bean, 
RequestScopedBean.class, ctx);
+            Assert.assertNotNull(reference1);
+
+            Assert.assertTrue(reference1 instanceof RequestScopedBean);
+
+            RequestScopedBean beanInstance1 = (RequestScopedBean)reference1;
+
+            TransactionInterceptor.count = 0;
+
+            long start = System.nanoTime();
+
+            long startDek = start;
+            for (int i= 1; i < ITERATIONS; i++)
+            {
+                beanInstance1.getMyService().getJ();
+                if (i % 10000 == 0)
+                {
+                    long endDek = System.nanoTime();
+                    logger.info("Thread {0}: Executing 10000 iterations took 
{1} ns", threadName, endDek - startDek);
+                    startDek = endDek;
+                }
+            }
+
+            
WebBeansContext.currentInstance().getContextFactory().destroyRequestContext(null);
+        }
+    }
+
 }
\ No newline at end of file


Reply via email to