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() );
 

Reply via email to