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 2020/04/08 08:22:16 UTC
[maven-surefire] 08/18: improved performance from 320s to 54s.
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch maven2surefire-jvm-communication
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit f3aa9c295bba96380f0ce7ca85e0b3e7c5610212
Author: tibordigana <ti...@apache.org>
AuthorDate: Tue Mar 24 00:57:22 2020 +0100
improved performance from 320s to 54s.
---
.../surefire/extensions/EventConsumerThread.java | 26 +++++++++++++++++-----
.../surefire/extensions/SurefireForkChannel.java | 4 +---
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/EventConsumerThread.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/EventConsumerThread.java
index cc33c6c..b92a238 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/EventConsumerThread.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/EventConsumerThread.java
@@ -126,8 +126,9 @@ public class EventConsumerThread extends CloseableDaemonThread
List<String> tokens = new ArrayList<>();
StringBuilder line = new StringBuilder();
StringBuilder token = new StringBuilder( MAGIC_NUMBER.length() );
- ByteBuffer buffer = ByteBuffer.allocate( 1 );
- boolean endOfStream;
+ ByteBuffer buffer = ByteBuffer.allocate( 1024 );
+ buffer.position( buffer.limit() );
+ boolean streamContinues;
start:
do
@@ -136,11 +137,9 @@ public class EventConsumerThread extends CloseableDaemonThread
tokens.clear();
token.setLength( 0 );
FrameCompletion completion = null;
- for ( boolean frameStarted = false; !( endOfStream = channel.read( buffer ) == -1 ) ; completion = null )
+ for ( boolean frameStarted = false; streamContinues = read( buffer ); completion = null )
{
- buffer.flip();
char c = (char) buffer.get();
- buffer.clear();
if ( c == '\n' || c == '\r' )
{
@@ -193,7 +192,7 @@ public class EventConsumerThread extends CloseableDaemonThread
}
}
- if ( endOfStream )
+ if ( !streamContinues )
{
printExistingLine( line );
return;
@@ -202,6 +201,21 @@ public class EventConsumerThread extends CloseableDaemonThread
while ( true );
}
+ private boolean read( ByteBuffer buffer ) throws IOException
+ {
+ if ( buffer.hasRemaining() )
+ {
+ return true;
+ }
+ else
+ {
+ buffer.clear();
+ boolean isEndOfStream = channel.read( buffer ) == -1;
+ buffer.flip();
+ return !isEndOfStream;
+ }
+ }
+
private void printExistingLine( StringBuilder line )
{
if ( line.length() != 0 )
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java
index 0aa790c..e11b03f 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java
@@ -60,8 +60,6 @@ import static java.nio.channels.ServerSocketChannel.open;
*/
final class SurefireForkChannel extends ForkChannel
{
- private static final byte[] LOCAL_LOOPBACK_IP_ADDRESS = new byte[]{127, 0, 0, 1};
-
private final ConsoleLogger logger;
private final ServerSocketChannel server;
private final int localPort;
@@ -73,7 +71,7 @@ final class SurefireForkChannel extends ForkChannel
this.logger = logger;
server = open();
setTrueOptions( SO_REUSEADDR, TCP_NODELAY, SO_KEEPALIVE );
- InetAddress ip = Inet4Address.getByAddress( LOCAL_LOOPBACK_IP_ADDRESS );
+ InetAddress ip = Inet4Address.getLoopbackAddress();
server.bind( new InetSocketAddress( ip, 0 ), 1 );
localPort = ( (InetSocketAddress) server.getLocalAddress() ).getPort();
}