You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/12/02 02:56:40 UTC

svn commit: r481488 - in /tapestry/tapestry4/trunk: ./ tapestry-framework/ tapestry-framework/src/conf/ tapestry-framework/src/java/org/apache/tapestry/pageload/ tapestry-framework/src/java/org/apache/tapestry/services/impl/ tapestry-framework/src/test...

Author: jkuhnert
Date: Fri Dec  1 17:56:38 2006
New Revision: 481488

URL: http://svn.apache.org/viewvc?view=rev&rev=481488
Log:
Resolved TAPESTRY-848 (was our most popular issue! ) 

Removed old PageLoader sync blocks as they were ineffective against a large block in DisableCachingFilter which 
is where the locking logic was moved. 

Updated testng tests to run in parallel mode for faster testing and cleaned up subsequent failing tests.

Added:
    tapestry/tapestry4/trunk/tapestry-framework/src/conf/testng.xml   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilterThreaded.java
Removed:
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/pageload/PageSourceTest.java
Modified:
    tapestry/tapestry4/trunk/pom.xml
    tapestry/tapestry4/trunk/tapestry-framework/pom.xml
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageSource.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentConstructorFactoryImpl.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DisableCachingFilter.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/form/TestAutocompleter.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestButton.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestCheckbox.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextArea.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextField.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestDateTranslator.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestStringTranslator.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/TestBrowserIssues.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/i18n/TestI18nResources.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/TestScript.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/listener/ListenerMethodInvokerTest.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/markup/TestMarkupWriter.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilter.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/FieldLabelTest.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestDateValidator.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestEmailValidator.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestNumberValidator.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestPatternValidator.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestStringValidator.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestUrlValidator.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestValidField.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/ValidationDelegateTest.java
    tapestry/tapestry4/trunk/tapestry-portlet/src/test/org/apache/tapestry/portlet/TestPortletServicerBridges.java

Modified: tapestry/tapestry4/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/pom.xml?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/pom.xml (original)
+++ tapestry/tapestry4/trunk/pom.xml Fri Dec  1 17:56:38 2006
@@ -255,7 +255,8 @@
                                 <value>en_US</value>
                             </property>
                         </systemProperties>
-                        <parallel>false</parallel>
+                        <parallel>true</parallel>
+                        <threadCount>4</threadCount>
                     </configuration>
                 </plugin>
                 <plugin>

