Repository: maven-surefire Updated Branches: refs/heads/master 4713d3497 -> 1c34e05bd
Parallel Computer should use ConsoleLogger interfce Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/1c34e05b Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/1c34e05b Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/1c34e05b Branch: refs/heads/master Commit: 1c34e05bdb5b69a513a8a29bb1018bf3cc8d9c69 Parents: 4713d34 Author: tibordigana <tibo...@lycos.com> Authored: Tue Nov 11 23:16:20 2014 +0100 Committer: tibordigana <tibo...@lycos.com> Committed: Tue Nov 11 23:16:20 2014 +0100 ---------------------------------------------------------------------- .../surefire/junitcore/JUnitCoreProvider.java | 4 +- .../surefire/junitcore/JUnitCoreWrapper.java | 23 +++---- .../pc/AbstractThreadPoolStrategy.java | 9 ++- .../surefire/junitcore/pc/InvokerStrategy.java | 7 +++ .../pc/NonSharedThreadPoolStrategy.java | 6 +- .../junitcore/pc/ParallelComputerBuilder.java | 36 +++++++---- .../maven/surefire/junitcore/pc/Scheduler.java | 63 +++++++++++++------- .../junitcore/pc/SchedulingStrategies.java | 22 ++++--- .../junitcore/pc/SchedulingStrategy.java | 23 +++++-- .../junitcore/pc/SharedThreadPoolStrategy.java | 6 +- .../junitcore/pc/SingleThreadScheduler.java | 15 ++++- .../apache/maven/surefire/junitcore/Logger.java | 30 ++++++++++ .../surefire/junitcore/Surefire746Test.java | 2 +- .../pc/ParallelComputerBuilderTest.java | 46 +++++++------- .../junitcore/pc/ParallelComputerUtilTest.java | 11 ++-- .../junitcore/pc/SchedulingStrategiesTest.java | 13 ++-- 16 files changed, 214 insertions(+), 102 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java index 06ebd20..7895993 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java @@ -141,7 +141,7 @@ public class JUnitCoreProvider JUnitTestFailureListener testFailureListener = new JUnitTestFailureListener(); customRunListeners.add( 0, testFailureListener ); - JUnitCoreWrapper.execute( testsToRun, jUnitCoreParameters, customRunListeners, filter ); + JUnitCoreWrapper.execute( consoleLogger, testsToRun, jUnitCoreParameters, customRunListeners, filter ); // Rerun failing tests if rerunFailingTestsCount is larger than 0 if ( rerunFailingTestsCount > 0 ) @@ -153,7 +153,7 @@ public class JUnitCoreProvider testFailureListener.reset(); final FilterFactory filterFactory = new FilterFactory( testClassLoader ); Filter failingMethodsFilter = filterFactory.createFailingMethodFilter( failingTests ); - JUnitCoreWrapper.execute( testsToRun, jUnitCoreParameters, customRunListeners, + JUnitCoreWrapper.execute( consoleLogger, testsToRun, jUnitCoreParameters, customRunListeners, filterFactory.and( filter, failingMethodsFilter ) ); } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java index 2f51438..ee6796c 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreWrapper.java @@ -22,6 +22,7 @@ package org.apache.maven.surefire.junitcore; import org.apache.maven.surefire.common.junit4.JUnit4RunListener; import org.apache.maven.surefire.junitcore.pc.ParallelComputer; import org.apache.maven.surefire.junitcore.pc.ParallelComputerBuilder; +import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.testset.TestSetFailedException; import org.apache.maven.surefire.util.TestsToRun; import org.junit.runner.Computer; @@ -43,18 +44,18 @@ import java.util.List; class JUnitCoreWrapper { - public static void execute( TestsToRun testsToRun, JUnitCoreParameters jUnitCoreParameters, + public static void execute( ConsoleLogger logger, TestsToRun testsToRun, JUnitCoreParameters jUnitCoreParameters, List<RunListener> listeners, Filter filter ) throws TestSetFailedException { JUnitCore junitCore = createJUnitCore( listeners ); if ( testsToRun.allowEagerReading() ) { - executeEager( testsToRun, filter, jUnitCoreParameters, junitCore ); + executeEager( logger, testsToRun, filter, jUnitCoreParameters, junitCore ); } else { - executeLazy( testsToRun, filter, jUnitCoreParameters, junitCore ); + executeLazy( logger, testsToRun, filter, jUnitCoreParameters, junitCore ); } } @@ -68,23 +69,23 @@ class JUnitCoreWrapper return junitCore; } - private static void executeEager( TestsToRun testsToRun, Filter filter, JUnitCoreParameters jUnitCoreParameters, - JUnitCore junitCore ) + private static void executeEager( ConsoleLogger logger, TestsToRun testsToRun, Filter filter, + JUnitCoreParameters jUnitCoreParameters, JUnitCore junitCore ) throws TestSetFailedException { Class[] tests = testsToRun.getLocatedClasses(); - Computer computer = createComputer( jUnitCoreParameters ); + Computer computer = createComputer( logger, jUnitCoreParameters ); createRequestAndRun( filter, computer, junitCore, tests ); } - private static void executeLazy( TestsToRun testsToRun, Filter filter, JUnitCoreParameters jUnitCoreParameters, - JUnitCore junitCore ) + private static void executeLazy( ConsoleLogger logger, TestsToRun testsToRun, Filter filter, + JUnitCoreParameters jUnitCoreParameters, JUnitCore junitCore ) throws TestSetFailedException { // in order to support LazyTestsToRun, the iterator must be used for ( Class clazz : testsToRun ) { - Computer computer = createComputer( jUnitCoreParameters ); + Computer computer = createComputer( logger, jUnitCoreParameters ); createRequestAndRun( filter, computer, junitCore, clazz ); } } @@ -117,12 +118,12 @@ class JUnitCoreWrapper } } - private static Computer createComputer( JUnitCoreParameters parameters ) + private static Computer createComputer( ConsoleLogger logger, JUnitCoreParameters parameters ) throws TestSetFailedException { return parameters.isNoThreading() ? Computer.serial() - : new ParallelComputerBuilder( parameters ).buildComputer(); + : new ParallelComputerBuilder( logger, parameters ).buildComputer(); } private static class FilteringRequest http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java index 852e24e..17db2ba 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/AbstractThreadPoolStrategy.java @@ -19,6 +19,8 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.report.ConsoleLogger; + import java.util.Collection; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; @@ -45,13 +47,14 @@ abstract class AbstractThreadPoolStrategy private volatile boolean isDestroyed; - AbstractThreadPoolStrategy( ExecutorService threadPool ) + AbstractThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool ) { - this( threadPool, null ); + this( logger, threadPool, null ); } - AbstractThreadPoolStrategy( ExecutorService threadPool, Collection<Future<?>> futureResults ) + AbstractThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool, Collection<Future<?>> futureResults ) { + super( logger ); this.threadPool = threadPool; this.futureResults = futureResults; } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java index 6dba00d..3f95915 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/InvokerStrategy.java @@ -19,6 +19,8 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.report.ConsoleLogger; + import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; @@ -35,6 +37,11 @@ final class InvokerStrategy private final Queue<Thread> activeThreads = new ConcurrentLinkedQueue<Thread>(); + protected InvokerStrategy( ConsoleLogger logger ) + { + super( logger ); + } + @Override public void schedule( Runnable task ) { http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java index 9fa1e6b..88b13d0 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/NonSharedThreadPoolStrategy.java @@ -19,6 +19,8 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.report.ConsoleLogger; + import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; @@ -32,9 +34,9 @@ import java.util.concurrent.TimeUnit; final class NonSharedThreadPoolStrategy extends AbstractThreadPoolStrategy { - NonSharedThreadPoolStrategy( ExecutorService threadPool ) + NonSharedThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool ) { - super( threadPool ); + super( logger, threadPool ); } @Override http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java index dd120f9..3238d34 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilder.java @@ -35,6 +35,7 @@ import java.util.concurrent.Executors; import net.jcip.annotations.NotThreadSafe; import org.apache.maven.surefire.junitcore.JUnitCoreParameters; +import org.apache.maven.surefire.report.ConsoleLogger; import org.apache.maven.surefire.testset.TestSetFailedException; import org.junit.internal.runners.ErrorReportingRunner; import org.junit.runner.Description; @@ -84,6 +85,8 @@ public final class ParallelComputerBuilder private final Map<Type, Integer> parallelGroups = new EnumMap<Type, Integer>( Type.class ); + private final ConsoleLogger logger; + private boolean useSeparatePools; private int totalPoolSize; @@ -99,8 +102,9 @@ public final class ParallelComputerBuilder * Can be used only in unit tests. * Do NOT call this constructor in production. */ - ParallelComputerBuilder() + ParallelComputerBuilder( ConsoleLogger logger ) { + this.logger = logger; runningInTests = true; useSeparatePools(); parallelGroups.put( SUITES, 0 ); @@ -108,9 +112,9 @@ public final class ParallelComputerBuilder parallelGroups.put( METHODS, 0 ); } - public ParallelComputerBuilder( JUnitCoreParameters parameters ) + public ParallelComputerBuilder( ConsoleLogger logger, JUnitCoreParameters parameters ) { - this(); + this( logger ); runningInTests = false; this.parameters = parameters; } @@ -226,7 +230,8 @@ public final class ParallelComputerBuilder final class PC extends ParallelComputer { - private final SingleThreadScheduler notThreadSafeTests = new SingleThreadScheduler(); + private final SingleThreadScheduler notThreadSafeTests = + new SingleThreadScheduler( ParallelComputerBuilder.this.logger ); final Collection<ParentRunner> suites = new LinkedHashSet<ParentRunner>(); @@ -390,18 +395,21 @@ public final class ParallelComputerBuilder private Scheduler createMaster( ExecutorService pool, int poolSize ) { final int finalRunnersCounter = countFinalRunners(); // can be 0, 1, 2 or 3 + final SchedulingStrategy strategy; if ( finalRunnersCounter <= 1 || poolSize <= 1 ) { - return new Scheduler( null, new InvokerStrategy() ); + strategy = new InvokerStrategy( ParallelComputerBuilder.this.logger ); } else if ( pool != null && poolSize == Integer.MAX_VALUE ) { - return new Scheduler( null, new SharedThreadPoolStrategy( pool ) ); + strategy = new SharedThreadPoolStrategy( ParallelComputerBuilder.this.logger, pool ); } else { - return new Scheduler( null, SchedulingStrategies.createParallelStrategy( finalRunnersCounter ) ); + strategy = SchedulingStrategies.createParallelStrategy( ParallelComputerBuilder.this.logger, + finalRunnersCounter ); } + return new Scheduler( ParallelComputerBuilder.this.logger, null, strategy ); } private int countFinalRunners() @@ -570,24 +578,28 @@ public final class ParallelComputerBuilder Balancer concurrency ) { doParallel &= pool != null; - SchedulingStrategy strategy = doParallel ? new SharedThreadPoolStrategy( pool ) : new InvokerStrategy(); - return new Scheduler( desc, master, strategy, concurrency ); + SchedulingStrategy strategy = doParallel + ? new SharedThreadPoolStrategy( ParallelComputerBuilder.this.logger, pool ) + : new InvokerStrategy( ParallelComputerBuilder.this.logger ); + return new Scheduler( ParallelComputerBuilder.this.logger, desc, master, strategy, concurrency ); } private Scheduler createScheduler( int poolSize ) { + final SchedulingStrategy strategy; if ( poolSize == Integer.MAX_VALUE ) { - return new Scheduler( null, master, SchedulingStrategies.createParallelStrategyUnbounded() ); + strategy = SchedulingStrategies.createParallelStrategyUnbounded( ParallelComputerBuilder.this.logger ); } else if ( poolSize == 0 ) { - return new Scheduler( null, master, new InvokerStrategy() ); + strategy = new InvokerStrategy( ParallelComputerBuilder.this.logger ); } else { - return new Scheduler( null, master, SchedulingStrategies.createParallelStrategy( poolSize ) ); + strategy = SchedulingStrategies.createParallelStrategy( ParallelComputerBuilder.this.logger, poolSize ); } + return new Scheduler( ParallelComputerBuilder.this.logger, null, master, strategy ); } private boolean canSchedule( Runner runner ) http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java index 7f74460..9fa1e40 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/Scheduler.java @@ -19,9 +19,12 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.report.ConsoleLogger; import org.junit.runner.Description; import org.junit.runners.model.RunnerScheduler; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; import java.util.Collection; import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; @@ -53,6 +56,8 @@ public class Scheduler private final Description description; + private final ConsoleLogger logger; + private volatile boolean shutdown = false; private volatile boolean started = false; @@ -67,44 +72,48 @@ public class Scheduler * You can use it with one infinite thread pool shared in strategies across all * suites, class runners, etc. */ - public Scheduler( Description description, SchedulingStrategy strategy ) + public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy ) { - this( description, strategy, -1 ); + this( logger, description, strategy, -1 ); } /** * Should be used if schedulers in parallel children and parent use one instance of bounded thread pool. * <p/> * Set this scheduler in a e.g. one suite of classes, then every individual class runner should reference - * {@link #Scheduler(org.junit.runner.Description, Scheduler, SchedulingStrategy)} - * or {@link #Scheduler(org.junit.runner.Description, Scheduler, SchedulingStrategy, int)}. + * {@link Scheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy)} + * or {@link Scheduler(ConsoleLogger, org.junit.runner.Description, Scheduler, SchedulingStrategy, int)}. * + * @param logger current logger implementation * @param description description of current runner * @param strategy scheduling strategy with a shared thread pool * @param concurrency determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)} * @throws NullPointerException if null <tt>strategy</tt> */ - public Scheduler( Description description, SchedulingStrategy strategy, int concurrency ) + public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy, int concurrency ) { - this( description, strategy, BalancerFactory.createBalancer( concurrency ) ); + this( logger, description, strategy, BalancerFactory.createBalancer( concurrency ) ); } /** * New instances should be used by schedulers with limited concurrency by <tt>balancer</tt> * against other groups of schedulers. The schedulers share one pool. * <p/> - * Unlike in {@link #Scheduler(org.junit.runner.Description, SchedulingStrategy, int)} which was limiting - * the <tt>concurrency</tt> of children of a runner where this scheduler was set, <em>this</em> <tt>balancer</tt> - * is limiting the concurrency of all children in runners having schedulers created by this constructor. + * Unlike in {@link Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)} which was + * limiting the <tt>concurrency</tt> of children of a runner where this scheduler was set, <em>this</em> + * <tt>balancer</tt> is limiting the concurrency of all children in runners having schedulers created by this + * constructor. * + * @param logger current logger implementation * @param description description of current runner * @param strategy scheduling strategy which may share threads with other strategy * @param balancer determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)} * @throws NullPointerException if null <tt>strategy</tt> or <tt>balancer</tt> */ - public Scheduler( Description description, SchedulingStrategy strategy, Balancer balancer ) + public Scheduler( ConsoleLogger logger, Description description, SchedulingStrategy strategy, Balancer balancer ) { strategy.setDefaultShutdownHandler( newShutdownHandler() ); + this.logger = logger; this.description = description; this.strategy = strategy; this.balancer = balancer; @@ -115,29 +124,32 @@ public class Scheduler * 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. * + * @param logger current logger implementation * @param description description of current runner * @param masterScheduler scheduler sharing own threads with this slave * @param strategy scheduling strategy for this scheduler * @param balancer determines maximum concurrent children scheduled a time via {@link #schedule(Runnable)} * @throws NullPointerException if null <tt>masterScheduler</tt>, <tt>strategy</tt> or <tt>balancer</tt> */ - public Scheduler( Description description, Scheduler masterScheduler, SchedulingStrategy strategy, - Balancer balancer ) + public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler, + SchedulingStrategy strategy, Balancer balancer ) { - this( description, strategy, balancer ); + this( logger, description, strategy, balancer ); strategy.setDefaultShutdownHandler( newShutdownHandler() ); masterScheduler.register( this ); } /** - * @param masterScheduler a reference to {@link #Scheduler(org.junit.runner.Description, SchedulingStrategy, int)} - * or {@link #Scheduler(org.junit.runner.Description, SchedulingStrategy)} - * @see #Scheduler(org.junit.runner.Description, SchedulingStrategy) - * @see #Scheduler(org.junit.runner.Description, SchedulingStrategy, int) + * @param masterScheduler a reference to + * {@link Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int)} + * or {@link Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy)} + * @see Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy) + * @see Scheduler(ConsoleLogger, org.junit.runner.Description, SchedulingStrategy, int) */ - public Scheduler( Description description, Scheduler masterScheduler, SchedulingStrategy strategy, int concurrency ) + public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler, + SchedulingStrategy strategy, int concurrency ) { - this( description, strategy, concurrency ); + this( logger, description, strategy, concurrency ); strategy.setDefaultShutdownHandler( newShutdownHandler() ); masterScheduler.register( this ); } @@ -148,9 +160,10 @@ public class Scheduler * <p/> * Cached thread pool is infinite and can be always shared. */ - public Scheduler( Description description, Scheduler masterScheduler, SchedulingStrategy strategy ) + public Scheduler( ConsoleLogger logger, Description description, Scheduler masterScheduler, + SchedulingStrategy strategy ) { - this( description, masterScheduler, strategy, 0 ); + this( logger, description, masterScheduler, strategy, 0 ); } private void setController( Controller masterController ) @@ -192,12 +205,16 @@ public class Scheduler protected void logQuietly( Throwable t ) { - t.printStackTrace( System.out ); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrintStream stream = new PrintStream( out ); + t.printStackTrace( stream ); + stream.close(); + logger.info( out.toString() ); } protected void logQuietly( String msg ) { - System.out.println( msg ); + logger.info( msg ); } /** http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java index 475f4c0..a7f45f8 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategies.java @@ -19,6 +19,8 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.report.ConsoleLogger; + import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -32,28 +34,31 @@ public class SchedulingStrategies { /** + * @param logger current error logger * @return sequentially executing strategy */ - public static SchedulingStrategy createInvokerStrategy() + public static SchedulingStrategy createInvokerStrategy( ConsoleLogger logger ) { - return new InvokerStrategy(); + return new InvokerStrategy( logger ); } /** + * @param logger current error logger * @param nThreads fixed pool capacity * @return parallel scheduling strategy */ - public static SchedulingStrategy createParallelStrategy( int nThreads ) + public static SchedulingStrategy createParallelStrategy( ConsoleLogger logger, int nThreads ) { - return new NonSharedThreadPoolStrategy( Executors.newFixedThreadPool( nThreads ) ); + return new NonSharedThreadPoolStrategy( logger, Executors.newFixedThreadPool( nThreads ) ); } /** + * @param logger current error logger * @return parallel scheduling strategy with unbounded capacity */ - public static SchedulingStrategy createParallelStrategyUnbounded() + public static SchedulingStrategy createParallelStrategyUnbounded( ConsoleLogger logger ) { - return new NonSharedThreadPoolStrategy( Executors.newCachedThreadPool() ); + return new NonSharedThreadPoolStrategy( logger, Executors.newCachedThreadPool() ); } /** @@ -64,16 +69,17 @@ public class SchedulingStrategies * waiting for other strategies to finish. The {@link org.junit.runners.model.RunnerScheduler#finished()} may * freely use {@link SchedulingStrategy#finished()}. * + * @param logger current error logger * @param threadPool thread pool possibly shared with other strategies * @return parallel strategy with shared thread pool * @throws NullPointerException if <tt>threadPool</tt> is null */ - public static SchedulingStrategy createParallelSharedStrategy( ExecutorService threadPool ) + public static SchedulingStrategy createParallelSharedStrategy( ConsoleLogger logger, ExecutorService threadPool ) { if ( threadPool == null ) { throw new NullPointerException( "null threadPool in #createParallelSharedStrategy" ); } - return new SharedThreadPoolStrategy( threadPool ); + return new SharedThreadPoolStrategy( logger, threadPool ); } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java index 1dbbb79..02e2be3 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategy.java @@ -19,6 +19,10 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.report.ConsoleLogger; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; import java.util.concurrent.atomic.AtomicBoolean; /** @@ -39,14 +43,21 @@ public abstract class SchedulingStrategy private final AtomicBoolean canSchedule = new AtomicBoolean( true ); + private final ConsoleLogger logger; + + protected SchedulingStrategy( ConsoleLogger logger ) + { + this.logger = logger; + } + /** * Schedules tasks if {@link #canSchedule()}. * * @param task runnable to schedule in a thread pool or invoke - * @throws RejectedExecutionException if <tt>task</tt> + * @throws java.util.concurrent.RejectedExecutionException if <tt>task</tt> * cannot be scheduled for execution * @throws NullPointerException if <tt>task</tt> is <tt>null</tt> - * @see RunnerScheduler#schedule(Runnable) + * @see org.junit.runners.model.RunnerScheduler#schedule(Runnable) * @see java.util.concurrent.Executor#execute(Runnable) */ protected abstract void schedule( Runnable task ); @@ -60,7 +71,7 @@ public abstract class SchedulingStrategy * pool was shutdown externally). * @throws InterruptedException if interrupted while waiting * for scheduled tasks to finish - * @see RunnerScheduler#finished() + * @see org.junit.runners.model.RunnerScheduler#finished() */ protected abstract boolean finished() throws InterruptedException; @@ -123,6 +134,10 @@ public abstract class SchedulingStrategy protected void logQuietly( Throwable t ) { - t.printStackTrace( System.out ); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + PrintStream stream = new PrintStream( out ); + t.printStackTrace( stream ); + stream.close(); + logger.info( out.toString() ); } } http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java index 325d1e9..ff72d64 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SharedThreadPoolStrategy.java @@ -19,6 +19,8 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.report.ConsoleLogger; + import java.util.concurrent.CancellationException; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ExecutionException; @@ -35,9 +37,9 @@ import java.util.concurrent.Future; final class SharedThreadPoolStrategy extends AbstractThreadPoolStrategy { - SharedThreadPoolStrategy( ExecutorService threadPool ) + SharedThreadPoolStrategy( ConsoleLogger logger, ExecutorService threadPool ) { - super( threadPool, new ConcurrentLinkedQueue<Future<?>>() ); + super( logger, threadPool, new ConcurrentLinkedQueue<Future<?>>() ); } @Override http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java index 639e597..c235a15 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/pc/SingleThreadScheduler.java @@ -19,6 +19,7 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.report.ConsoleLogger; import org.junit.runner.Description; import org.junit.runners.model.RunnerScheduler; @@ -40,9 +41,11 @@ import java.util.concurrent.TimeUnit; */ final class SingleThreadScheduler { + private final ConsoleLogger logger; + private final ExecutorService pool = newPool(); - private final Scheduler master = new Scheduler( null, SchedulingStrategies.createParallelSharedStrategy( pool ) ); + private final Scheduler master; private static ExecutorService newPool() { @@ -56,9 +59,17 @@ final class SingleThreadScheduler return new ThreadPoolExecutor( 1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), factory ); } + SingleThreadScheduler( ConsoleLogger logger ) + { + this.logger = logger; + SchedulingStrategy strategy = SchedulingStrategies.createParallelSharedStrategy( logger, pool ); + master = new Scheduler( logger, null, strategy ); + } + RunnerScheduler newRunnerScheduler() { - return new Scheduler( null, master, SchedulingStrategies.createParallelSharedStrategy( pool ) ); + SchedulingStrategy strategy = SchedulingStrategies.createParallelSharedStrategy( logger, pool ); + return new Scheduler( logger, null, master, strategy ); } /** http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Logger.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Logger.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Logger.java new file mode 100644 index 0000000..4fff4b0 --- /dev/null +++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Logger.java @@ -0,0 +1,30 @@ +package org.apache.maven.surefire.junitcore; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +import org.apache.maven.surefire.report.ConsoleLogger; + +public final class Logger implements ConsoleLogger +{ + public void info( String message ) + { + System.out.println( message ); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java index 3fee3df..1ee89ef 100644 --- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java +++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java @@ -115,7 +115,7 @@ public class Surefire746Test // JUnitCoreWrapper#execute() is calling JUnit4RunListener#rethrowAnyTestMechanismFailures() // and rethrows a failure which happened in listener exception.expect( TestSetFailedException.class ); - JUnitCoreWrapper.execute( testsToRun, jUnitCoreParameters, customRunListeners, null ); + JUnitCoreWrapper.execute( new Logger(), testsToRun, jUnitCoreParameters, customRunListeners, null ); } finally { http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java index 63d25f8..7e5c7a2 100644 --- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java +++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerBuilderTest.java @@ -20,6 +20,7 @@ package org.apache.maven.surefire.junitcore.pc; */ import net.jcip.annotations.NotThreadSafe; +import org.apache.maven.surefire.junitcore.Logger; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -100,7 +101,7 @@ public class ParallelComputerBuilderTest @Test public void parallelMethodsReuseOneOrTwoThreads() { - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder(); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ); parallelComputerBuilder.useOnePool( 4 ); // One thread because one suite: TestSuite, however the capacity is 5. @@ -143,7 +144,7 @@ public class ParallelComputerBuilderTest @Test public void suiteAndClassInOnePool() { - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder(); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ); parallelComputerBuilder.useOnePool( 5 ); parallelComputerBuilder.parallelSuites( 5 ); parallelComputerBuilder.parallelClasses( 5 ); @@ -169,7 +170,7 @@ public class ParallelComputerBuilderTest public void onePoolWithUnlimitedParallelMethods() { // see ParallelComputerBuilder Javadoc - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder(); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ); parallelComputerBuilder.useOnePool( 8 ); parallelComputerBuilder.parallelSuites( 2 ); parallelComputerBuilder.parallelClasses( 4 ); @@ -194,7 +195,7 @@ public class ParallelComputerBuilderTest @Test public void underflowParallelism() { - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder(); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ); parallelComputerBuilder.useOnePool( 3 ); // One thread because one suite: TestSuite. @@ -226,7 +227,7 @@ public class ParallelComputerBuilderTest @Test public void separatePoolsWithSuite() { - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder(); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ); parallelComputerBuilder.parallelSuites( 5 ); parallelComputerBuilder.parallelClasses( 5 ); parallelComputerBuilder.parallelMethods( 3 ); @@ -250,7 +251,7 @@ public class ParallelComputerBuilderTest @Test public void separatePoolsWithSuiteAndClass() { - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder(); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ); parallelComputerBuilder.parallelSuites( 5 ); parallelComputerBuilder.parallelClasses( 5 ); parallelComputerBuilder.parallelMethods( 3 ); @@ -277,7 +278,7 @@ public class ParallelComputerBuilderTest @Test public void separatePoolsWithSuiteAndSequentialClasses() { - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder(); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ); parallelComputerBuilder.parallelSuites( 5 ); parallelComputerBuilder.parallelClasses( 1 ); parallelComputerBuilder.parallelMethods( 3 ); @@ -321,7 +322,7 @@ public class ParallelComputerBuilderTest public void nothingParallel() { JUnitCore core = new JUnitCore(); - ParallelComputerBuilder builder = new ParallelComputerBuilder(); + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ); assertFalse( builder.isOptimized() ); Result result = core.run( builder.buildComputer(), NothingDoingTest1.class, NothingDoingTest2.class ); @@ -374,7 +375,7 @@ public class ParallelComputerBuilderTest @Test public void keepBeforeAfterOneClass() { - ParallelComputerBuilder builder = new ParallelComputerBuilder(); + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ); builder.parallelMethods(); assertFalse( builder.isOptimized() ); testKeepBeforeAfter( builder, NothingDoingTest1.class ); @@ -383,7 +384,7 @@ public class ParallelComputerBuilderTest @Test public void keepBeforeAfterTwoClasses() { - ParallelComputerBuilder builder = new ParallelComputerBuilder(); + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ); builder.useOnePool( 5 ).parallelClasses( 1 ).parallelMethods( 2 ); assertFalse( builder.isOptimized() ); testKeepBeforeAfter( builder, NothingDoingTest1.class, NothingDoingTest2.class ); @@ -392,7 +393,7 @@ public class ParallelComputerBuilderTest @Test public void keepBeforeAfterTwoParallelClasses() { - ParallelComputerBuilder builder = new ParallelComputerBuilder(); + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ); builder.useOnePool( 8 ).parallelClasses( 2 ).parallelMethods( 2 ); assertFalse( builder.isOptimized() ); JUnitCore core = new JUnitCore(); @@ -408,7 +409,7 @@ public class ParallelComputerBuilderTest @Test public void notThreadSafeTest() { - ParallelComputerBuilder builder = new ParallelComputerBuilder() + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ) .useOnePool( 6 ).optimize( true ).parallelClasses( 3 ).parallelMethods( 3 ); ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer(); Result result = new JUnitCore().run( computer, NotThreadSafeTest1.class, NotThreadSafeTest2.class ); @@ -429,7 +430,7 @@ public class ParallelComputerBuilderTest @Test public void mixedThreadSafety() { - ParallelComputerBuilder builder = new ParallelComputerBuilder() + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ) .useOnePool( 6 ).optimize( true ).parallelClasses( 3 ).parallelMethods( 3 ); ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer(); Result result = new JUnitCore().run( computer, NotThreadSafeTest1.class, NormalTest1.class ); @@ -451,7 +452,8 @@ public class ParallelComputerBuilderTest @Test public void notThreadSafeTestsInSuite() { - ParallelComputerBuilder builder = new ParallelComputerBuilder().useOnePool( 5 ).parallelMethods( 3 ); + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ) + .useOnePool( 5 ).parallelMethods( 3 ); assertFalse( builder.isOptimized() ); ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer(); Result result = new JUnitCore().run( computer, NotThreadSafeTestSuite.class ); @@ -473,7 +475,7 @@ public class ParallelComputerBuilderTest @Test public void mixedThreadSafetyInSuite() { - ParallelComputerBuilder builder = new ParallelComputerBuilder() + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ) .useOnePool( 10 ).optimize( true ).parallelSuites( 2 ).parallelClasses( 3 ).parallelMethods( 3 ); ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer(); Result result = new JUnitCore().run( computer, MixedSuite.class ); @@ -495,7 +497,7 @@ public class ParallelComputerBuilderTest @Test public void inheritanceWithNotThreadSafe() { - ParallelComputerBuilder builder = new ParallelComputerBuilder() + ParallelComputerBuilder builder = new ParallelComputerBuilder( new Logger() ) .useOnePool( 10 ).optimize( true ).parallelSuites( 2 ).parallelClasses( 3 ).parallelMethods( 3 ); ParallelComputerBuilder.PC computer = (ParallelComputerBuilder.PC) builder.buildComputer(); Result result = new JUnitCore().run( computer, OverMixedSuite.class ); @@ -519,7 +521,7 @@ public class ParallelComputerBuilderTest throws InterruptedException { Collection<Thread> expectedThreads = jvmThreads(); - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder(); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ); parallelComputerBuilder.parallelMethods( 3 ); ParallelComputer computer = parallelComputerBuilder.buildComputer(); Result result = new JUnitCore().run( computer, TestWithBeforeAfter.class ); @@ -549,10 +551,12 @@ public class ParallelComputerBuilderTest { Result run( final boolean useInterrupt ) { - ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder().useOnePool( 8 ); - parallelComputerBuilder.parallelSuites( 2 ); - parallelComputerBuilder.parallelClasses( 3 ); - parallelComputerBuilder.parallelMethods( 3 ); + ParallelComputerBuilder parallelComputerBuilder = new ParallelComputerBuilder( new Logger() ) + .useOnePool( 8 ) + .parallelSuites( 2 ) + .parallelClasses( 3 ) + .parallelMethods( 3 ); + assertFalse( parallelComputerBuilder.isOptimized() ); final ParallelComputerBuilder.PC computer = http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java index 3b92750..458c12a 100644 --- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java +++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/ParallelComputerUtilTest.java @@ -20,6 +20,7 @@ package org.apache.maven.surefire.junitcore.pc; */ import org.apache.maven.surefire.junitcore.JUnitCoreParameters; +import org.apache.maven.surefire.junitcore.Logger; import org.apache.maven.surefire.testset.TestSetFailedException; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -965,7 +966,7 @@ public final class ParallelComputerUtilTest properties.setProperty( PARALLEL_KEY, "methods" ); properties.setProperty( THREADCOUNTMETHODS_KEY, "2" ); JUnitCoreParameters params = new JUnitCoreParameters( properties ); - ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( params ); + ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params ); ParallelComputer pc = pcBuilder.buildComputer(); Result result = new JUnitCore().run( pc, TestClass.class ); long timeSpent = runtime.stop(); @@ -989,7 +990,7 @@ public final class ParallelComputerUtilTest properties.setProperty( THREADCOUNTMETHODS_KEY, "2" ); properties.setProperty( PARALLEL_TIMEOUT_KEY, Double.toString( 2.5d ) ); JUnitCoreParameters params = new JUnitCoreParameters( properties ); - ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( params ); + ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params ); ParallelComputer pc = pcBuilder.buildComputer(); new JUnitCore().run( pc, TestClass.class ); long timeSpent = runtime.stop(); @@ -1012,7 +1013,7 @@ public final class ParallelComputerUtilTest properties.setProperty( THREADCOUNTMETHODS_KEY, "2" ); properties.setProperty( PARALLEL_TIMEOUTFORCED_KEY, Double.toString( 2.5d ) ); JUnitCoreParameters params = new JUnitCoreParameters( properties ); - ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( params ); + ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params ); ParallelComputer pc = pcBuilder.buildComputer(); new JUnitCore().run( pc, TestClass.class ); long timeSpent = runtime.stop(); @@ -1038,7 +1039,7 @@ public final class ParallelComputerUtilTest properties.setProperty( PARALLEL_TIMEOUT_KEY, Double.toString( 2.5d ) ); properties.setProperty( PARALLEL_TIMEOUTFORCED_KEY, Double.toString( 3.5d ) ); JUnitCoreParameters params = new JUnitCoreParameters( properties ); - ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( params ); + ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params ); ParallelComputer pc = pcBuilder.buildComputer(); new JUnitCore().run( pc, TestClass.class ); long timeSpent = runtime.stop(); @@ -1062,7 +1063,7 @@ public final class ParallelComputerUtilTest properties.setProperty( PARALLEL_TIMEOUTFORCED_KEY, Double.toString( 3.5d ) ); properties.setProperty( PARALLEL_TIMEOUT_KEY, Double.toString( 4.0d ) ); JUnitCoreParameters params = new JUnitCoreParameters( properties ); - ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( params ); + ParallelComputerBuilder pcBuilder = new ParallelComputerBuilder( new Logger(), params ); ParallelComputer pc = pcBuilder.buildComputer(); new JUnitCore().run( pc, TestClass.class ); long timeSpent = runtime.stop(); http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/1c34e05b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java index d8d5d33..10bb3bc 100644 --- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java +++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/pc/SchedulingStrategiesTest.java @@ -19,6 +19,7 @@ package org.apache.maven.surefire.junitcore.pc; * under the License. */ +import org.apache.maven.surefire.junitcore.Logger; import org.junit.Test; import java.util.concurrent.ExecutorService; @@ -47,7 +48,7 @@ public class SchedulingStrategiesTest public void invokerStrategy() throws InterruptedException { - SchedulingStrategy strategy = SchedulingStrategies.createInvokerStrategy(); + SchedulingStrategy strategy = SchedulingStrategies.createInvokerStrategy( new Logger() ); assertFalse( strategy.hasSharedThreadPool() ); assertTrue( strategy.canSchedule() ); @@ -67,7 +68,7 @@ public class SchedulingStrategiesTest public void nonSharedPoolStrategy() throws InterruptedException { - SchedulingStrategy strategy = SchedulingStrategies.createParallelStrategy( 2 ); + SchedulingStrategy strategy = SchedulingStrategies.createParallelStrategy( new Logger(), 2 ); assertFalse( strategy.hasSharedThreadPool() ); assertTrue( strategy.canSchedule() ); @@ -89,7 +90,7 @@ public class SchedulingStrategiesTest @Test(expected = NullPointerException.class) public void sharedPoolStrategyNullPool() { - SchedulingStrategies.createParallelSharedStrategy( null ); + SchedulingStrategies.createParallelSharedStrategy( new Logger(), null ); } @Test @@ -98,11 +99,11 @@ public class SchedulingStrategiesTest { ExecutorService sharedPool = Executors.newCachedThreadPool(); - SchedulingStrategy strategy1 = SchedulingStrategies.createParallelSharedStrategy( sharedPool ); + SchedulingStrategy strategy1 = SchedulingStrategies.createParallelSharedStrategy( new Logger(), sharedPool ); assertTrue( strategy1.hasSharedThreadPool() ); assertTrue( strategy1.canSchedule() ); - SchedulingStrategy strategy2 = SchedulingStrategies.createParallelSharedStrategy( sharedPool ); + SchedulingStrategy strategy2 = SchedulingStrategies.createParallelSharedStrategy( new Logger(), sharedPool ); assertTrue( strategy2.hasSharedThreadPool() ); assertTrue( strategy2.canSchedule() ); @@ -135,7 +136,7 @@ public class SchedulingStrategiesTest public void infinitePoolStrategy() throws InterruptedException { - SchedulingStrategy strategy = SchedulingStrategies.createParallelStrategyUnbounded(); + SchedulingStrategy strategy = SchedulingStrategies.createParallelStrategyUnbounded( new Logger() ); assertFalse( strategy.hasSharedThreadPool() ); assertTrue( strategy.canSchedule() );