You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2016/09/03 22:35:27 UTC
[09/14] maven-surefire git commit: improved ForkStarter
improved ForkStarter
Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/da1e1493
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/da1e1493
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/da1e1493
Branch: refs/heads/master
Commit: da1e1493b1865636654a5048f744f6dfdd656993
Parents: 4e5bc16
Author: Tibor17 <ti...@lycos.com>
Authored: Sun Aug 28 22:01:06 2016 +0200
Committer: Tibor17 <ti...@lycos.com>
Committed: Sun Aug 28 22:01:06 2016 +0200
----------------------------------------------------------------------
.../surefire/booterclient/ForkStarter.java | 46 ++++++++------------
1 file changed, 19 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/da1e1493/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
----------------------------------------------------------------------
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
index 6d7fdb3..125758f 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
@@ -72,9 +72,9 @@ import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
import static java.lang.StrictMath.min;
+import static java.util.Collections.addAll;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.apache.maven.plugin.surefire.AbstractSurefireMojo.createCopyAndReplaceForkNumPlaceholder;
@@ -94,6 +94,7 @@ import static org.apache.maven.surefire.util.internal.ConcurrencyUtils.countDown
import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThread;
import static org.apache.maven.surefire.util.internal.DaemonThreadFactory.newDaemonThreadFactory;
import static org.apache.maven.surefire.util.internal.StringUtils.FORK_STREAM_CHARSET_NAME;
+import static org.apache.maven.surefire.util.internal.StringUtils.requireNonNull;
/**
* Starts the fork or runs in-process.
@@ -151,48 +152,38 @@ public class ForkStarter
private static class CloseableCloser
implements Runnable, Closeable
{
- private final Queue<AtomicReference<Closeable>> testProvidingInputStream;
+ private final Queue<Closeable> testProvidingInputStream;
private final Thread inputStreamCloserHook;
public CloseableCloser( Closeable... testProvidingInputStream )
{
- this.testProvidingInputStream = new ConcurrentLinkedQueue<AtomicReference<Closeable>>();
- for ( Closeable closeable : testProvidingInputStream )
+ this.testProvidingInputStream = new ConcurrentLinkedQueue<Closeable>();
+ addAll( this.testProvidingInputStream, testProvidingInputStream );
+ if ( this.testProvidingInputStream.isEmpty() )
{
- if ( closeable != null )
- {
- this.testProvidingInputStream.add( new AtomicReference<Closeable>( closeable ) );
- }
+ inputStreamCloserHook = null;
}
- if ( !this.testProvidingInputStream.isEmpty() )
+ else
{
inputStreamCloserHook = newDaemonThread( this, "closer-shutdown-hook" );
addShutDownHook( inputStreamCloserHook );
}
- else
- {
- inputStreamCloserHook = null;
- }
}
+ @SuppressWarnings( "checkstyle:innerassignment" )
public void run()
{
- for ( AtomicReference<Closeable> closeableAtomicReference : testProvidingInputStream )
+ for ( Closeable closeable; ( closeable = testProvidingInputStream.poll() ) != null; )
{
- Closeable closeable = closeableAtomicReference.getAndSet( null );
- if ( closeable != null )
+ try
{
- try
- {
- closeable.close();
- }
- catch ( IOException e )
- {
- // ignore
- }
+ closeable.close();
+ }
+ catch ( IOException e )
+ {
+ // ignore
}
-
}
}
@@ -562,8 +553,9 @@ public class ForkStarter
cli.createArg().setFile( systPropsFile );
}
- ThreadedStreamConsumer threadedStreamConsumer = new ThreadedStreamConsumer( forkClient );
- final CloseableCloser closer = new CloseableCloser( threadedStreamConsumer, testProvidingInputStream );
+ final ThreadedStreamConsumer threadedStreamConsumer = new ThreadedStreamConsumer( forkClient );
+ final CloseableCloser closer =
+ new CloseableCloser( threadedStreamConsumer, requireNonNull( testProvidingInputStream, "null param" ) );
if ( forkConfiguration.isDebug() )
{