Modified: tapestry/tapestry4/trunk/tapestry-framework/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/pom.xml?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/pom.xml (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/pom.xml Fri Dec  1 17:56:38 2006
@@ -215,10 +215,10 @@
                         <phase>compile</phase>
                         <configuration>
                             <tasks>
-                                <ant antfile="../support/build.xml" inheritRefs="true" >
+                                <ant antfile="../support/build.xml" inheritRefs="true">
                                     <property name="target.dir" value="../target/site/tapestry-framework" />
                                     <target name="build" />
-                                 </ant>
+                                </ant>
                             </tasks>
                         </configuration>
                         <goals>

Added: tapestry/tapestry4/trunk/tapestry-framework/src/conf/testng.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/conf/testng.xml?view=auto&rev=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/conf/testng.xml (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/conf/testng.xml Fri Dec  1 17:56:38 2006
@@ -0,0 +1,18 @@
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+
+<suite name="Tapestry Core Framework" verbose="3"  parallel="true" thread-count="4">
+
+    <test name="Threaded Services" parallel="true">
+        <groups>
+            <run>
+                <include name="threaded" />
+            </run>
+        </groups>
+        
+        <packages>
+            <package name="org.apache.tapestry.services.impl.*" />
+        </packages>
+    </test>
+
+</suite>
+

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/conf/testng.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageSource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageSource.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageSource.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageSource.java Fri Dec  1 17:56:38 2006
@@ -14,10 +14,6 @@
 
 package org.apache.tapestry.pageload;
 
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.locks.ReentrantLock;
-
 import org.apache.hivemind.ClassResolver;
 import org.apache.tapestry.IEngine;
 import org.apache.tapestry.IPage;
@@ -45,9 +41,7 @@
  */
 
 public class PageSource implements IPageSource
-{
-    private static final int ESTIMATED_PAGES = 45;
-    
+{   
     /** set by container. */
     private ClassResolver _classResolver;
 
@@ -65,13 +59,6 @@
 
     private ObjectPool _pool;
     
-    /**
-     * Provides concurrent access to page keys to prevent 
-     * possibly creating more than one page spec of the same page.
-     */
-    
-    private ConcurrentMap _keyMap = new ConcurrentHashMap(ESTIMATED_PAGES);
-    
     public ClassResolver getClassResolver()
     {
         return _classResolver;
@@ -103,29 +90,6 @@
 
         return new MultiKey(keys, false);
     }
-
-    /**
-     * Gets a simple lock for the given page that should be used before
-     * doing any page specification resolution operations.
-     * 
-     * @param key The page key to use.
-     * @return The existing/created lock for this specific page.
-     */
-    protected ReentrantLock getPageLock(Object key)
-    {
-        ReentrantLock lock = (ReentrantLock)_keyMap.get(key);
-        
-        if (lock != null) 
-            return lock;
-        
-        lock = new ReentrantLock();
-        
-        // writes are synchronized, this is where the "magic" happens
-        
-        _keyMap.put(key, lock);
-        
-        return lock;
-    }
     
     /**
      * Gets the page from a pool, or otherwise loads the page. This operation is threadsafe.
@@ -133,50 +97,39 @@
 
     public IPage getPage(IRequestCycle cycle, String pageName)
     {
+        
         IEngine engine = cycle.getEngine();
         Object key = buildKey(engine, pageName);
-        ReentrantLock lock = getPageLock(key);
         
         IPage result = null;
-        
-        try {
-            // lock our page specific key lock first
-            // This is only a temporary measure until a more robust
-            // page pool implementation can be created.
-            
-            lock.lockInterruptibly();
-            
-            result = (IPage) _pool.get(key);
-            
-            if (result == null)
-            {
-                _pageSpecificationResolver.resolve(cycle, pageName);
-                
-                // The loader is responsible for invoking attach(),
-                // and for firing events to PageAttachListeners
-
-                result = _loader.loadPage(
-                        _pageSpecificationResolver.getSimplePageName(),
-                        _pageSpecificationResolver.getNamespace(),
-                        cycle,
-                        _pageSpecificationResolver.getSpecification());
-            }
-            else
-            {
-                // But for pooled pages, we are responsible.
-                // This call will also fire events to any PageAttachListeners
 
-                result.attach(engine, cycle);
-            }
-        
-        } catch (InterruptedException e) {
-            
-            throw new RuntimeException(e);
-        } finally {
-            
-            lock.unlock();
+        // lock our page specific key lock first
+        // This is only a temporary measure until a more robust
+        // page pool implementation can be created.
+
+        result = (IPage) _pool.get(key);
+
+        if (result == null)
+        {
+            _pageSpecificationResolver.resolve(cycle, pageName);
+
+            // The loader is responsible for invoking attach(),
+            // and for firing events to PageAttachListeners
+
+            result = _loader.loadPage(
+                    _pageSpecificationResolver.getSimplePageName(),
+                    _pageSpecificationResolver.getNamespace(),
+                    cycle,
+                    _pageSpecificationResolver.getSpecification());
         }
-        
+        else
+        {
+            // But for pooled pages, we are responsible.
+            // This call will also fire events to any PageAttachListeners
+
+            result.attach(engine, cycle);
+        }
+
         return result;
     }
 

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentConstructorFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentConstructorFactoryImpl.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentConstructorFactoryImpl.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/ComponentConstructorFactoryImpl.java Fri Dec  1 17:56:38 2006
@@ -14,11 +14,14 @@
 
 package org.apache.tapestry.services.impl;
 
+import edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantLock;
+
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
+import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.ClassResolver;
 import org.apache.hivemind.service.ClassFactory;
 import org.apache.hivemind.util.Defense;
@@ -42,6 +45,8 @@
 public class ComponentConstructorFactoryImpl implements ComponentConstructorFactory,
         ResetEventListener, ReportStatusListener
 {
+    private final ReentrantLock _lock = new ReentrantLock();
+    
     private String _serviceId;
 
     private Log _log;
@@ -79,7 +84,9 @@
     {
         Defense.notNull(specification, "specification");
         
-        synchronized (specification) {
+        try {
+            
+            _lock.lockInterruptibly();
             
             ComponentConstructor result = (ComponentConstructor) _cachedConstructors.get(specification);
             
@@ -105,6 +112,13 @@
             }
             
             return result;
+            
+        } catch (InterruptedException e) {
+            
+           throw new ApplicationRuntimeException(e);
+        } finally {
+            
+            _lock.unlock();
         }
     }
     

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DisableCachingFilter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DisableCachingFilter.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DisableCachingFilter.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DisableCachingFilter.java Fri Dec  1 17:56:38 2006
@@ -14,6 +14,8 @@
 
 package org.apache.tapestry.services.impl;
 
+import edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantLock;
+
 import java.io.IOException;
 
 import org.apache.hivemind.ErrorLog;
@@ -26,7 +28,7 @@
 
 /**
  * Filter whose job is to invoke
- * {@link org.apache.tapestry.services.ResetEventHub#fireResetEvent()}after the request has
+ * {@link org.apache.tapestry.services.ResetEventHub#fireResetEvent()} after the request has
  * been processed. This filter is only contributed into the
  * tapestry.request.WebRequestServicerPipeline configuration if the
  * org.apache.tapestry.disable-caching system property is true.
@@ -36,20 +38,26 @@
  */
 public class DisableCachingFilter implements WebRequestServicerFilter
 {
+    private final ReentrantLock _lock = new ReentrantLock();
+    
     private ErrorLog _errorLog;
-
+    
     private ResetEventHub _resetEventHub;
-
+    
     public void service(WebRequest request, WebResponse response, WebRequestServicer servicer)
             throws IOException
     {
         try
         {
+            _lock.lock();
+            
             servicer.service(request, response);
         }
         finally
         {
             fireResetEvent();
+            
+            _lock.unlock();
         }
 
     }
@@ -65,7 +73,7 @@
             _errorLog.error(ImplMessages.errorResetting(ex), HiveMind.getLocation(ex), ex);
         }
     }
-
+    
     public void setResetEventHub(ResetEventHub resetEventCoordinator)
     {
         _resetEventHub = resetEventCoordinator;

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java Fri Dec  1 17:56:38 2006
@@ -33,7 +33,7 @@
  * 
  * @author jkuhnert
  */
-@Test
+@Test(sequential=true)
 public class AjaxShellDelegateTest extends BaseComponentTestCase
 {
     private static final String SYSTEM_NEWLINE= (String)java.security.AccessController.doPrivileged(

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/form/TestAutocompleter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/form/TestAutocompleter.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/form/TestAutocompleter.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/form/TestAutocompleter.java Fri Dec  1 17:56:38 2006
@@ -47,7 +47,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestAutocompleter extends BaseFormComponentTestCase
 {
     private IAutocompleteModel createModel()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestEnhancementOperation.java Fri Dec  1 17:56:38 2006
@@ -46,7 +46,7 @@
 import org.apache.tapestry.link.ServiceLink;
 import org.apache.tapestry.services.ComponentConstructor;
 import org.apache.tapestry.spec.IComponentSpecification;
-import org.testng.annotations.Configuration;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 /**
@@ -55,10 +55,10 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestEnhancementOperation extends BaseComponentTestCase
 {
-    @Configuration(beforeTestMethod = true)
+    @BeforeMethod(alwaysRun=true)
     protected void setUp() throws Exception
     {
         EnhancementOperationImpl._uid = 97;

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java Fri Dec  1 17:56:38 2006
@@ -33,7 +33,7 @@
  * @author Howard Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestInjectPageWorker extends BaseComponentTestCase
 {
     public void testPrimitivePropertyType()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java Fri Dec  1 17:56:38 2006
@@ -41,7 +41,7 @@
  * @author Howard Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class LinkSubmitTest extends BaseComponentTestCase
 {
     private class ScriptFixture implements IScript

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestButton.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestButton.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestButton.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestButton.java Fri Dec  1 17:56:38 2006
@@ -21,7 +21,7 @@
 import org.apache.tapestry.spec.ComponentSpecification;
 import org.testng.annotations.Test;
 
-@Test
+@Test(sequential=true)
 public class TestButton extends BaseComponentTestCase
 {
     public void testRender()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestCheckbox.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestCheckbox.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestCheckbox.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestCheckbox.java Fri Dec  1 17:56:38 2006
@@ -33,7 +33,7 @@
  * @author Howard Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestCheckbox extends BaseFormComponentTestCase
 {
     public void testRenderChecked()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextArea.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextArea.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextArea.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextArea.java Fri Dec  1 17:56:38 2006
@@ -32,7 +32,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestTextArea extends BaseFormComponentTestCase
 {
     public void testRewind()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextField.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextField.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextField.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestTextField.java Fri Dec  1 17:56:38 2006
@@ -33,7 +33,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestTextField extends BaseFormComponentTestCase
 {
     public void testRewind()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestDateTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestDateTranslator.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestDateTranslator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestDateTranslator.java Fri Dec  1 17:56:38 2006
@@ -39,7 +39,7 @@
  * @author Paul Ferraro
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestDateTranslator extends FormComponentContributorTestCase
 {
     private Calendar _calendar = Calendar.getInstance();

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestStringTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestStringTranslator.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestStringTranslator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestStringTranslator.java Fri Dec  1 17:56:38 2006
@@ -32,7 +32,7 @@
  * @author Paul Ferraro
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestStringTranslator extends FormComponentContributorTestCase
 {
     private StringTranslator _translator = new StringTranslator();

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/TestBrowserIssues.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/TestBrowserIssues.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/TestBrowserIssues.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/TestBrowserIssues.java Fri Dec  1 17:56:38 2006
@@ -27,7 +27,7 @@
  * Note: If these tests fail with BindException when starting Jetty, it could be Skype. At least on
  * my system, Skype is listening on localhost:80.
  */
-@Test(timeOut = 50000, groups = "integration" )
+@Test(timeOut = 50000, groups = "integration", sequential=true)
 public class TestBrowserIssues extends Assert
 {
     private static final int JETTY_PORT = 9999;

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/i18n/TestI18nResources.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/i18n/TestI18nResources.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/i18n/TestI18nResources.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/integration/i18n/TestI18nResources.java Fri Dec  1 17:56:38 2006
@@ -30,7 +30,7 @@
  *
  * @author jkuhnert
  */
-@Test(timeOut = 50000, groups = "integration")
+@Test(timeOut = 50000, groups = "integration", sequential=true)
 public class TestI18nResources
 {
     private static final int JETTY_PORT = 9999;

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/TestScript.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/TestScript.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/TestScript.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/TestScript.java Fri Dec  1 17:56:38 2006
@@ -43,7 +43,7 @@
  * @author Howard Lewis Ship
  * @since 2.2
  */
-@Test
+@Test(sequential=true)
 public class TestScript extends TapestryTestCase
 {
     private MockScriptProcessor _processor = new MockScriptProcessor();

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/listener/ListenerMethodInvokerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/listener/ListenerMethodInvokerTest.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/listener/ListenerMethodInvokerTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/listener/ListenerMethodInvokerTest.java Fri Dec  1 17:56:38 2006
@@ -26,7 +26,7 @@
  * 
  * @author jkuhnert
  */
-@Test
+@Test(sequential=true)
 public class ListenerMethodInvokerTest extends BaseComponentTestCase
 {
 

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/markup/TestMarkupWriter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/markup/TestMarkupWriter.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/markup/TestMarkupWriter.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/markup/TestMarkupWriter.java Fri Dec  1 17:56:38 2006
@@ -29,7 +29,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestMarkupWriter extends BaseComponentTestCase
 {
     private static CharArrayWriter _writer;

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilter.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilter.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilter.java Fri Dec  1 17:56:38 2006
@@ -32,7 +32,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test()
 public class TestDisableCachingFilter extends BaseComponentTestCase
 {
     private WebResponse newResponse()
@@ -50,7 +50,7 @@
         return newMock(ResetEventHub.class);
     }
 
-    public void testNormal() throws Exception
+    public void test_Normal() throws Exception
     {
         WebRequest request = newRequest();
         WebResponse response = newResponse();
@@ -70,7 +70,7 @@
         verify();
     }
 
-    public void testResetFailure() throws Exception
+    public void test_Reset_Failure() throws Exception
     {
         WebRequest request = newRequest();
         WebResponse response = newResponse();
@@ -100,5 +100,4 @@
 
         verify();
     }
-
-}
\ No newline at end of file
+}

Added: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilterThreaded.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilterThreaded.java?view=auto&rev=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilterThreaded.java (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/TestDisableCachingFilterThreaded.java Fri Dec  1 17:56:38 2006
@@ -0,0 +1,112 @@
+// Copyright 2004, 2005 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package org.apache.tapestry.services.impl;
+
+import java.io.IOException;
+
+import org.apache.tapestry.BaseComponentTestCase;
+import org.apache.tapestry.event.ResetEventListener;
+import org.apache.tapestry.services.ResetEventHub;
+import org.apache.tapestry.services.WebRequestServicer;
+import org.apache.tapestry.web.WebRequest;
+import org.apache.tapestry.web.WebResponse;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+
+/**
+ * Tests threaded calls on {@link DisableCachingFilter}.
+ *
+ * @author jkuhnert
+ */
+@Test(threadPoolSize=4)
+public class TestDisableCachingFilterThreaded extends BaseComponentTestCase
+{
+    class MockServicer implements WebRequestServicer 
+    {
+        CountingResetListener _listener;
+        
+        public MockServicer(CountingResetListener listener)
+        {
+            _listener = listener;
+        }
+        
+        /**
+         * {@inheritDoc}
+         */
+        public void service(WebRequest request, WebResponse response)
+            throws IOException
+        {
+            _listener.performOperation();
+        }
+        
+    }
+    
+    class CountingResetListener implements ResetEventListener
+    {
+        private int _counter=0;
+        
+        public void performOperation()
+        {
+            _counter++;
+
+            if (_counter != 1)
+                throw new AssertionError("Counter should be 1 but is " + _counter);
+        }
+        
+        public void resetEventDidOccur()
+        {
+            _counter--;
+        }
+        
+        public int getCount()
+        {
+            return _counter;
+        }
+    }
+    
+    private ResetEventHub _resetHub;
+    private CountingResetListener _listener;
+    
+    DisableCachingFilter _filter;
+    WebRequestServicer _servicer;
+    
+    @BeforeClass
+    public void setup_Event_Hub()
+    {
+        _resetHub = new ResetEventHubImpl();
+        
+        _filter = new DisableCachingFilter();
+        _filter.setResetEventHub(_resetHub);
+        
+        _listener = new CountingResetListener();
+        
+        _resetHub.addResetEventListener(_listener);
+        
+        _servicer = new MockServicer(_listener);
+    }
+    
+    @Test(invocationCount = 100, threadPoolSize=4)
+    public void invoke_Listener() throws Exception
+    {
+        _filter.service(null, null, _servicer);
+    }
+    
+    @AfterSuite(alwaysRun=true)
+    public void verify_Reset_Counters()
+    {
+        assertEquals(_listener.getCount(), 0);
+    }
+}

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java Fri Dec  1 17:56:38 2006
@@ -39,7 +39,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestPageRenderSupport extends BaseComponentTestCase
 {
     private static final String SYSTEM_NEWLINE= (String)java.security.AccessController.doPrivileged(

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/FieldLabelTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/FieldLabelTest.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/FieldLabelTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/FieldLabelTest.java Fri Dec  1 17:56:38 2006
@@ -32,7 +32,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class FieldLabelTest extends BaseFormComponentTestCase
 {
     private IForm newForm(IValidationDelegate delegate)

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestDateValidator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestDateValidator.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestDateValidator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestDateValidator.java Fri Dec  1 17:56:38 2006
@@ -21,7 +21,7 @@
 import java.util.Locale;
 
 import org.apache.tapestry.form.IFormComponent;
-import org.testng.annotations.Configuration;
+import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Test;
 
 /**
@@ -30,14 +30,14 @@
  * @author Howard Lewis Ship
  * @since 1.0.8
  */
-@Test
+@Test(sequential=true)
 public class TestDateValidator extends BaseValidatorTestCase
 {
     private Calendar calendar = new GregorianCalendar();
 
     private DateValidator v = new DateValidator();
 
-    @Configuration(afterTestMethod = true)
+    @AfterMethod
     public void reset()
     {
         v.setRequired(false);

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestEmailValidator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestEmailValidator.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestEmailValidator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestEmailValidator.java Fri Dec  1 17:56:38 2006
@@ -15,7 +15,7 @@
 package org.apache.tapestry.valid;
 
 import org.apache.tapestry.form.IFormComponent;
-import org.testng.annotations.Configuration;
+import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Test;
 
 /**
@@ -24,12 +24,12 @@
  * @author Howard Lewis Ship
  * @since 3.0
  */
-@Test
+@Test(sequential=true)
 public class TestEmailValidator extends BaseValidatorTestCase
 {
     private EmailValidator v = new EmailValidator();
 
-    @Configuration(afterTestMethod = true)
+    @AfterMethod
     public void reset()
     {
         v.setClientScriptingEnabled(false);

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestNumberValidator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestNumberValidator.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestNumberValidator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestNumberValidator.java Fri Dec  1 17:56:38 2006
@@ -31,7 +31,7 @@
  * @author Howard Lewis Ship
  * @since 1.0.8
  */
-@Test
+@Test(sequential=true)
 public class TestNumberValidator extends BaseValidatorTestCase
 {
     private NumberValidator v = new NumberValidator();

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestPatternValidator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestPatternValidator.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestPatternValidator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestPatternValidator.java Fri Dec  1 17:56:38 2006
@@ -19,7 +19,7 @@
 import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.Location;
 import org.apache.tapestry.form.IFormComponent;
-import org.testng.annotations.Configuration;
+import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Test;
 
 /**
@@ -28,12 +28,12 @@
  * @author Harish Krishnaswamy
  * @since 3.0
  */
-@Test
+@Test(sequential=true)
 public class TestPatternValidator extends BaseValidatorTestCase
 {
     PatternValidator pv = new PatternValidator();
 
-    @Configuration(afterTestMethod = true)
+    @AfterMethod
     public void reset()
     {
         pv.setClientScriptingEnabled(false);

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestStringValidator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestStringValidator.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestStringValidator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestStringValidator.java Fri Dec  1 17:56:38 2006
@@ -24,7 +24,7 @@
  * @author Howard Lewis Ship
  * @since 1.0.8
  */
-@Test
+@Test(sequential=true)
 public class TestStringValidator extends BaseValidatorTestCase
 {
     private StringValidator v = new StringValidator();

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestUrlValidator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestUrlValidator.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestUrlValidator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestUrlValidator.java Fri Dec  1 17:56:38 2006
@@ -20,7 +20,7 @@
 
 import org.apache.tapestry.IPage;
 import org.apache.tapestry.form.IFormComponent;
-import org.testng.annotations.Configuration;
+import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Test;
 
 /**
@@ -35,7 +35,7 @@
 {
     private UrlValidator v = new UrlValidator();
 
-    @Configuration(afterTestMethod = true)
+    @AfterMethod(alwaysRun=true)
     public void reset()
     {
         v.setClientScriptingEnabled(false);

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestValidField.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestValidField.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestValidField.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/TestValidField.java Fri Dec  1 17:56:38 2006
@@ -37,7 +37,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestValidField extends BaseFormComponentTestCase
 {
 

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/ValidationDelegateTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/ValidationDelegateTest.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/ValidationDelegateTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/valid/ValidationDelegateTest.java Fri Dec  1 17:56:38 2006
@@ -30,7 +30,7 @@
  * @author Howard Lewis Ship
  * @since 1.0.8
  */
-@Test
+@Test(sequential=true)
 public class ValidationDelegateTest extends BaseValidatorTestCase
 {
     protected IFormComponent newField(String name, int count)

Modified: tapestry/tapestry4/trunk/tapestry-portlet/src/test/org/apache/tapestry/portlet/TestPortletServicerBridges.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-portlet/src/test/org/apache/tapestry/portlet/TestPortletServicerBridges.java?view=diff&rev=481488&r1=481487&r2=481488
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-portlet/src/test/org/apache/tapestry/portlet/TestPortletServicerBridges.java (original)
+++ tapestry/tapestry4/trunk/tapestry-portlet/src/test/org/apache/tapestry/portlet/TestPortletServicerBridges.java Fri Dec  1 17:56:38 2006
@@ -39,7 +39,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-@Test
+@Test(sequential=true)
 public class TestPortletServicerBridges extends BaseComponentTestCase
 {
     private class WebRequestServicerFixture implements WebRequestServicer