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 2021/01/21 22:10:36 UTC
[maven-surefire] branch comm updated (8f6cf48 -> 5c91083)
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a change to branch comm
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git.
discard 8f6cf48 tests should not fail on concurrent access
discard 6819001 [jenkins] temporarily removed JDK 16EA, see INFRA-20981
discard bd04a9e [SUREFIRE-1847] Remove Base64 in the Encoder/Decoder and gain the performance for the communication flow: Plugin to Fork
add d432cee SUREFIRE-1584: Update example documentation
add 52ec277 [SUREFIRE-1857] JUnit 5 report does not contain assertion failure message
add 9ef0d6e [SUREFIRE-1840] Distinguish commands in docs
add 942d18b (doc) Grammar fixes for the sentence where it hints you to fork JVMs.
add 1da3462 [SUREFIRE-1865] ChecksumCalculator getSha1 does not compute checksums correctly
add 6c209e3 Refer to correct property in skipping-tests doc
add be236f7 Merge pull request #262 from qerub/skipping-tests-doc-fix
add 02d4381 ci: JDK 8, JDK 11, JDK 15
add c59ffee [SUREFIRE-1847] Remove Base64 in the Encoder/Decoder and gain the performance for the communication flow: Plugin to Fork
add 10d7e33 [jenkins] temporarily removed JDK 16EA, see INFRA-20981
add 8f9745e tests should not fail on concurrent access of src/test/java/.../*.ConsoleLoggerMock.java
new 5c91083 fixed tests: dump files printed fake data due to the indexes of ByteBuffer are not shifted for reads after IOException
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (8f6cf48)
\
N -- N -- N refs/heads/comm (5c91083)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/maven.yml | 5 +-
.../plugin/surefire/AbstractSurefireMojo.java | 4 +-
.../surefire/booterclient/ChecksumCalculator.java | 5 +-
.../surefire/extensions/EventConsumerThread.java | 3 +-
.../apache/maven/surefire/stream/EventDecoder.java | 1 +
.../booterclient/ChecksumCalculatorTest.java | 26 ++---
.../extensions/ForkedProcessEventNotifierTest.java | 122 +++++++++++++++++++++
.../org/apache/maven/surefire/JUnit4SuiteTest.java | 2 +
.../site/apt/examples/rerun-failing-tests.apt.vm | 2 +-
.../src/site/apt/examples/skipping-tests.apt.vm | 2 +-
maven-surefire-plugin/src/site/markdown/docker.md | 9 +-
.../surefire/api/stream/AbstractStreamDecoder.java | 47 +++++---
.../maven/surefire/booter/CommandReader.java | 3 +-
.../surefire/booter/stream/CommandDecoder.java | 1 +
.../maven/surefire/its/JUnitPlatformEnginesIT.java | 32 ++++++
.../pom.xml | 2 +-
.../jira1857/AssertionFailureMessageTest.java} | 8 +-
.../pom.xml | 2 +-
.../test/java/jira1857/ExceptionMessageTest.java} | 11 +-
.../surefire/junitplatform/RunListenerAdapter.java | 27 ++++-
20 files changed, 256 insertions(+), 58 deletions(-)
copy surefire-its/src/test/resources/surefire-1080-parallel-fork-double-test/src/test/java/com/cal/SimpleTest.java => maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ChecksumCalculatorTest.java (69%)
copy surefire-its/src/test/resources/{surefire-1727 => surefire-1857-assertion-message}/pom.xml (97%)
copy surefire-its/src/test/resources/{surefire-1748-fail-no-parameters/src/test/java/jira1748/AssertionsFailNoParametersJupiterTest.java => surefire-1857-assertion-message/src/test/java/jira1857/AssertionFailureMessageTest.java} (89%)
copy surefire-its/src/test/resources/{surefire-1727 => surefire-1857-exception-message}/pom.xml (97%)
copy surefire-its/src/test/resources/{surefire-1748-fail-no-parameters/src/test/java/jira1748/AssertionsFailNoParametersJupiterTest.java => surefire-1857-exception-message/src/test/java/jira1857/ExceptionMessageTest.java} (84%)
[maven-surefire] 01/01: fixed tests: dump files printed fake data
due to the indexes of ByteBuffer are not shifted for reads after
IOException
Posted by ti...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch comm
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit 5c910839c743515bc68f62a1954e7ff7b05b0f3c
Author: tibordigana <ti...@gmail.com>
AuthorDate: Thu Jan 21 23:09:16 2021 +0100
fixed tests: dump files printed fake data due to the indexes of ByteBuffer are not shifted for reads after IOException
---
.../surefire/extensions/EventConsumerThread.java | 3 +-
.../apache/maven/surefire/stream/EventDecoder.java | 1 +
.../extensions/ForkedProcessEventNotifierTest.java | 122 +++++++++++++++++++++
.../surefire/api/stream/AbstractStreamDecoder.java | 47 +++++---
.../maven/surefire/booter/CommandReader.java | 3 +-
.../surefire/booter/stream/CommandDecoder.java | 1 +
6 files changed, 160 insertions(+), 17 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 1371dbb..a2b1c02 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
@@ -30,6 +30,7 @@ import org.apache.maven.surefire.stream.EventDecoder;
import javax.annotation.Nonnull;
import java.io.EOFException;
import java.io.IOException;
+import java.nio.channels.ClosedChannelException;
import java.nio.channels.ReadableByteChannel;
/**
@@ -76,7 +77,7 @@ public class EventConsumerThread extends CloseableDaemonThread
}
while ( true );
}
- catch ( EOFException e )
+ catch ( EOFException | ClosedChannelException e )
{
//
}
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/surefire/stream/EventDecoder.java b/maven-surefire-common/src/main/java/org/apache/maven/surefire/stream/EventDecoder.java
index 3698511..8170bac 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/surefire/stream/EventDecoder.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/surefire/stream/EventDecoder.java
@@ -173,6 +173,7 @@ public class EventDecoder extends AbstractStreamDecoder<Event, ForkedProcessEven
break;
case END_OF_FRAME:
memento.getLine().setPositionByteBuffer( memento.getByteBuffer().position() );
+ memento.getLine().clear();
return toMessage( eventType, runMode, memento );
default:
memento.getLine().setPositionByteBuffer( NO_POSITION );
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/ForkedProcessEventNotifierTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/ForkedProcessEventNotifierTest.java
index abbdeb0..9094392 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/ForkedProcessEventNotifierTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/ForkedProcessEventNotifierTest.java
@@ -129,6 +129,12 @@ public class ForkedProcessEventNotifierTest
notifier.notifyEvent( eventHandler.pullEvent() );
}
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -169,6 +175,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -209,6 +221,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.dumpStreamText )
@@ -263,6 +281,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -297,6 +321,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -327,6 +357,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -357,6 +393,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -389,6 +431,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -421,6 +469,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -453,6 +507,11 @@ public class ForkedProcessEventNotifierTest
notifier.notifyEvent( eventHandler.pullEvent() );
}
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
@@ -489,6 +548,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -522,6 +587,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -555,6 +626,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -588,6 +665,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -621,6 +704,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -654,6 +743,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -687,6 +782,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -719,6 +820,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -805,6 +912,12 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
assertThat( arguments.isCalled() )
@@ -917,8 +1030,15 @@ public class ForkedProcessEventNotifierTest
t.start();
notifier.notifyEvent( eventHandler.pullEvent() );
}
+
+ assertThat( logger.error ).isEmpty();
+ assertThat( logger.warning ).isEmpty();
+ assertThat( logger.info ).isEmpty();
+ assertThat( logger.debug ).isEmpty();
+
assertThat( logger.isCalled() )
.isFalse();
+
assertThat( arguments.isCalled() )
.isFalse();
}
@@ -1209,6 +1329,7 @@ public class ForkedProcessEventNotifierTest
{
final ConcurrentLinkedQueue<String> debug = new ConcurrentLinkedQueue<>();
final ConcurrentLinkedQueue<String> info = new ConcurrentLinkedQueue<>();
+ final ConcurrentLinkedQueue<String> warning = new ConcurrentLinkedQueue<>();
final ConcurrentLinkedQueue<String> error = new ConcurrentLinkedQueue<>();
final boolean isDebug;
final boolean isInfo;
@@ -1266,6 +1387,7 @@ public class ForkedProcessEventNotifierTest
@Override
public synchronized void warning( String message )
{
+ warning.add( message );
called = true;
}
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/stream/AbstractStreamDecoder.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/stream/AbstractStreamDecoder.java
index 862820c..ff69da8 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/api/stream/AbstractStreamDecoder.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/stream/AbstractStreamDecoder.java
@@ -379,7 +379,7 @@ public abstract class AbstractStreamDecoder<M, MT extends Enum<MT>, ST extends E
{
printCorruptedStream( memento );
memento.getLine().printExistingLine();
- memento.getLine().setCount( 0 );
+ memento.getLine().clear();
}
/**
@@ -456,26 +456,43 @@ public abstract class AbstractStreamDecoder<M, MT extends Enum<MT>, ST extends E
int mark = buffer.position();
buffer.position( buffer.limit() );
buffer.limit( min( buffer.position() + recommendedCount, buffer.capacity() ) );
- boolean isEnd = false;
- while ( !isEnd && buffer.position() - mark < recommendedCount && buffer.position() < buffer.limit() )
+ return read( buffer, mark, recommendedCount );
+ }
+ }
+
+ private StreamReadStatus read( ByteBuffer buffer, int oldPosition, int recommendedCount )
+ throws IOException
+ {
+ StreamReadStatus readStatus = null;
+ boolean isEnd = false;
+ try
+ {
+ while ( !isEnd && buffer.position() - oldPosition < recommendedCount && buffer.position() < buffer.limit() )
{
isEnd = channel.read( buffer ) == -1;
}
-
+ }
+ finally
+ {
buffer.limit( buffer.position() );
- buffer.position( mark );
+ buffer.position( oldPosition );
int readBytes = buffer.remaining();
-
- if ( isEnd && readBytes < recommendedCount )
- {
- throw new EOFException();
- }
- else
+ boolean readComplete = readBytes >= recommendedCount;
+ if ( !isEnd || readComplete )
{
debugStream( buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.remaining() );
- return readBytes >= recommendedCount ? OVERFLOW : UNDERFLOW;
+ readStatus = readComplete ? OVERFLOW : UNDERFLOW;
}
}
+
+ if ( readStatus == null )
+ {
+ throw new EOFException();
+ }
+ else
+ {
+ return readStatus;
+ }
}
/**
@@ -595,9 +612,9 @@ public abstract class AbstractStreamDecoder<M, MT extends Enum<MT>, ST extends E
}
}
- public void setCount( int count )
+ public void clear()
{
- this.count = count;
+ count = 0;
}
@Override
@@ -627,7 +644,7 @@ public abstract class AbstractStreamDecoder<M, MT extends Enum<MT>, ST extends E
}
}
- public void printExistingLine()
+ void printExistingLine()
{
if ( isEmpty() )
{
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/CommandReader.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/CommandReader.java
index 6599433..5509095 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/CommandReader.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/CommandReader.java
@@ -33,6 +33,7 @@ import org.apache.maven.surefire.api.testset.TestSetFailedException;
import java.io.EOFException;
import java.io.IOException;
+import java.nio.channels.ClosedChannelException;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Queue;
@@ -375,7 +376,7 @@ public final class CommandReader implements CommandChainReader
}
}
}
- catch ( EOFException e )
+ catch ( EOFException | ClosedChannelException e )
{
CommandReader.this.state.set( TERMINATED );
if ( !isTestSetFinished )
diff --git a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/stream/CommandDecoder.java b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/stream/CommandDecoder.java
index b660147..e161be7 100644
--- a/surefire-booter/src/main/java/org/apache/maven/surefire/booter/stream/CommandDecoder.java
+++ b/surefire-booter/src/main/java/org/apache/maven/surefire/booter/stream/CommandDecoder.java
@@ -119,6 +119,7 @@ public class CommandDecoder extends AbstractStreamDecoder<Command, MasterProcess
break;
case END_OF_FRAME:
memento.getLine().setPositionByteBuffer( memento.getByteBuffer().position() );
+ memento.getLine().clear();
return toMessage( commandType, runMode, memento );
default:
memento.getLine().setPositionByteBuffer( NO_POSITION );