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/11 21:38:09 UTC
svn commit: rev 57471 - in cocoon/branches/BRANCH_2_1_X: . src/test/org/apache/cocoon/components/thread tools/lib
Author: giacomo
Date: Thu Nov 11 12:38:09 2004
New Revision: 57471
Added:
cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/
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
cocoon/branches/BRANCH_2_1_X/tools/lib/easymock-1.1.jar (contents, props changed)
Modified:
cocoon/branches/BRANCH_2_1_X/gump.xml
Log:
added test cases for the thread package
Modified: cocoon/branches/BRANCH_2_1_X/gump.xml
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/gump.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/gump.xml Thu Nov 11 12:38:09 2004
@@ -82,6 +82,7 @@
<depend project="jing"/>
<depend project="pizza"/>
<depend project="junit"/>
+ <depend project="easymock"/>
<depend project="eclipse-jtd"/>
<depend project="concurrent"/>
Added: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultRunnableManagerTestCase.java Thu Nov 11 12:38:09 2004
@@ -0,0 +1,1297 @@
+/*
+ * 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.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 ...
+ *
+ * @author <a href="mailto:giacomo.at.apache.org">Giacomo Pati </a>
+ * @version $Id$
+ */
+public class DefaultRunnableManagerTestCase
+ extends TestCase
+{
+ //~ Instance fields --------------------------------------------------------
+
+ /** DOCUMENT ME! */
+ private List m_controls;
+
+ //~ Constructors -----------------------------------------------------------
+
+ /**
+ * Constructor for DefaultRunnableManagerTestCase.
+ *
+ * @param name
+ */
+ public DefaultRunnableManagerTestCase( String name )
+ {
+ super( name );
+ }
+
+ //~ Methods ----------------------------------------------------------------
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @throws Exception DOCUMENT ME!
+ */
+ public final void testConfigureDaemonPool( )
+ throws Exception
+ {
+ final MockControl threadPoolConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration threadPoolConfig =
+ (Configuration)threadPoolConfigControl.getMock( );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "name" ),
+ createValueConfigMock( "daemon" ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "queue-size" ),
+ createIntegerConfigMock( 2 * DefaultRunnableManager.DEFAULT_QUEUE_SIZE,
+ DefaultRunnableManager.DEFAULT_QUEUE_SIZE ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "max-pool-size" ),
+ createIntegerConfigMock( 2 * DefaultRunnableManager.DEFAULT_MAX_POOL_SIZE,
+ DefaultRunnableManager.DEFAULT_MAX_POOL_SIZE ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "min-pool-size" ),
+ createIntegerConfigMock( DefaultRunnableManager.DEFAULT_MIN_POOL_SIZE / 3,
+ DefaultRunnableManager.DEFAULT_MIN_POOL_SIZE ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "priority" ),
+ createValueConfigMock( "LOW",
+ DefaultRunnableManager.DEFAULT_THREAD_PRIORITY ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "daemon" ),
+ createBooleanConfigMock( false,
+ DefaultRunnableManager.DEFAULT_DAEMON_MODE ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "keep-alive-time-ms" ),
+ createLongConfigMock( DefaultRunnableManager.DEFAULT_KEEP_ALIVE_TIME / 2,
+ DefaultRunnableManager.DEFAULT_KEEP_ALIVE_TIME ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "block-policy" ),
+ createValueConfigMock( "WAIT",
+ DefaultThreadPool.POLICY_DEFAULT ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "shutdown-graceful" ),
+ createBooleanConfigMock( true,
+ DefaultRunnableManager.DEFAULT_SHUTDOWN_GRACEFUL ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "shutdown-wait-time-ms" ),
+ createIntegerConfigMock( DefaultRunnableManager.DEFAULT_SHUTDOWN_WAIT_TIME / 2,
+ DefaultRunnableManager.DEFAULT_SHUTDOWN_WAIT_TIME ) );
+ threadPoolConfigControl.replay( );
+
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration []
+ {
+ threadPoolConfig
+ } ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerDaemonControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDaemon =
+ (Logger)childLoggerDaemonControl.getMock( );
+ childLoggerDaemonControl.replay( );
+
+ final MockControl childLoggerDefaultControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDefault =
+ (Logger)childLoggerDefaultControl.getMock( );
+ childLoggerDefaultControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ logger.warn( "Unknown thread priority \"LOW\". Set to \"NORM\"." );
+ 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" );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool daemon" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool daemon disposed" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ runnableManager.dispose( );
+ }
+
+ /**
+ * DOCUMENT ME!
+ */
+ public final void testConfigureMinimal( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerDefaultControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDefault =
+ (Logger)childLoggerDefaultControl.getMock( );
+ childLoggerDefaultControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ runnableManager.dispose( );
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @throws Exception DOCUMENT ME!
+ */
+ public final void testConfigureMyPool( )
+ throws Exception
+ {
+ final MockControl threadPoolConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration threadPoolConfig =
+ (Configuration)threadPoolConfigControl.getMock( );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "name" ),
+ createValueConfigMock( "mypool" ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "queue-size" ),
+ createIntegerConfigMock( 2 * DefaultRunnableManager.DEFAULT_QUEUE_SIZE,
+ DefaultRunnableManager.DEFAULT_QUEUE_SIZE ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "max-pool-size" ),
+ createIntegerConfigMock( 2 * DefaultRunnableManager.DEFAULT_MAX_POOL_SIZE,
+ DefaultRunnableManager.DEFAULT_MAX_POOL_SIZE ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "min-pool-size" ),
+ createIntegerConfigMock( DefaultRunnableManager.DEFAULT_MIN_POOL_SIZE / 3,
+ DefaultRunnableManager.DEFAULT_MIN_POOL_SIZE ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "priority" ),
+ createValueConfigMock( "MIN",
+ DefaultRunnableManager.DEFAULT_THREAD_PRIORITY ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "daemon" ),
+ createBooleanConfigMock( false,
+ DefaultRunnableManager.DEFAULT_DAEMON_MODE ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "keep-alive-time-ms" ),
+ createLongConfigMock( DefaultRunnableManager.DEFAULT_KEEP_ALIVE_TIME / 2,
+ DefaultRunnableManager.DEFAULT_KEEP_ALIVE_TIME ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "block-policy" ),
+ createValueConfigMock( "WAIT",
+ DefaultThreadPool.POLICY_DEFAULT ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "shutdown-graceful" ),
+ createBooleanConfigMock( true,
+ DefaultRunnableManager.DEFAULT_SHUTDOWN_GRACEFUL ) );
+ threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "shutdown-wait-time-ms" ),
+ createIntegerConfigMock( DefaultRunnableManager.DEFAULT_SHUTDOWN_WAIT_TIME / 2,
+ DefaultRunnableManager.DEFAULT_SHUTDOWN_WAIT_TIME ) );
+ threadPoolConfigControl.replay( );
+
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration []
+ {
+ threadPoolConfig
+ } ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerDefaultControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDefault =
+ (Logger)childLoggerDefaultControl.getMock( );
+ childLoggerDefaultControl.replay( );
+
+ final MockControl childLoggerMyPoolControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerMyPool =
+ (Logger)childLoggerMyPoolControl.getMock( );
+ childLoggerMyPoolControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool mypool" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool mypool disposed" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ runnableManager.dispose( );
+ }
+
+ /**
+ * Class under test for void createPool(String, int, int, int, int,
+ * boolean, long, String, boolean, int)
+ */
+ public final void testCreatePoolStringintintintintbooleanlongStringbooleanint( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerDefaultControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDefault =
+ (Logger)childLoggerDefaultControl.getMock( );
+ childLoggerDefaultControl.replay( );
+
+ final MockControl childLoggerMyPoolControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerMyPool =
+ (Logger)childLoggerMyPoolControl.getMock( );
+ childLoggerMyPoolControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool mypool" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool mypool disposed" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ runnableManager.createPool( "mypool", 230, 15, 12, Thread.MIN_PRIORITY,
+ false, 15500, "DISCARD", false, 22200 );
+ runnableManager.dispose( );
+ }
+
+ /**
+ * Class under test for ThreadPool createPool(int, int, int, int, boolean,
+ * long, String, boolean, int)
+ */
+ public final void testCreatePoolintintintintbooleanlongStringbooleanint( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerDefaultControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDefault =
+ (Logger)childLoggerDefaultControl.getMock( );
+ childLoggerDefaultControl.replay( );
+
+ final MockControl childLoggerAnonControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerAnon =
+ (Logger)childLoggerAnonControl.getMock( );
+ childLoggerAnonControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ 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" );
+ loggerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool anon-xxx" );
+ loggerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool anon-xxx disposed" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ final ThreadPool threadPool =
+ runnableManager.createPool( 200, 5, 2, Thread.MAX_PRIORITY, true,
+ 15000, "ABORT", true, 22000 );
+ assertEquals( "queue-size", 200, threadPool.getMaximumQueueSize( ) );
+ runnableManager.dispose( );
+ }
+
+ /**
+ * Class under test for void execute(Runnable)
+ */
+ public final void testExecuteRunnable( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerControl =
+ createStrictControl( Logger.class );
+ final Logger childLogger = (Logger)childLoggerControl.getMock( );
+ childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true );
+ childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true );
+ childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "starting heart" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Entering loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=default,delay=0,interval=0" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool \"default\" with delay=0 and interval=0" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Exiting loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ final MockControl runnableControl =
+ createStrictControl( Runnable.class );
+ final Runnable runnable = (Runnable)runnableControl.getMock( );
+ runnable.run( );
+ runnableControl.replay( );
+
+ try
+ {
+ runnableManager.start( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.execute( runnable );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.stop( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.dispose( );
+ Thread.sleep( 20 );
+ }
+ catch( final Throwable ex )
+ {
+ ex.printStackTrace( );
+ assertTrue( "Unexpected Exception", false );
+ }
+ }
+
+ /**
+ * Class under test for void execute(Runnable, long)
+ */
+ public final void testExecuteRunnablelong( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerControl =
+ createStrictControl( Logger.class );
+ final Logger childLogger = (Logger)childLoggerControl.getMock( );
+ childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true );
+ childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true );
+ childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "starting heart" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Entering loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=default,delay=100,interval=0" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool \"default\" with delay=100 and interval=0" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Exiting loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ final MockControl runnableControl =
+ createStrictControl( Runnable.class );
+ final Runnable runnable = (Runnable)runnableControl.getMock( );
+ runnable.run( );
+ runnableControl.replay( );
+
+ try
+ {
+ runnableManager.start( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.execute( runnable, 100, 0 );
+ Thread.yield( );
+ Thread.sleep( 200 );
+ runnableManager.stop( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.dispose( );
+ Thread.sleep( 20 );
+ }
+ catch( final Throwable ex )
+ {
+ ex.printStackTrace( );
+ assertTrue( "Unexpected Exception", false );
+ }
+ }
+
+ /**
+ * Class under test for void execute(Runnable, long, long)
+ */
+ public final void testExecuteRunnablelonglong( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerControl =
+ createStrictControl( Logger.class );
+ final Logger childLogger = (Logger)childLoggerControl.getMock( );
+ childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true );
+ childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true );
+ childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "starting heart" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Entering loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Command entered: EasyMock for interface java.lang.Runnable,pool=default,delay=100,interval=100" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool \"default\" with delay=100 and interval=100" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Exiting loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ final MockControl runnableControl =
+ createStrictControl( Runnable.class );
+ final Runnable runnable = (Runnable)runnableControl.getMock( );
+ runnable.run( );
+ runnableControl.setVoidCallable( MockControl.ONE_OR_MORE );
+ runnableControl.replay( );
+
+ try
+ {
+ runnableManager.start( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.execute( runnable, 100, 100 );
+ Thread.yield( );
+ Thread.sleep( 200 );
+ runnableManager.stop( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.dispose( );
+ Thread.sleep( 20 );
+ }
+ catch( final Throwable ex )
+ {
+ ex.printStackTrace( );
+ assertTrue( "Unexpected Exception", false );
+ }
+ }
+
+ /**
+ * Class under test for void execute(String, Runnable)
+ */
+ public final void testExecuteStringRunnable( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerDefaultControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDefault =
+ (Logger)childLoggerDefaultControl.getMock( );
+ childLoggerDefaultControl.expectAndReturn( childLoggerDefault.isDebugEnabled( ),
+ true );
+ childLoggerDefault.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerDefaultControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ childLoggerDefaultControl.replay( );
+
+ final MockControl childLoggerMyPoolControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerMyPool =
+ (Logger)childLoggerMyPoolControl.getMock( );
+ childLoggerMyPoolControl.expectAndReturn( childLoggerMyPool.isDebugEnabled( ),
+ true );
+ childLoggerMyPool.debug( "Executing Command: EasyMock for interface java.lang.Runnable,pool=mypool" );
+ childLoggerMyPoolControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "starting heart" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Entering loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ 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" );
+ 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 );
+ logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool \"mypool\" with delay=0 and interval=0" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Exiting loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool mypool" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool mypool disposed" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ final MockControl runnableControl =
+ createStrictControl( Runnable.class );
+ final Runnable runnable = (Runnable)runnableControl.getMock( );
+ runnable.run( );
+ runnableControl.replay( );
+
+ try
+ {
+ runnableManager.start( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.createPool( "mypool", 230, 15, 12,
+ Thread.MIN_PRIORITY, false, 15500,
+ "DISCARD", false, 22200 );
+ runnableManager.execute( "mypool", runnable );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.stop( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.dispose( );
+ Thread.sleep( 20 );
+ }
+ catch( final Throwable ex )
+ {
+ ex.printStackTrace( );
+ assertTrue( "Unexpected Exception", false );
+ }
+ }
+
+ /**
+ * Class under test for void execute(String, Runnable, long)
+ */
+ public final void testExecuteStringRunnablelong( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerDefaultControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDefault =
+ (Logger)childLoggerDefaultControl.getMock( );
+ childLoggerDefaultControl.expectAndReturn( childLoggerDefault.isDebugEnabled( ),
+ true );
+ childLoggerDefault.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerDefaultControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ childLoggerDefaultControl.replay( );
+
+ final MockControl childLoggerMyPoolControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerMyPool =
+ (Logger)childLoggerMyPoolControl.getMock( );
+ childLoggerMyPoolControl.expectAndReturn( childLoggerMyPool.isDebugEnabled( ),
+ true );
+ childLoggerMyPool.debug( "Executing Command: EasyMock for interface java.lang.Runnable,pool=mypool" );
+ childLoggerMyPoolControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "starting heart" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Entering loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ 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" );
+ 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 );
+ logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool \"mypool\" with delay=100 and interval=0" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Exiting loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool mypool" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool mypool disposed" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ final MockControl runnableControl =
+ createStrictControl( Runnable.class );
+ final Runnable runnable = (Runnable)runnableControl.getMock( );
+ runnable.run( );
+ runnableControl.replay( );
+
+ try
+ {
+ runnableManager.start( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.createPool( "mypool", 230, 15, 12,
+ Thread.MIN_PRIORITY, false, 15500,
+ "DISCARD", false, 22200 );
+ runnableManager.execute( "mypool", runnable, 100, 0 );
+ Thread.yield( );
+ Thread.sleep( 200 );
+ runnableManager.stop( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.dispose( );
+ Thread.sleep( 20 );
+ }
+ catch( final Throwable ex )
+ {
+ ex.printStackTrace( );
+ assertTrue( "Unexpected Exception", false );
+ }
+ }
+
+ /**
+ * Class under test for void execute(String, Runnable, long, long)
+ */
+ public final void testExecuteStringRunnablelonglong( )
+ {
+ final MockControl mainConfigControl =
+ createStrictControl( Configuration.class );
+ final Configuration mainConfig =
+ (Configuration)mainConfigControl.getMock( );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ),
+ createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY,
+ DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) );
+ mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ),
+ createChildrenConfigMock( "thread-pool",
+ new Configuration[ 0 ] ) );
+ mainConfigControl.replay( );
+
+ final MockControl childLoggerDefaultControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerDefault =
+ (Logger)childLoggerDefaultControl.getMock( );
+ childLoggerDefaultControl.expectAndReturn( childLoggerDefault.isDebugEnabled( ),
+ true );
+ childLoggerDefault.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" );
+ childLoggerDefaultControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ childLoggerDefaultControl.replay( );
+
+ final MockControl childLoggerMyPoolControl =
+ createStrictControl( Logger.class );
+ final Logger childLoggerMyPool =
+ (Logger)childLoggerMyPoolControl.getMock( );
+ childLoggerMyPoolControl.expectAndReturn( childLoggerMyPool.isDebugEnabled( ),
+ true );
+ childLoggerMyPool.debug( "Executing Command: EasyMock for interface java.lang.Runnable,pool=mypool" );
+ childLoggerMyPoolControl.replay( );
+
+ final MockControl loggerControl = createStrictControl( Logger.class );
+ final Logger logger = (Logger)loggerControl.getMock( );
+ 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" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "starting heart" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Entering loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "No commands available. Will just wait for one" );
+ 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" );
+ 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 );
+ logger.debug( "Hand over Command EasyMock for interface java.lang.Runnable to pool \"mypool\" with delay=100 and interval=100" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Exiting loop" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing all thread pools" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool mypool" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool mypool disposed" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Disposing thread pool default" );
+ loggerControl.expectAndReturn( logger.isDebugEnabled( ), true );
+ logger.debug( "Thread pool default disposed" );
+ loggerControl.replay( );
+
+ final DefaultRunnableManager runnableManager =
+ new DefaultRunnableManager( );
+ runnableManager.enableLogging( logger );
+
+ try
+ {
+ runnableManager.configure( mainConfig );
+ }
+ catch( final ConfigurationException ce )
+ {
+ assertTrue( "Throw unexpected ConfigurationException", false );
+ }
+
+ final MockControl runnableControl =
+ createStrictControl( Runnable.class );
+ final Runnable runnable = (Runnable)runnableControl.getMock( );
+ runnable.run( );
+ runnableControl.replay( );
+
+ try
+ {
+ runnableManager.start( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.createPool( "mypool", 230, 15, 12,
+ Thread.MIN_PRIORITY, false, 15500,
+ "DISCARD", false, 22200 );
+ runnableManager.execute( "mypool", runnable, 100, 100 );
+ Thread.yield( );
+ Thread.sleep( 200 );
+ runnableManager.stop( );
+ Thread.yield( );
+ Thread.sleep( 20 );
+ runnableManager.dispose( );
+ Thread.sleep( 20 );
+ }
+ catch( final Throwable ex )
+ {
+ 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;
+ }
+}
Added: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/components/thread/DefaultThreadFactoryTestCase.java Thu Nov 11 12:38:09 2004
@@ -0,0 +1,57 @@
+package org.apache.cocoon.components.thread;
+
+import junit.framework.TestCase;
+
+public class DefaultThreadFactoryTestCase
+ extends TestCase
+{
+ public final void testSetDaemon()
+ {
+ final DefaultThreadFactory factory = new DefaultThreadFactory();
+ factory.setDaemon(false);
+ final Thread thread = factory.newThread(new DummyRunnable() );
+ assertEquals( "daemon mode", false, thread.isDaemon() );
+ }
+
+ public final void testIsDaemon()
+ {
+ final DefaultThreadFactory factory = new DefaultThreadFactory();
+ factory.setDaemon(false);
+ assertEquals( "daemon mode", false, factory.isDaemon() );
+ }
+
+ public final void testSetPriority()
+ {
+ final DefaultThreadFactory factory = new DefaultThreadFactory();
+ factory.setPriority( Thread.MAX_PRIORITY );
+ final Thread thread = factory.newThread(new DummyRunnable() );
+ assertEquals( "priority", Thread.MAX_PRIORITY, thread.getPriority() );
+ }
+
+ public final void testGetPriority()
+ {
+ final DefaultThreadFactory factory = new DefaultThreadFactory();
+ factory.setPriority( Thread.MAX_PRIORITY );
+ assertEquals( "priority", Thread.MAX_PRIORITY, factory.getPriority() );
+ }
+
+ public final void testNewThread()
+ {
+ 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() );
+ }
+
+ private static class DummyRunnable implements Runnable
+ {
+ public void run()
+ {
+ // nothing
+ }
+ }
+}
Added: cocoon/branches/BRANCH_2_1_X/tools/lib/easymock-1.1.jar
==============================================================================
Binary file. No diff available.