You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gi...@apache.org on 2004/11/12 13:25:13 UTC

svn commit: rev 57512 - cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread

Author: giacomo
Date: Fri Nov 12 04:25:13 2004
New Revision: 57512

Added:
   cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/AbstractTestCase.java
   cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadPoolTestCase.java
Modified:
   cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java
   cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java
Log:
more test cases

Added: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/AbstractTestCase.java
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/AbstractTestCase.java	Fri Nov 12 04:25:13 2004
@@ -0,0 +1,341 @@
+/*
+ * Copyright 1999-2004 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.cocoon.components.thread;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.easymock.MockControl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+
+/**
+ * A {@link TestCase}with convenience methods to ease creation of Avalon mock
+ * classes.
+ *
+ * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati </a>
+ * @version $Id$
+ */
+public class AbstractTestCase
+    extends TestCase
+{
+    //~ Instance fields --------------------------------------------------------
+
+    /**
+     * The {@link List}of {@link MockControl}s creted by the
+     * <code>create...Control</code> methods
+     */
+    private List m_controls;
+
+    //~ Constructors -----------------------------------------------------------
+
+    /**
+     * Constructor
+     *
+     * @param name
+     */
+    public AbstractTestCase( String name )
+    {
+        super( name );
+    }
+
+    /**
+     * Constructor
+     */
+    public AbstractTestCase(  )
+    {
+        super(  );
+    }
+
+    //~ Methods ----------------------------------------------------------------
+
+    /**
+     * Create an empty list for {@link MockControl}s created by
+     * <code>create...Control</code> methods
+     *
+     * @throws Exception
+     */
+    protected void setUp(  )
+        throws Exception
+    {
+        super.setUp(  );
+        m_controls = new ArrayList(  );
+    }
+
+    /**
+     * Create a mock {@link Configuration}instance that has a boolean value
+     *
+     * @param value The value to return
+     * @param defaultValue The value accepted as the default value
+     *
+     * @return A mock <code>Configuration</code>
+     */
+    protected Configuration createBooleanConfigMock( final boolean value,
+                                                     final boolean defaultValue )
+    {
+        final MockControl valueConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration valueConfig =
+            (Configuration)valueConfigControl.getMock(  );
+        valueConfig.getValueAsBoolean( defaultValue );
+        valueConfigControl.setReturnValue( value );
+        valueConfigControl.replay(  );
+
+        return valueConfig;
+    }
+
+    /**
+     * Create a mock {@link Configuration}instance that has a boolean value
+     *
+     * @param value The value to return
+     *
+     * @return A mock <code>Configuration</code>
+     *
+     * @throws ConfigurationException
+     */
+    protected Configuration createBooleanConfigMock( final boolean value )
+        throws ConfigurationException
+    {
+        final MockControl valueConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration valueConfig =
+            (Configuration)valueConfigControl.getMock(  );
+        valueConfig.getValueAsBoolean(  );
+        valueConfigControl.setReturnValue( value );
+        valueConfigControl.replay(  );
+
+        return valueConfig;
+    }
+
+    /**
+     * Create a {@link Configuration}instance that has a child
+     *
+     * @param name The value accepted as the name for the child
+     * @param value The value to return
+     *
+     * @return A mock <code>Configuration</code>
+     */
+    protected Configuration createChildConfigMock( final String name,
+                                                   final Configuration value )
+    {
+        final MockControl childConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration childConfig =
+            (Configuration)childConfigControl.getMock(  );
+        childConfig.getChild( name );
+        childConfigControl.setReturnValue( value );
+        childConfigControl.replay(  );
+
+        return childConfig;
+    }
+
+    /**
+     * Create a {@link Configuration}instance that has a boolean value
+     *
+     * @param name The value accepted as the name for the children
+     * @param value The value to return
+     *
+     * @return A mock <code>Configuration</code>
+     */
+    protected Configuration createChildrenConfigMock( final String name,
+                                                      final Configuration [] value )
+    {
+        final MockControl childrenConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration childrenConfig =
+            (Configuration)childrenConfigControl.getMock(  );
+        childrenConfig.getChildren( name );
+        childrenConfigControl.setReturnValue( value );
+        childrenConfigControl.replay(  );
+
+        return childrenConfig;
+    }
+
+    /**
+     * Create a {@link Configuration}instance that has a int value
+     *
+     * @param value The value to return
+     * @param defaultValue The value accepted as the default value
+     *
+     * @return A mock <code>Configuration</code>
+     */
+    protected Configuration createIntegerConfigMock( final int value,
+                                                     final int defaultValue )
+    {
+        final MockControl valueConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration valueConfig =
+            (Configuration)valueConfigControl.getMock(  );
+        valueConfig.getValueAsInteger( defaultValue );
+        valueConfigControl.setReturnValue( value );
+        valueConfigControl.replay(  );
+
+        return valueConfig;
+    }
+
+    /**
+     * Create a {@link Configuration}instance that has a int value
+     *
+     * @param value The value to return
+     *
+     * @return A mock <code>Configuration</code>
+     *
+     * @throws ConfigurationException
+     */
+    protected Configuration createIntegerConfigMock( final int value )
+        throws ConfigurationException
+    {
+        final MockControl valueConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration valueConfig =
+            (Configuration)valueConfigControl.getMock(  );
+        valueConfig.getValueAsInteger(  );
+        valueConfigControl.setReturnValue( value );
+        valueConfigControl.replay(  );
+
+        return valueConfig;
+    }
+
+    /**
+     * Create a {@link Configuration}instance that has a long value
+     *
+     * @param value The value to return
+     * @param defaultValue The value accepted as the default value
+     *
+     * @return A mock <code>Configuration</code>
+     */
+    protected Configuration createLongConfigMock( final long value,
+                                                  final long defaultValue )
+    {
+        final MockControl valueConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration valueConfig =
+            (Configuration)valueConfigControl.getMock(  );
+        valueConfig.getValueAsLong( defaultValue );
+        valueConfigControl.setReturnValue( value );
+        valueConfigControl.replay(  );
+
+        return valueConfig;
+    }
+
+    /**
+     * Create a {@link Configuration}instance that has a long value
+     *
+     * @param value The value to return
+     *
+     * @return A mock <code>Configuration</code>
+     *
+     * @throws ConfigurationException
+     */
+    protected Configuration createLongConfigMock( final long value )
+        throws ConfigurationException
+    {
+        final MockControl valueConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration valueConfig =
+            (Configuration)valueConfigControl.getMock(  );
+        valueConfig.getValueAsLong(  );
+        valueConfigControl.setReturnValue( value );
+        valueConfigControl.replay(  );
+
+        return valueConfig;
+    }
+
+    /**
+     * Create a strict mock control
+     *
+     * @param clazz The interface class the mock object should represent
+     *
+     * @return The mock instance
+     */
+    protected MockControl createStrictControl( final Class clazz )
+    {
+        final MockControl control = MockControl.createStrictControl( clazz );
+        m_controls.add( control );
+
+        return control;
+    }
+
+    /**
+     * Create a {@link Configuration}instance that has a string value
+     *
+     * @param value The value to return
+     * @param defaultValue The value accepted as the default value
+     *
+     * @return A mock <code>Configuration</code>
+     */
+    protected Configuration createValueConfigMock( final String value,
+                                                   final String defaultValue )
+    {
+        final MockControl valueConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration valueConfig =
+            (Configuration)valueConfigControl.getMock(  );
+        valueConfig.getValue( defaultValue );
+        valueConfigControl.setReturnValue( value );
+        valueConfigControl.replay(  );
+
+        return valueConfig;
+    }
+
+    /**
+     * Create a {@link Configuration}instance that has a string value
+     *
+     * @param value The value to return
+     *
+     * @return A mock <code>Configuration</code>
+     *
+     * @throws ConfigurationException
+     */
+    protected Configuration createValueConfigMock( final String value )
+        throws ConfigurationException
+    {
+        final MockControl valueConfigControl =
+            createStrictControl( Configuration.class );
+        final Configuration valueConfig =
+            (Configuration)valueConfigControl.getMock(  );
+        valueConfig.getValue(  );
+        valueConfigControl.setReturnValue( value );
+        valueConfigControl.replay(  );
+
+        return valueConfig;
+    }
+
+    /**
+     * @see TestCase#tearDown()
+     */
+    protected void tearDown(  )
+        throws Exception
+    {
+        m_controls = null;
+    }
+
+    /**
+     * Verify all <code>MockCOntrol</code>s
+     */
+    protected void verify(  )
+    {
+        for( Iterator i = m_controls.iterator(  ); i.hasNext(  ); )
+        {
+            final MockControl control = (MockControl)i.next(  );
+            control.verify(  );
+        }
+    }
+}

