org.apache.maven.surefire.junitcore.pc
Class Scheduler

java.lang.Object
  extended by org.apache.maven.surefire.junitcore.pc.Scheduler
All Implemented Interfaces:
org.junit.runners.model.RunnerScheduler

public class Scheduler
extends Object
implements org.junit.runners.model.RunnerScheduler

Schedules tests, controls thread resources, awaiting tests and other schedulers finished, and a master scheduler can shutdown slaves.

The scheduler objects should be first created (and wired) and set in runners ParentRunner.setScheduler(org.junit.runners.model.RunnerScheduler).

A new instance of scheduling strategy should be passed to the constructor of this scheduler.

Since:
2.16
Author:
Tibor Digana (tibor17)

Nested Class Summary
 class Scheduler.ShutdownHandler
          There is a way to shutdown the hierarchy of schedulers.
 
Constructor Summary
Scheduler(ConsoleLogger logger, org.junit.runner.Description description, Scheduler masterScheduler, SchedulingStrategy strategy)
          Should be used with individual pools on suites, classes and methods, see ParallelComputerBuilder.useSeparatePools().
Scheduler(ConsoleLogger logger, org.junit.runner.Description description, Scheduler masterScheduler, SchedulingStrategy strategy, Balancer balancer)
          Can be used by e.g.
Scheduler(ConsoleLogger logger, org.junit.runner.Description description, Scheduler masterScheduler, SchedulingStrategy strategy, int concurrency)
           
Scheduler(ConsoleLogger logger, org.junit.runner.Description description, SchedulingStrategy strategy)
          Use e.g.
Scheduler(ConsoleLogger logger, org.junit.runner.Description description, SchedulingStrategy strategy, Balancer balancer)
          New instances should be used by schedulers with limited concurrency by balancer against other groups of schedulers.
Scheduler(ConsoleLogger logger, org.junit.runner.Description description, SchedulingStrategy strategy, int concurrency)
          Should be used if schedulers in parallel children and parent use one instance of bounded thread pool.
 
Method Summary
protected  void afterExecute()
           
protected  void beforeExecute()
           
protected  ShutdownResult describeStopped(boolean stopNow)
          Attempts to stop all actively executing tasks and immediately returns a collection of descriptions of those tasks which have started prior to this call.
 void finished()
           
protected  void logQuietly(String msg)
           
protected  void logQuietly(Throwable t)
           
protected  Scheduler.ShutdownHandler newShutdownHandler()
           
 void schedule(Runnable childStatement)
           
protected  boolean shutdownThreadPoolsAwaitingKilled()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Scheduler

public Scheduler(ConsoleLogger logger,
                 org.junit.runner.Description description,
                 SchedulingStrategy strategy)
Use e.g. parallel classes have own non-shared thread pool, and methods another pool.

You can use it with one infinite thread pool shared in strategies across all suites, class runners, etc.


Scheduler

public Scheduler(ConsoleLogger logger,
                 org.junit.runner.Description description,
                 SchedulingStrategy strategy,
                 int concurrency)
Should be used if schedulers in parallel children and parent use one instance of bounded thread pool.

Set this scheduler in a e.g. one suite of classes, then every individual class runner should reference Scheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy) or Scheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy, int).

Parameters:
logger - current logger implementation
description - description of current runner
strategy - scheduling strategy with a shared thread pool
concurrency - determines maximum concurrent children scheduled a time via schedule(Runnable)
Throws:
NullPointerException - if null strategy

Scheduler

public Scheduler(ConsoleLogger logger,
                 org.junit.runner.Description description,
                 SchedulingStrategy strategy,
                 Balancer balancer)
New instances should be used by schedulers with limited concurrency by balancer against other groups of schedulers. The schedulers share one pool.

Unlike in Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int) which was limiting the concurrency of children of a runner where this scheduler was set, this balancer is limiting the concurrency of all children in runners having schedulers created by this constructor.

Parameters:
logger - current logger implementation
description - description of current runner
strategy - scheduling strategy which may share threads with other strategy
balancer - determines maximum concurrent children scheduled a time via schedule(Runnable)
Throws:
NullPointerException - if null strategy or balancer

Scheduler

public Scheduler(ConsoleLogger logger,
                 org.junit.runner.Description description,
                 Scheduler masterScheduler,
                 SchedulingStrategy strategy,
                 Balancer balancer)
Can be used by e.g. a runner having parallel classes in use case with parallel suites, classes and methods sharing the same thread pool.

Parameters:
logger - current logger implementation
description - description of current runner
masterScheduler - scheduler sharing own threads with this slave
strategy - scheduling strategy for this scheduler
balancer - determines maximum concurrent children scheduled a time via schedule(Runnable)
Throws:
NullPointerException - if null masterScheduler, strategy or balancer

Scheduler

public Scheduler(ConsoleLogger logger,
                 org.junit.runner.Description description,
                 Scheduler masterScheduler,
                 SchedulingStrategy strategy,
                 int concurrency)
Parameters:
masterScheduler - a reference to Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int) or Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy)
See Also:
Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy), Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)

Scheduler

public Scheduler(ConsoleLogger logger,
                 org.junit.runner.Description description,
                 Scheduler masterScheduler,
                 SchedulingStrategy strategy)
Should be used with individual pools on suites, classes and methods, see ParallelComputerBuilder.useSeparatePools().

Cached thread pool is infinite and can be always shared.

Method Detail

logQuietly

protected void logQuietly(Throwable t)

logQuietly

protected void logQuietly(String msg)

describeStopped

protected ShutdownResult describeStopped(boolean stopNow)
Attempts to stop all actively executing tasks and immediately returns a collection of descriptions of those tasks which have started prior to this call.

This scheduler and other registered schedulers will stop, see register(Scheduler). If shutdownNow is set, waiting methods will be interrupted via Thread.interrupt().

Parameters:
stopNow - if true interrupts waiting test methods
Returns:
collection of descriptions started before shutting down

shutdownThreadPoolsAwaitingKilled

protected boolean shutdownThreadPoolsAwaitingKilled()

beforeExecute

protected void beforeExecute()

afterExecute

protected void afterExecute()

schedule

public void schedule(Runnable childStatement)
Specified by:
schedule in interface org.junit.runners.model.RunnerScheduler

finished

public void finished()
Specified by:
finished in interface org.junit.runners.model.RunnerScheduler

newShutdownHandler

protected Scheduler.ShutdownHandler newShutdownHandler()


Copyright © 2004–2014 The Apache Software Foundation. All rights reserved.