| 1 16 package org.apache.cocoon.components.thread; 17 18 import org.apache.avalon.framework.configuration.Configuration; 19 import org.apache.avalon.framework.configuration.ConfigurationException; 20 import org.apache.avalon.framework.logger.Logger; 21 import org.easymock.MockControl; 22 23 29 public class DefaultRunnableManagerTestCase extends AbstractTestCase 30 { 31 33 38 public DefaultRunnableManagerTestCase( String name ) 39 { 40 super( name ); 41 } 42 43 45 50 public final void testConfigureDaemonPool( ) 51 throws Exception  52 { 53 final MockControl threadPoolConfigControl = 54 createStrictControl( Configuration.class ); 55 final Configuration threadPoolConfig = 56 (Configuration)threadPoolConfigControl.getMock( ); 57 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "name" ), 58 createValueConfigMock( "daemon" ) ); 59 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "queue-size" ), 60 createIntegerConfigMock( 2 * DefaultRunnableManager.DEFAULT_QUEUE_SIZE, 61 DefaultRunnableManager.DEFAULT_QUEUE_SIZE ) ); 62 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "max-pool-size" ), 63 createIntegerConfigMock( 2 * DefaultRunnableManager.DEFAULT_MAX_POOL_SIZE, 64 DefaultRunnableManager.DEFAULT_MAX_POOL_SIZE ) ); 65 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "min-pool-size" ), 66 createIntegerConfigMock( DefaultRunnableManager.DEFAULT_MIN_POOL_SIZE / 3, 67 DefaultRunnableManager.DEFAULT_MIN_POOL_SIZE ) ); 68 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "priority" ), 69 createValueConfigMock( "LOW", 70 DefaultRunnableManager.DEFAULT_THREAD_PRIORITY ) ); 71 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "daemon" ), 72 createBooleanConfigMock( false, 73 DefaultRunnableManager.DEFAULT_DAEMON_MODE ) ); 74 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "keep-alive-time-ms" ), 75 createLongConfigMock( DefaultRunnableManager.DEFAULT_KEEP_ALIVE_TIME / 2, 76 DefaultRunnableManager.DEFAULT_KEEP_ALIVE_TIME ) ); 77 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "block-policy" ), 78 createValueConfigMock( "WAIT", 79 DefaultThreadPool.POLICY_DEFAULT ) ); 80 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "shutdown-graceful" ), 81 createBooleanConfigMock( true, 82 DefaultRunnableManager.DEFAULT_SHUTDOWN_GRACEFUL ) ); 83 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "shutdown-wait-time-ms" ), 84 createIntegerConfigMock( DefaultRunnableManager.DEFAULT_SHUTDOWN_WAIT_TIME / 2, 85 DefaultRunnableManager.DEFAULT_SHUTDOWN_WAIT_TIME ) ); 86 threadPoolConfigControl.replay( ); 87 88 final MockControl mainConfigControl = 89 createStrictControl( Configuration.class ); 90 final Configuration mainConfig = 91 (Configuration)mainConfigControl.getMock( ); 92 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ), 93 createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY, 94 DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) ); 95 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ), 96 createChildrenConfigMock( "thread-pool", 97 new Configuration [] 98 { 99 threadPoolConfig 100 } ) ); 101 mainConfigControl.replay( ); 102 103 final MockControl childLoggerDaemonControl = 104 createStrictControl( Logger.class ); 105 final Logger childLoggerDaemon = 106 (Logger)childLoggerDaemonControl.getMock( ); 107 childLoggerDaemonControl.replay( ); 108 109 final MockControl childLoggerDefaultControl = 110 createStrictControl( Logger.class ); 111 final Logger childLoggerDefault = 112 (Logger)childLoggerDefaultControl.getMock( ); 113 childLoggerDefaultControl.replay( ); 114 115 final MockControl loggerControl = createStrictControl( Logger.class ); 116 final Logger logger = (Logger)loggerControl.getMock( ); 117 logger.warn( "Unknown thread priority \"LOW\". Set to \"NORM\"." ); 118 loggerControl.expectAndReturn( logger.getChildLogger( "daemon" ), 119 childLoggerDaemon ); 120 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 121 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" ); 122 loggerControl.expectAndReturn( logger.getChildLogger( "default" ), 123 childLoggerDefault ); 124 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 125 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" ); 126 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 127 logger.debug( "Disposing all thread pools" ); 128 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 129 logger.debug( "Disposing thread pool daemon" ); 130 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 131 logger.debug( "Thread pool daemon disposed" ); 132 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 133 logger.debug( "Disposing thread pool default" ); 134 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 135 logger.debug( "Thread pool default disposed" ); 136 loggerControl.replay( ); 137 138 final DefaultRunnableManager runnableManager = 139 new DefaultRunnableManager( ); 140 runnableManager.enableLogging( logger ); 141 142 try 143 { 144 runnableManager.configure( mainConfig ); 145 } 146 catch( final ConfigurationException ce ) 147 { 148 assertTrue( "Throw unexpected ConfigurationException", false ); 149 } 150 151 runnableManager.dispose( ); 152 verify( ); 153 } 154 155 158 public final void testConfigureMinimal( ) 159 { 160 final MockControl mainConfigControl = 161 createStrictControl( Configuration.class ); 162 final Configuration mainConfig = 163 (Configuration)mainConfigControl.getMock( ); 164 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ), 165 createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY, 166 DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) ); 167 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ), 168 createChildrenConfigMock( "thread-pool", 169 new Configuration[ 0 ] ) ); 170 mainConfigControl.replay( ); 171 172 final MockControl childLoggerDefaultControl = 173 createStrictControl( Logger.class ); 174 final Logger childLoggerDefault = 175 (Logger)childLoggerDefaultControl.getMock( ); 176 childLoggerDefaultControl.replay( ); 177 178 final MockControl loggerControl = createStrictControl( Logger.class ); 179 final Logger logger = (Logger)loggerControl.getMock( ); 180 loggerControl.expectAndReturn( logger.getChildLogger( "default" ), 181 childLoggerDefault ); 182 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 183 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" ); 184 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 185 logger.debug( "Disposing all thread pools" ); 186 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 187 logger.debug( "Disposing thread pool default" ); 188 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 189 logger.debug( "Thread pool default disposed" ); 190 loggerControl.replay( ); 191 192 final DefaultRunnableManager runnableManager = 193 new DefaultRunnableManager( ); 194 runnableManager.enableLogging( logger ); 195 196 try 197 { 198 runnableManager.configure( mainConfig ); 199 } 200 catch( final ConfigurationException ce ) 201 { 202 assertTrue( "Throw unexpected ConfigurationException", false ); 203 } 204 205 runnableManager.dispose( ); 206 verify( ); 207 } 208 209 214 public final void testConfigureMyPool( ) 215 throws Exception  216 { 217 final MockControl threadPoolConfigControl = 218 createStrictControl( Configuration.class ); 219 final Configuration threadPoolConfig = 220 (Configuration)threadPoolConfigControl.getMock( ); 221 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "name" ), 222 createValueConfigMock( "mypool" ) ); 223 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "queue-size" ), 224 createIntegerConfigMock( 2 * DefaultRunnableManager.DEFAULT_QUEUE_SIZE, 225 DefaultRunnableManager.DEFAULT_QUEUE_SIZE ) ); 226 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "max-pool-size" ), 227 createIntegerConfigMock( 2 * DefaultRunnableManager.DEFAULT_MAX_POOL_SIZE, 228 DefaultRunnableManager.DEFAULT_MAX_POOL_SIZE ) ); 229 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "min-pool-size" ), 230 createIntegerConfigMock( DefaultRunnableManager.DEFAULT_MIN_POOL_SIZE / 3, 231 DefaultRunnableManager.DEFAULT_MIN_POOL_SIZE ) ); 232 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "priority" ), 233 createValueConfigMock( "MIN", 234 DefaultRunnableManager.DEFAULT_THREAD_PRIORITY ) ); 235 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "daemon" ), 236 createBooleanConfigMock( false, 237 DefaultRunnableManager.DEFAULT_DAEMON_MODE ) ); 238 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "keep-alive-time-ms" ), 239 createLongConfigMock( DefaultRunnableManager.DEFAULT_KEEP_ALIVE_TIME / 2, 240 DefaultRunnableManager.DEFAULT_KEEP_ALIVE_TIME ) ); 241 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "block-policy" ), 242 createValueConfigMock( "WAIT", 243 DefaultThreadPool.POLICY_DEFAULT ) ); 244 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "shutdown-graceful" ), 245 createBooleanConfigMock( true, 246 DefaultRunnableManager.DEFAULT_SHUTDOWN_GRACEFUL ) ); 247 threadPoolConfigControl.expectAndReturn( threadPoolConfig.getChild( "shutdown-wait-time-ms" ), 248 createIntegerConfigMock( DefaultRunnableManager.DEFAULT_SHUTDOWN_WAIT_TIME / 2, 249 DefaultRunnableManager.DEFAULT_SHUTDOWN_WAIT_TIME ) ); 250 threadPoolConfigControl.replay( ); 251 252 final MockControl mainConfigControl = 253 createStrictControl( Configuration.class ); 254 final Configuration mainConfig = 255 (Configuration)mainConfigControl.getMock( ); 256 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ), 257 createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY, 258 DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) ); 259 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ), 260 createChildrenConfigMock( "thread-pool", 261 new Configuration [] 262 { 263 threadPoolConfig 264 } ) ); 265 mainConfigControl.replay( ); 266 267 final MockControl childLoggerDefaultControl = 268 createStrictControl( Logger.class ); 269 final Logger childLoggerDefault = 270 (Logger)childLoggerDefaultControl.getMock( ); 271 childLoggerDefaultControl.replay( ); 272 273 final MockControl childLoggerMyPoolControl = 274 createStrictControl( Logger.class ); 275 final Logger childLoggerMyPool = 276 (Logger)childLoggerMyPoolControl.getMock( ); 277 childLoggerMyPoolControl.replay( ); 278 279 final MockControl loggerControl = createStrictControl( Logger.class ); 280 final Logger logger = (Logger)loggerControl.getMock( ); 281 loggerControl.expectAndReturn( logger.getChildLogger( "mypool" ), 282 childLoggerMyPool ); 283 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 284 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" ); 285 loggerControl.expectAndReturn( logger.getChildLogger( "default" ), 286 childLoggerDefault ); 287 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 288 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" ); 289 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 290 logger.debug( "Disposing all thread pools" ); 291 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 292 logger.debug( "Disposing thread pool mypool" ); 293 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 294 logger.debug( "Thread pool mypool disposed" ); 295 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 296 logger.debug( "Disposing thread pool default" ); 297 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 298 logger.debug( "Thread pool default disposed" ); 299 loggerControl.replay( ); 300 301 final DefaultRunnableManager runnableManager = 302 new DefaultRunnableManager( ); 303 runnableManager.enableLogging( logger ); 304 305 try 306 { 307 runnableManager.configure( mainConfig ); 308 } 309 catch( final ConfigurationException ce ) 310 { 311 assertTrue( "Throw unexpected ConfigurationException", false ); 312 } 313 314 runnableManager.dispose( ); 315 verify( ); 316 } 317 318 322 public final void testCreatePoolStringintintintintbooleanlongStringbooleanint( ) 323 { 324 final MockControl mainConfigControl = 325 createStrictControl( Configuration.class ); 326 final Configuration mainConfig = 327 (Configuration)mainConfigControl.getMock( ); 328 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ), 329 createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY, 330 DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) ); 331 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ), 332 createChildrenConfigMock( "thread-pool", 333 new Configuration[ 0 ] ) ); 334 mainConfigControl.replay( ); 335 336 final MockControl childLoggerDefaultControl = 337 createStrictControl( Logger.class ); 338 final Logger childLoggerDefault = 339 (Logger)childLoggerDefaultControl.getMock( ); 340 childLoggerDefaultControl.replay( ); 341 342 final MockControl childLoggerMyPoolControl = 343 createStrictControl( Logger.class ); 344 final Logger childLoggerMyPool = 345 (Logger)childLoggerMyPoolControl.getMock( ); 346 childLoggerMyPoolControl.replay( ); 347 348 final MockControl loggerControl = createStrictControl( Logger.class ); 349 final Logger logger = (Logger)loggerControl.getMock( ); 350 loggerControl.expectAndReturn( logger.getChildLogger( "default" ), 351 childLoggerDefault ); 352 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 353 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" ); 354 loggerControl.expectAndReturn( logger.getChildLogger( "mypool" ), 355 childLoggerMyPool ); 356 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 357 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" ); 358 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 359 logger.debug( "Disposing all thread pools" ); 360 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 361 logger.debug( "Disposing thread pool mypool" ); 362 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 363 logger.debug( "Thread pool mypool disposed" ); 364 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 365 logger.debug( "Disposing thread pool default" ); 366 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 367 logger.debug( "Thread pool default disposed" ); 368 loggerControl.replay( ); 369 370 final DefaultRunnableManager runnableManager = 371 new DefaultRunnableManager( ); 372 runnableManager.enableLogging( logger ); 373 374 try 375 { 376 runnableManager.configure( mainConfig ); 377 } 378 catch( final ConfigurationException ce ) 379 { 380 assertTrue( "Throw unexpected ConfigurationException", false ); 381 } 382 383 runnableManager.createPool( "mypool", 230, 15, 12, Thread.MIN_PRIORITY, 384 false, 15500, "DISCARD", false, 22200 ); 385 runnableManager.dispose( ); 386 verify( ); 387 } 388 389 393 public final void testCreatePoolintintintintbooleanlongStringbooleanint( ) 394 { 395 final MockControl mainConfigControl = 396 createStrictControl( Configuration.class ); 397 final Configuration mainConfig = 398 (Configuration)mainConfigControl.getMock( ); 399 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ), 400 createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY, 401 DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) ); 402 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ), 403 createChildrenConfigMock( "thread-pool", 404 new Configuration[ 0 ] ) ); 405 mainConfigControl.replay( ); 406 407 final MockControl childLoggerDefaultControl = 408 createStrictControl( Logger.class ); 409 final Logger childLoggerDefault = 410 (Logger)childLoggerDefaultControl.getMock( ); 411 childLoggerDefaultControl.replay( ); 412 413 final MockControl childLoggerAnonControl = 414 createStrictControl( Logger.class ); 415 final Logger childLoggerAnon = 416 (Logger)childLoggerAnonControl.getMock( ); 417 childLoggerAnonControl.replay( ); 418 419 final MockControl loggerControl = createStrictControl( Logger.class ); 420 final Logger logger = (Logger)loggerControl.getMock( ); 421 loggerControl.expectAndReturn( logger.getChildLogger( "default" ), 422 childLoggerDefault ); 423 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 424 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" ); 425 loggerControl.expectAndReturn( logger.getChildLogger( "anon-xxx" ), 426 childLoggerAnon ); 427 loggerControl.setMatcher( MockControl.ALWAYS_MATCHER ); 428 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 429 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" ); 430 loggerControl.setMatcher( MockControl.ALWAYS_MATCHER ); 431 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 432 logger.debug( "Disposing all thread pools" ); 433 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 434 logger.debug( "Disposing thread pool anon-xxx" ); 435 loggerControl.setMatcher( MockControl.ALWAYS_MATCHER ); 436 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 437 logger.debug( "Thread pool anon-xxx disposed" ); 438 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 439 logger.debug( "Disposing thread pool default" ); 440 loggerControl.setMatcher( MockControl.ALWAYS_MATCHER ); 441 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 442 logger.debug( "Thread pool default disposed" ); 443 loggerControl.replay( ); 444 445 final DefaultRunnableManager runnableManager = 446 new DefaultRunnableManager( ); 447 runnableManager.enableLogging( logger ); 448 449 try 450 { 451 runnableManager.configure( mainConfig ); 452 } 453 catch( final ConfigurationException ce ) 454 { 455 assertTrue( "Throw unexpected ConfigurationException", false ); 456 } 457 458 final ThreadPool threadPool = 459 runnableManager.createPool( 200, 5, 2, Thread.MAX_PRIORITY, true, 460 15000, "ABORT", true, 22000 ); 461 assertEquals( "queue-size", 200, threadPool.getMaximumQueueSize( ) ); 462 assertEquals( "max-pool-size", 5, threadPool.getMaximumPoolSize( ) ); 463 assertEquals( "min-pool-size", 2, threadPool.getMinimumPoolSize( ) ); 464 assertEquals( "priority", Thread.MAX_PRIORITY, 465 threadPool.getPriority( ) ); 466 assertEquals( "keep-alive-time-ms", 15000, 467 threadPool.getKeepAliveTime( ) ); 468 assertEquals( "block-policy", "ABORT", threadPool.getBlockPolicy( ) ); 469 runnableManager.dispose( ); 470 verify( ); 471 } 472 473 476 public final void testExecuteRunnable( ) 477 { 478 final MockControl mainConfigControl = 479 createStrictControl( Configuration.class ); 480 final Configuration mainConfig = 481 (Configuration)mainConfigControl.getMock( ); 482 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ), 483 createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY, 484 DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) ); 485 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ), 486 createChildrenConfigMock( "thread-pool", 487 new Configuration[ 0 ] ) ); 488 mainConfigControl.replay( ); 489 490 final MockControl childLoggerControl = 491 createStrictControl( Logger.class ); 492 final Logger childLogger = (Logger)childLoggerControl.getMock( ); 493 childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true ); 494 childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" ); 495 childLoggerControl.setMatcher( MockControl.ALWAYS_MATCHER ); 496 childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true ); 497 childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" ); 498 childLoggerControl.replay( ); 499 500 final MockControl loggerControl = createStrictControl( Logger.class ); 501 final Logger logger = (Logger)loggerControl.getMock( ); 502 loggerControl.expectAndReturn( logger.getChildLogger( "default" ), 503 childLogger ); 504 loggerControl.expectAndReturn( logger.isInfoEnabled( ), true ); 505 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" ); 506 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 507 logger.debug( "Starting the heart" ); 508 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 509 logger.debug( "Entering loop" ); 510 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 511 logger.debug( "No commands available. Will just wait for one" ); 512 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 513 logger.debug( "Command entered: EasyMock for interface java.lang.Runnable, pool=default, delay=0, interval=0" ); 514 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 515 logger.debug( "Executing command EasyMock for interface java.lang.Runnable in pool \"default\", schedule with interval=0" ); 516 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 517 logger.debug( "No commands available. Will just wait for one" ); 518 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 519 logger.debug( "Exiting loop" ); 520 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 521 logger.debug( "Disposing all thread pools" ); 522 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 523 logger.debug( "Disposing thread pool default" ); 524 loggerControl.expectAndReturn( logger.isDebugEnabled( ), true ); 525 logger.debug( "Thread pool default disposed" ); 526 loggerControl.replay( ); 527 528 final DefaultRunnableManager runnableManager = 529 new DefaultRunnableManager( ); 530 runnableManager.enableLogging( logger ); 531 532 try 533 { 534 runnableManager.configure( mainConfig ); 535 } 536 catch( final ConfigurationException ce ) 537 { 538 assertTrue( "Throw unexpected ConfigurationException", false ); 539 } 540 541 final MockControl runnableControl = 542 createStrictControl( Runnable .class ); 543 final Runnable runnable = (Runnable )runnableControl.getMock( ); 544 runnable.run( ); 545 runnableControl.replay( ); 546 547 try 548 { 549 runnableManager.start( ); 550 Thread.yield( ); 551 Thread.sleep( 20 ); 552 runnableManager.execute( runnable ); 553 Thread.yield( ); 554 Thread.sleep( 20 ); 555 runnableManager.stop( ); 556 Thread.yield( ); 557 Thread.sleep( 20 ); 558 runnableManager.dispose( ); 559 Thread.sleep( 20 ); 560 } 561 catch( final Throwable ex ) 562 { 563 ex.printStackTrace( ); 564 assertTrue( "Unexpected Exception", false ); 565 } 566 567 verify( ); 568 } 569 570 573 public final void testExecuteRunnablelong( ) 574 { 575 final MockControl mainConfigControl = 576 createStrictControl( Configuration.class ); 577 final Configuration mainConfig = 578 (Configuration)mainConfigControl.getMock( ); 579 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-factory" ), 580 createValueConfigMock( DefaultRunnableManager.DEFAULT_THREAD_FACTORY, 581 DefaultRunnableManager.DEFAULT_THREAD_FACTORY ) ); 582 mainConfigControl.expectAndReturn( mainConfig.getChild( "thread-pools" ), 583 createChildrenConfigMock( "thread-pool", 584 new Configuration[ 0 ] ) ); 585 mainConfigControl.replay( ); 586 587 final MockControl childLoggerControl = 588 createStrictControl( Logger.class ); 589 final Logger childLogger = (Logger)childLoggerControl.getMock( ); 590 childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true ); 591 childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" ); 592 childLoggerControl.setMatcher( MockControl.ALWAYS_MATCHER ); 593 childLoggerControl.expectAndReturn( childLogger.isDebugEnabled( ), true ); 594 childLogger.debug( "Executing Command: org.apache.cocoon.components.thread.DefaultRunnableManager" ); 595 childLoggerControl.replay( ); 596 597 final MockControl loggerControl = createStrictControl( Logger.class ); 598 final Logger logger = (Logger)loggerControl.getMock( ); 599 loggerControl.expectAndReturn( logger.getChildLogger( "default" ), 600  
|