Modified: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java	Fri Nov 12 04:25:13 2004
@@ -20,12 +20,6 @@
 import org.apache.avalon.framework.logger.Logger;
 import org.easymock.MockControl;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import junit.framework.TestCase;
-
 
 /**
  * The $classType$ class ...
@@ -34,13 +28,8 @@
  * @version $Id$
  */
 public class DefaultRunnableManagerTestCase
-    extends TestCase
+    extends AbstractTestCase
 {
-    //~ Instance fields --------------------------------------------------------
-
-    /** DOCUMENT ME! */
-    private List m_controls;
-
     //~ Constructors -----------------------------------------------------------
 
     /**
@@ -131,11 +120,11 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "daemon" ),
                                        childLoggerDaemon );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"daemon\" created with maximum queue-size=2147483647,max-pool-size=10,min-pool-size=1,priority=0,isDaemon=false,keep-alive-time-ms=30000,block-policy=\"WAIT\",shutdown-wait-time-ms=0" );
+        logger.info( "ThreadPool named \"daemon\" created with maximum queue-size=2147483647,max-pool-size=10,min-pool-size=1,priority=5,isDaemon=false,keep-alive-time-ms=30000,block-policy=\"WAIT\",shutdown-wait-time-ms=0" );
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLoggerDefault );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Disposing all thread pools" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -162,6 +151,7 @@
         }
 
         runnableManager.dispose(  );
+        verify(  );
     }
 
     /**
@@ -192,7 +182,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLoggerDefault );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Disposing all thread pools" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -215,6 +205,7 @@
         }
 
         runnableManager.dispose(  );
+        verify(  );
     }
 
     /**
@@ -292,11 +283,11 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "mypool" ),
                                        childLoggerMyPool );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=2147483647,max-pool-size=10,min-pool-size=1,priority=0,isDaemon=false,keep-alive-time-ms=30000,block-policy=\"WAIT\",shutdown-wait-time-ms=0" );
+        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=2147483647,max-pool-size=10,min-pool-size=1,priority=1,isDaemon=false,keep-alive-time-ms=30000,block-policy=\"WAIT\",shutdown-wait-time-ms=0" );
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLoggerDefault );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Disposing all thread pools" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -323,6 +314,7 @@
         }
 
         runnableManager.dispose(  );
+        verify(  );
     }
 
     /**
@@ -360,11 +352,11 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLoggerDefault );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.getChildLogger( "mypool" ),
                                        childLoggerMyPool );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=0,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200" );
+        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=1,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Disposing all thread pools" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -393,6 +385,7 @@
         runnableManager.createPool( "mypool", 230, 15, 12, Thread.MIN_PRIORITY,
                                     false, 15500, "DISCARD", false, 22200 );
         runnableManager.dispose(  );
+        verify(  );
     }
 
     /**
@@ -430,12 +423,12 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLoggerDefault );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.getChildLogger( "anon-xxx" ),
                                        childLoggerAnon );
         loggerControl.setMatcher( MockControl.ALWAYS_MATCHER );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"anon-xxx\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"anon-xxx\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=10,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.setMatcher( MockControl.ALWAYS_MATCHER );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Disposing all thread pools" );
@@ -468,7 +461,15 @@
             runnableManager.createPool( 200, 5, 2, Thread.MAX_PRIORITY, true,
                                         15000, "ABORT", true, 22000 );
         assertEquals( "queue-size", 200, threadPool.getMaximumQueueSize(  ) );
+        assertEquals( "max-pool-size", 5, threadPool.getMaximumPoolSize(  ) );
+        assertEquals( "min-pool-size", 2, threadPool.getMinimumPoolSize(  ) );
+        assertEquals( "priority", Thread.MAX_PRIORITY,
+                      threadPool.getPriority(  ) );
+        assertEquals( "keep-alive-time-ms", 15000,
+                      threadPool.getKeepAliveTime(  ) );
+        assertEquals( "block-policy", "ABORT", threadPool.getBlockPolicy(  ) );
         runnableManager.dispose(  );
+        verify(  );
     }
 
     /**
@@ -503,7 +504,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLogger );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "starting heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -564,6 +565,8 @@
             ex.printStackTrace(  );
             assertTrue( "Unexpected Exception", false );
         }
+
+        verify(  );
     }
 
     /**
@@ -598,7 +601,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLogger );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "starting heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -659,6 +662,8 @@
             ex.printStackTrace(  );
             assertTrue( "Unexpected Exception", false );
         }
+
+        verify(  );
     }
 
     /**
@@ -693,7 +698,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLogger );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "starting heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -753,6 +758,8 @@
             ex.printStackTrace(  );
             assertTrue( "Unexpected Exception", false );
         }
+
+        verify(  );
     }
 
     /**
@@ -796,7 +803,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLoggerDefault );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "starting heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -806,7 +813,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "mypool" ),
                                        childLoggerMyPool );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=0,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200" );
+        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=1,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=mypool,delay=0,interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -868,6 +875,8 @@
             ex.printStackTrace(  );
             assertTrue( "Unexpected Exception", false );
         }
+
+        verify(  );
     }
 
     /**
@@ -911,7 +920,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLoggerDefault );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "starting heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -921,7 +930,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "mypool" ),
                                        childLoggerMyPool );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=0,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200" );
+        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=1,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=mypool,delay=100,interval=0" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -983,6 +992,8 @@
             ex.printStackTrace(  );
             assertTrue( "Unexpected Exception", false );
         }
+
+        verify(  );
     }
 
     /**
@@ -1026,7 +1037,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "default" ),
                                        childLoggerDefault );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=0,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
+        logger.info( "ThreadPool named \"default\" created with maximum queue-size=2147483647,max-pool-size=5,min-pool-size=5,priority=5,isDaemon=false,keep-alive-time-ms=60000,block-policy=\"RUN\",shutdown-wait-time-ms=-1" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "starting heart" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -1036,7 +1047,7 @@
         loggerControl.expectAndReturn( logger.getChildLogger( "mypool" ),
                                        childLoggerMyPool );
         loggerControl.expectAndReturn( logger.isInfoEnabled(  ), true );
-        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=0,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200" );
+        logger.info( "ThreadPool named \"mypool\" created with maximum queue-size=230,max-pool-size=15,min-pool-size=12,priority=1,isDaemon=false,keep-alive-time-ms=15500,block-policy=\"DISCARD\",shutdown-wait-time-ms=22200" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
         logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=mypool,delay=100,interval=100" );
         loggerControl.expectAndReturn( logger.isDebugEnabled(  ), true );
@@ -1096,202 +1107,7 @@
             ex.printStackTrace(  );
             assertTrue( "Unexpected Exception", false );
         }
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @throws Exception DOCUMENT ME!
-     */
-    protected void setUp(  )
-        throws Exception
-    {
-        super.setUp(  );
-        m_controls = new ArrayList(  );
-    }
-
-    /**
-     * @see TestCase#tearDown()
-     */
-    protected void tearDown(  )
-        throws Exception
-    {
-        for( Iterator i = m_controls.iterator(  ); i.hasNext(  ); )
-        {
-            final MockControl control = (MockControl)i.next(  );
-            control.verify(  );
-        }
-
-        m_controls = null;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param value DOCUMENT ME!
-     * @param defaultValue DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    private Configuration createBooleanConfigMock( final boolean value,
-                                                   final boolean defaultValue )
-    {
-        final MockControl valueConfigControl =
-            createStrictControl( Configuration.class );
-        final Configuration valueConfig =
-            (Configuration)valueConfigControl.getMock(  );
-        valueConfig.getValueAsBoolean( defaultValue );
-        valueConfigControl.setReturnValue( value );
-        valueConfigControl.replay(  );
-
-        return valueConfig;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param name DOCUMENT ME!
-     * @param value DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    private Configuration createChildConfigMock( final String name,
-                                                 final Configuration value )
-    {
-        final MockControl childConfigControl =
-            createStrictControl( Configuration.class );
-        final Configuration childConfig =
-            (Configuration)childConfigControl.getMock(  );
-        childConfig.getChild( name );
-        childConfigControl.setReturnValue( value );
-        childConfigControl.replay(  );
-
-        return childConfig;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param name DOCUMENT ME!
-     * @param value DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    private Configuration createChildrenConfigMock( final String name,
-                                                    final Configuration [] value )
-    {
-        final MockControl childrenConfigControl =
-            createStrictControl( Configuration.class );
-        final Configuration childrenConfig =
-            (Configuration)childrenConfigControl.getMock(  );
-        childrenConfig.getChildren( name );
-        childrenConfigControl.setReturnValue( value );
-        childrenConfigControl.replay(  );
-
-        return childrenConfig;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param value DOCUMENT ME!
-     * @param defaultValue DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    private Configuration createIntegerConfigMock( final int value,
-                                                   final int defaultValue )
-    {
-        final MockControl valueConfigControl =
-            createStrictControl( Configuration.class );
-        final Configuration valueConfig =
-            (Configuration)valueConfigControl.getMock(  );
-        valueConfig.getValueAsInteger( defaultValue );
-        valueConfigControl.setReturnValue( value );
-        valueConfigControl.replay(  );
-
-        return valueConfig;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param value DOCUMENT ME!
-     * @param defaultValue DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    private Configuration createLongConfigMock( final long value,
-                                                final long defaultValue )
-    {
-        final MockControl valueConfigControl =
-            createStrictControl( Configuration.class );
-        final Configuration valueConfig =
-            (Configuration)valueConfigControl.getMock(  );
-        valueConfig.getValueAsLong( defaultValue );
-        valueConfigControl.setReturnValue( value );
-        valueConfigControl.replay(  );
-
-        return valueConfig;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param clazz DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    private MockControl createStrictControl( final Class clazz )
-    {
-        final MockControl control = MockControl.createStrictControl( clazz );
-        m_controls.add( control );
-
-        return control;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param value DOCUMENT ME!
-     * @param defaultValue DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     */
-    private Configuration createValueConfigMock( final String value,
-                                                 final String defaultValue )
-    {
-        final MockControl valueConfigControl =
-            createStrictControl( Configuration.class );
-        final Configuration valueConfig =
-            (Configuration)valueConfigControl.getMock(  );
-        valueConfig.getValue( defaultValue );
-        valueConfigControl.setReturnValue( value );
-        valueConfigControl.replay(  );
-
-        return valueConfig;
-    }
-
-    /**
-     * DOCUMENT ME!
-     *
-     * @param value DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     *
-     * @throws ConfigurationException DOCUMENT ME!
-     */
-    private Configuration createValueConfigMock( final String value )
-        throws ConfigurationException
-    {
-        final MockControl valueConfigControl =
-            createStrictControl( Configuration.class );
-        final Configuration valueConfig =
-            (Configuration)valueConfigControl.getMock(  );
-        valueConfig.getValue(  );
-        valueConfigControl.setReturnValue( value );
-        valueConfigControl.replay(  );
 
-        return valueConfig;
+        verify(  );
     }
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java	Fri Nov 12 04:25:13 2004
@@ -1,55 +1,114 @@
+/*
+ * Copyright 1999-2004 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.cocoon.components.thread;
 
 import junit.framework.TestCase;
 
+
+/**
+ * The $classType$ class ...
+ *
+ * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
+ * @version $Id$
+ */
 public class DefaultThreadFactoryTestCase
     extends TestCase
 {
-    public final void testSetDaemon()
+    //~ Methods ----------------------------------------------------------------
+
+    /**
+     * DOCUMENT ME!
+     */
+    public final void testGetPriority(  )
     {
-        final DefaultThreadFactory factory = new DefaultThreadFactory();
-        factory.setDaemon(false);
-        final Thread thread = factory.newThread(new DummyRunnable() );
-        assertEquals( "daemon mode", false, thread.isDaemon() );
+        final DefaultThreadFactory factory = new DefaultThreadFactory(  );
+        factory.setPriority( Thread.MAX_PRIORITY );
+        assertEquals( "priority", Thread.MAX_PRIORITY, factory.getPriority(  ) );
     }
 
-    public final void testIsDaemon()
-    {
-        final DefaultThreadFactory factory = new DefaultThreadFactory();
-        factory.setDaemon(false);
-        assertEquals( "daemon mode", false, factory.isDaemon() );
+    /**
+     * DOCUMENT ME!
+     */
+    public final void testIsDaemon(  )
+    {
+        final DefaultThreadFactory factory = new DefaultThreadFactory(  );
+        factory.setDaemon( false );
+        assertEquals( "daemon mode", false, factory.isDaemon(  ) );
     }
 
-    public final void testSetPriority()
+    /**
+     * DOCUMENT ME!
+     */
+    public final void testNewThread(  )
     {
-        final DefaultThreadFactory factory = new DefaultThreadFactory();
-        factory.setPriority( Thread.MAX_PRIORITY );
-        final Thread thread = factory.newThread(new DummyRunnable() );
-        assertEquals( "priority", Thread.MAX_PRIORITY, thread.getPriority() );
+        final DefaultThreadFactory factory = new DefaultThreadFactory(  );
+        factory.setDaemon( true );
+        factory.setPriority( Thread.MIN_PRIORITY );
+
+        final Thread thread = factory.newThread( new DummyRunnable(  ) );
+        assertEquals( "new thread daemon mode", true, thread.isDaemon(  ) );
+        assertEquals( "new thread priority", Thread.MIN_PRIORITY,
+                      thread.getPriority(  ) );
+        assertEquals( "factory daemon mode", factory.isDaemon(  ),
+                      thread.isDaemon(  ) );
+        assertEquals( "factory priority", factory.getPriority(  ),
+                      thread.getPriority(  ) );
     }
 
-    public final void testGetPriority()
+    /**
+     * DOCUMENT ME!
+     */
+    public final void testSetDaemon(  )
     {
-        final DefaultThreadFactory factory = new DefaultThreadFactory();
-        factory.setPriority( Thread.MAX_PRIORITY );
-        assertEquals( "priority", Thread.MAX_PRIORITY, factory.getPriority() );
+        final DefaultThreadFactory factory = new DefaultThreadFactory(  );
+        factory.setDaemon( false );
+
+        final Thread thread = factory.newThread( new DummyRunnable(  ) );
+        assertEquals( "daemon mode", false, thread.isDaemon(  ) );
     }
 
-    public final void testNewThread()
+    /**
+     * DOCUMENT ME!
+     */
+    public final void testSetPriority(  )
     {
-        final DefaultThreadFactory factory = new DefaultThreadFactory();
-        factory.setDaemon(true);
-        factory.setPriority( Thread.MIN_PRIORITY );
-        final Thread thread = factory.newThread(new DummyRunnable() );
-        assertEquals( "new thread daemon mode", true, thread.isDaemon() );
-        assertEquals( "new thread priority", Thread.MIN_PRIORITY, thread.getPriority() );
-        assertEquals( "factory daemon mode", factory.isDaemon(), thread.isDaemon() );
-        assertEquals( "factory priority", factory.getPriority(), thread.getPriority() );
+        final DefaultThreadFactory factory = new DefaultThreadFactory(  );
+        factory.setPriority( Thread.MAX_PRIORITY );
+
+        final Thread thread = factory.newThread( new DummyRunnable(  ) );
+        assertEquals( "priority", Thread.MAX_PRIORITY, thread.getPriority(  ) );
     }
-    
-    private static class DummyRunnable implements Runnable
-    {
-        public void run()
+
+    //~ Inner Classes ----------------------------------------------------------
+
+    /**
+     * The $classType$ class ...
+     *
+     * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
+     * @version $Id$
+     */
+    private static class DummyRunnable
+        implements Runnable
+    {
+        //~ Methods ------------------------------------------------------------
+
+        /**
+         * DOCUMENT ME!
+         */
+        public void run(  )
         {
             // nothing
         }

Added: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadPoolTestCase.java
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadPoolTestCase.java	Fri Nov 12 04:25:13 2004
@@ -0,0 +1,150 @@
+/*
+ * Copyright 1999-2004 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.cocoon.components.thread;
+
+import java.util.Date;
+import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.easymock.MockControl;
+
+
+/**
+ * The $classType$ class ...
+ *
+ * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati</a>
+ * @version $Id$
+ */
+public class DefaultThreadPoolTestCase
+    extends AbstractTestCase
+{
+    //~ Methods ----------------------------------------------------------------
+
+    /**
+     * DOCUMENT ME!
+     */
+    public final void testDefaultThreadPool(  )
+    {
+        final DefaultThreadPool pool = new DefaultThreadPool(  );
+        pool.enableLogging( new ConsoleLogger( ConsoleLogger.LEVEL_DEBUG ) );
+        pool.setName( "mypool" );
+        // We cannot mock the DefaultThreadFactory as the underlying 
+        // PooledExecutor of the DefaultThreadPool will again wrapp it into a 
+        // PooledExecutor.Worker instance that does some bookeeping.
+        // Using a easymocked DefaultThreadFactory will prevent the 
+        // PooledExecutor from shutting down and thus hangs forever.
+        final ThreadFactory threadFactory = new DefaultThreadFactory();
+        threadFactory.setPriority( Thread.MAX_PRIORITY );
+        pool.setThreadFactory( threadFactory );
+        pool.setQueue( 230 );
+        pool.setMaximumPoolSize( 15 );
+        pool.setMinimumPoolSize( 9 );
+        pool.setKeepAliveTime( 11000 );
+        pool.setBlockPolicy( "ABORT" );
+        pool.setShutdownGraceful( false );
+        pool.setShutdownWaitTimeMs( 12345 );
+        assertEquals( "block-policy", "ABORT", pool.getBlockPolicy(  ) );
+        assertEquals( "keep-alive-time-ms", 11000L, pool.getKeepAliveTime(  ) );
+        assertEquals( "max-queueu-size", 230, pool.getMaximumQueueSize(  ) );
+        assertEquals( "max-pool-size", 15, pool.getMaximumPoolSize(  ) );
+        assertEquals( "min-pool-size", 9, pool.getMinimumPoolSize(  ) );
+        assertEquals( "name", "mypool", pool.getName(  ) );
+        assertEquals( "priority", Thread.MAX_PRIORITY, pool.getPriority(  ) );
+        assertEquals( "queue-size", 0, pool.getQueueSize(  ) );
+        assertEquals( "isQueued", true, pool.isQueued(  ) );
+        assertEquals( "isTerminatedAfterShutdown", false,
+                      pool.isTerminatedAfterShutdown(  ) );
+        verify(  );
+    }
+
+    /*
+     * Class under test for void execute(Runnable)
+     */
+    public final void testExecuteRunnable(  )
+        throws InterruptedException
+    {
+        final MockControl runnableControl =
+            createStrictControl( Runnable.class );
+        final Runnable runnable = (Runnable)runnableControl.getMock(  );
+        runnable.run(  );
+        runnableControl.replay(  );
+
+        final DefaultThreadPool pool = new DefaultThreadPool(  );
+        pool.enableLogging( new ConsoleLogger( ConsoleLogger.LEVEL_DEBUG ) );
+        pool.setName( "mypool" );
+        // We cannot mock the DefaultThreadFactory as the underlying 
+        // PooledExecutor of the DefaultThreadPool will again wrapp it into a 
+        // PooledExecutor.Worker instance that does some bookeeping.
+        // Using a easymocked DefaultThreadFactory will prevent the 
+        // PooledExecutor from shutting down and thus hangs forever.
+        pool.setThreadFactory( new DefaultThreadFactory() );
+        pool.setQueue( 230 );
+        pool.setMaximumPoolSize( 15 );
+        pool.setMinimumPoolSize( 9 );
+        pool.setKeepAliveTime( 100 );
+        pool.setBlockPolicy( "ABORT" );
+        pool.setShutdownGraceful( false );
+        pool.setShutdownWaitTimeMs( 1234 );
+        pool.execute( runnable );
+        Thread.yield(  );
+        Thread.sleep( 100 );
+        pool.shutdown();
+        verify(  );
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @throws InterruptedException DOCUMENT ME!
+     */
+    public final void testShutdown(  )
+        throws InterruptedException
+    {
+        final Runnable runnable = new Runnable(){
+            public void run()
+            {
+                final ConsoleLogger logger = new ConsoleLogger( ConsoleLogger.LEVEL_DEBUG );
+                logger.info( "runnable runs" );
+                try
+                {
+                    Thread.sleep( 1000 );
+                }
+                catch( final InterruptedException ie )
+                {
+                    logger.info( "runnable has been interrupted ");
+                }
+                logger.info( "runnable terminated" );
+            }
+        };
+
+        final DefaultThreadPool pool = new DefaultThreadPool(  );
+        pool.enableLogging( new ConsoleLogger( ConsoleLogger.LEVEL_DEBUG ) );
+        pool.setName( "mypool" );
+        pool.setThreadFactory( new DefaultThreadFactory() );
+        pool.setQueue( 0 );
+        pool.setMaximumPoolSize( 15 );
+        pool.setMinimumPoolSize( 9 );
+        pool.setKeepAliveTime( 1000 );
+        pool.setBlockPolicy( "ABORT" );
+        pool.setShutdownGraceful( true );
+        pool.setShutdownWaitTimeMs( 100 );
+        pool.execute( runnable );
+        pool.execute( runnable );
+        Thread.yield();
+        Thread.sleep( 200 );
+        pool.shutdown(  );
+        Thread.sleep( 200 );
+        verify(  );
+    }
+}