Class Scheduler
- java.lang.Object
-
- 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 runnersParentRunner.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
Nested Classes Modifier and Type Class Description class
Scheduler.ShutdownHandler
There is a way to shutdown the hierarchy of schedulers.
-
Constructor Summary
Constructors Constructor Description Scheduler(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger, org.junit.runner.Description description, Scheduler masterScheduler, SchedulingStrategy strategy)
Should be used with individual pools on suites, classes and methods, seeParallelComputerBuilder.useSeparatePools()
.Scheduler(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger, org.junit.runner.Description description, Scheduler masterScheduler, SchedulingStrategy strategy, int concurrency)
Scheduler(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger, org.junit.runner.Description description, Scheduler masterScheduler, SchedulingStrategy strategy, Balancer balancer)
Can be used by e.g.Scheduler(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger, org.junit.runner.Description description, SchedulingStrategy strategy)
Use e.g.Scheduler(org.apache.maven.plugin.surefire.log.api.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.Scheduler(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger, org.junit.runner.Description description, SchedulingStrategy strategy, Balancer balancer)
New instances should be used by schedulers with limited concurrency bybalancer
against other groups of schedulers.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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()
-
-
-
Constructor Detail
-
Scheduler
public Scheduler(org.apache.maven.plugin.surefire.log.api.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.- Parameters:
logger
- console loggerdescription
- JUnit description of classstrategy
- scheduling strategy
-
Scheduler
public Scheduler(org.apache.maven.plugin.surefire.log.api.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 referenceScheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy)
orScheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy, int)
.- Parameters:
logger
- current logger implementationdescription
- description of current runnerstrategy
- scheduling strategy with a shared thread poolconcurrency
- determines maximum concurrent children scheduled a time viaschedule(Runnable)
- Throws:
NullPointerException
- if nullstrategy
-
Scheduler
public Scheduler(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger, org.junit.runner.Description description, SchedulingStrategy strategy, Balancer balancer)
New instances should be used by schedulers with limited concurrency bybalancer
against other groups of schedulers. The schedulers share one pool.
Unlike inScheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)
which was limiting theconcurrency
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 implementationdescription
- description of current runnerstrategy
- scheduling strategy which may share threads with other strategybalancer
- determines maximum concurrent children scheduled a time viaschedule(Runnable)
- Throws:
NullPointerException
- if nullstrategy
orbalancer
-
Scheduler
public Scheduler(org.apache.maven.plugin.surefire.log.api.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 implementationdescription
- description of current runnermasterScheduler
- scheduler sharing own threads with this slavestrategy
- scheduling strategy for this schedulerbalancer
- determines maximum concurrent children scheduled a time viaschedule(Runnable)
- Throws:
NullPointerException
- if nullmasterScheduler
,strategy
orbalancer
-
Scheduler
public Scheduler(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger, org.junit.runner.Description description, Scheduler masterScheduler, SchedulingStrategy strategy, int concurrency)
- Parameters:
logger
- console loggerdescription
- JUnit description of classmasterScheduler
- a reference toScheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)
orScheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy)
strategy
- scheduling strategyconcurrency
- determines maximum concurrent children scheduled a time viaschedule(Runnable)
- See Also:
Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy)
,Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)
-
Scheduler
public Scheduler(org.apache.maven.plugin.surefire.log.api.ConsoleLogger logger, org.junit.runner.Description description, Scheduler masterScheduler, SchedulingStrategy strategy)
Should be used with individual pools on suites, classes and methods, seeParallelComputerBuilder.useSeparatePools()
.
Cached thread pool is infinite and can be always shared.- Parameters:
logger
- console loggerdescription
- JUnit description of classmasterScheduler
- parent schedulerstrategy
- scheduling strategy
-
-
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, seeregister(Scheduler)
. IfshutdownNow
is set, waiting methods will be interrupted viaThread.interrupt()
.- Parameters:
stopNow
- iftrue
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 interfaceorg.junit.runners.model.RunnerScheduler
-
finished
public void finished()
- Specified by:
finished
in interfaceorg.junit.runners.model.RunnerScheduler
-
newShutdownHandler
protected Scheduler.ShutdownHandler newShutdownHandler()
-
-