You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2021/12/17 22:10:00 UTC
[maven-surefire] branch master updated: Fix flaky test - Surefire1098BalancedRunOrderIT
This is an automated email from the ASF dual-hosted git repository.
sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
The following commit(s) were added to refs/heads/master by this push:
new d4e1389 Fix flaky test - Surefire1098BalancedRunOrderIT
d4e1389 is described below
commit d4e1389708e80072acc916745ddbc785d0e82c55
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Fri Dec 17 23:07:13 2021 +0100
Fix flaky test - Surefire1098BalancedRunOrderIT
- execute maven twice as required
- use jvm synchronization instead of sleep
---
.../maven/surefire/its/fixture/MavenLauncher.java | 6 +++++-
.../maven/surefire/its/fixture/SurefireLauncher.java | 7 +++++++
.../its/jiras/Surefire1098BalancedRunOrderIT.java | 9 +++++----
.../src/test/java/jiras/surefire1098/ATest.java | 4 +---
.../src/test/java/jiras/surefire1098/BTest.java | 4 +---
.../src/test/java/jiras/surefire1098/CTest.java | 4 +---
.../src/test/java/jiras/surefire1098/DTest.java | 8 +++++++-
.../jiras/surefire1098/{BTest.java => Locker.java} | 19 ++++++++-----------
8 files changed, 35 insertions(+), 26 deletions(-)
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/fixture/MavenLauncher.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/fixture/MavenLauncher.java
index ecd1ee8..95e6a2e 100755
--- a/surefire-its/src/test/java/org/apache/maven/surefire/its/fixture/MavenLauncher.java
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/fixture/MavenLauncher.java
@@ -395,6 +395,11 @@ public final class MavenLauncher
getVerifier().setAutoclean( autoclean );
}
+ public void setLogFileName( String logFileName )
+ {
+ getVerifier().setLogFileName( logFileName );
+ }
+
private Verifier getVerifier()
{
if ( verifier == null )
@@ -476,7 +481,6 @@ public final class MavenLauncher
basedir, settingsFile, false, defaultCliOptions );
verifier.getVerifierProperties().setProperty( "use.mavenRepoLocal", "true" );
-
return verifier;
}
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java
index cbe02fd..0394123 100755
--- a/surefire-its/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/fixture/SurefireLauncher.java
@@ -444,4 +444,11 @@ public final class SurefireLauncher
mavenLauncher.setForkJvm( true );
return this;
}
+
+
+ public SurefireLauncher setLogFileName( String logFileName )
+ {
+ mavenLauncher.setLogFileName( logFileName );
+ return this;
+ }
}
diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1098BalancedRunOrderIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1098BalancedRunOrderIT.java
index f50bb8e..00546ef 100644
--- a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1098BalancedRunOrderIT.java
+++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1098BalancedRunOrderIT.java
@@ -51,14 +51,15 @@ public class Surefire1098BalancedRunOrderIT extends SurefireJUnit4IntegrationTes
@Test
public void reorderedParallelClasses() throws VerificationException
{
- SurefireLauncher launcher = unpack();
-
- launcher
+ // first execution
+ unpack().setLogFileName( "log1.txt" )
// .runOrder( "balanced" ) call it in 3.x and remove it in surefire-1098-balanced-runorder/pom.xml
// as soon as there is prefix available "failsafe" and "surefire" in system property for this parameter.
.parallelClasses().threadCount( 2 ).disablePerCoreThreadCount().executeTest().verifyErrorFree( 4 );
- OutputValidator validator = launcher
+
+ // and second from new instance - if we use the same instance - hasExecutedBefore return true
+ OutputValidator validator = unpack().setLogFileName( "log2.txt" )
// .runOrder( "balanced" ) call it in 3.x and remove it in surefire-1098-balanced-runorder/pom.xml
// as soon as there is prefix available "failsafe" and "surefire" in system property for this parameter.
.parallelClasses().threadCount( 2 ).disablePerCoreThreadCount().executeTest().verifyErrorFree( 4 );
diff --git a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/ATest.java b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/ATest.java
index 34bb895..3acb9cd 100644
--- a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/ATest.java
+++ b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/ATest.java
@@ -21,14 +21,12 @@ package jiras.surefire1098;
import org.junit.Test;
-import java.util.concurrent.TimeUnit;
-
public final class ATest {
@Test
public void someMethod() throws InterruptedException {
System.out.println(getClass() + " " + Thread.currentThread().getName());
- TimeUnit.MILLISECONDS.sleep(100);
+ Locker.QUEUE.put( "A" );
}
}
diff --git a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/BTest.java b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/BTest.java
index a9a52b8..d9073c6 100644
--- a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/BTest.java
+++ b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/BTest.java
@@ -21,14 +21,12 @@ package jiras.surefire1098;
import org.junit.Test;
-import java.util.concurrent.TimeUnit;
-
public final class BTest {
@Test
public void someMethod() throws InterruptedException {
System.out.println(getClass() + " " + Thread.currentThread().getName());
- TimeUnit.SECONDS.sleep(2);
+ Locker.QUEUE.put( "B" );
}
}
diff --git a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/CTest.java b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/CTest.java
index 63e4e0f..b02b7b8 100644
--- a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/CTest.java
+++ b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/CTest.java
@@ -21,14 +21,12 @@ package jiras.surefire1098;
import org.junit.Test;
-import java.util.concurrent.TimeUnit;
-
public final class CTest {
@Test
public void someMethod() throws InterruptedException {
System.out.println(getClass() + " " + Thread.currentThread().getName());
- TimeUnit.SECONDS.sleep(4);
+ Locker.QUEUE.put( "C" );
}
}
diff --git a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/DTest.java b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/DTest.java
index a97640e..b5b029d 100644
--- a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/DTest.java
+++ b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/DTest.java
@@ -28,7 +28,13 @@ public final class DTest {
@Test
public void someMethod() throws InterruptedException {
System.out.println(getClass() + " " + Thread.currentThread().getName());
- TimeUnit.SECONDS.sleep(8);
+ // wait from result from 3 tests
+ // so test will be the longest and finish as last
+ Locker.QUEUE.take();
+ Locker.QUEUE.take();
+ Locker.QUEUE.take();
+ // and sleep a little
+ TimeUnit.MILLISECONDS.sleep(100);
}
}
diff --git a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/BTest.java b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/Locker.java
similarity index 74%
copy from surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/BTest.java
copy to surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/Locker.java
index a9a52b8..4f0bc55 100644
--- a/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/BTest.java
+++ b/surefire-its/src/test/resources/surefire-1098-balanced-runorder/src/test/java/jiras/surefire1098/Locker.java
@@ -19,16 +19,13 @@ package jiras.surefire1098;
* under the License.
*/
-import org.junit.Test;
-
-import java.util.concurrent.TimeUnit;
-
-public final class BTest {
-
- @Test
- public void someMethod() throws InterruptedException {
- System.out.println(getClass() + " " + Thread.currentThread().getName());
- TimeUnit.SECONDS.sleep(2);
- }
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+/**
+ * Tests are executet in one jvm in parallel,
+ * so we can use simple synchronization.
+ */
+class Locker {
+ static BlockingQueue<String> QUEUE = new ArrayBlockingQueue<>( 3 );
}