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