From 1e9db1f21fd7459a0ec721a458174cd5e9c9ac28 Mon Sep 17 00:00:00 2001 From: Delany Date: Sun, 3 Apr 2022 12:57:23 +0200 Subject: [PATCH 1/2] [SUREFIRE-2055] Always show random seed --- .../plugin/surefire/AbstractSurefireMojo.java | 7 +++-- .../api/util/DefaultRunOrderCalculator.java | 2 +- .../apache/maven/surefire/its/RunOrderIT.java | 26 ++++++++++++++++++- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java index 1937d75c72..598a6fa615 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java @@ -3114,9 +3114,12 @@ protected void warnIfIllegalFailOnFlakeCount() throws MojoFailureException private void printDefaultSeedIfNecessary() { - if ( getRunOrderRandomSeed() == null && getRunOrder().equals( RunOrder.RANDOM.name() ) ) + if ( getRunOrder().equals( RunOrder.RANDOM.name() ) ) { - setRunOrderRandomSeed( System.nanoTime() ); + if ( getRunOrderRandomSeed() == null ) + { + setRunOrderRandomSeed( System.nanoTime() ); + } getConsoleLogger().info( "Tests will run in random order. To reproduce ordering use flag -D" + getPluginName() + ".runOrder.random.seed=" + getRunOrderRandomSeed() ); diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java index 3a2db958c0..d91850c17a 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java @@ -55,7 +55,7 @@ public DefaultRunOrderCalculator( RunOrderParameters runOrderParameters, int thr this.runOrder = runOrderParameters.getRunOrder(); this.sortOrder = this.runOrder.length > 0 ? getSortOrderComparator( this.runOrder[0] ) : null; Long runOrderRandomSeed = runOrderParameters.getRunOrderRandomSeed(); - this.random = new Random( runOrderRandomSeed == null ? System.nanoTime() : runOrderRandomSeed ); + random = runOrderRandomSeed == null ? null : new Random( runOrderRandomSeed ); } @Override diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/RunOrderIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/RunOrderIT.java index 0032e8de74..a24de4af00 100644 --- a/surefire-its/src/test/java/org/apache/maven/surefire/its/RunOrderIT.java +++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/RunOrderIT.java @@ -97,7 +97,21 @@ public void testRandomJUnit4SameSeed() } } } - + + @Test + public void testRandomJUnit4PrintSeedWithGivenSeed() + { + OutputValidator validator = executeWithRandomOrder( "junit4", 0L ); + validator.verifyTextInLog( "To reproduce ordering use flag" ); + } + + @Test + public void testRandomJUnit4PrintSeedWithNoGivenSeed() + { + OutputValidator validator = executeWithRandomOrder( "junit4" ); + validator.verifyTextInLog( "To reproduce ordering use flag" ); + } + @Test public void testReverseAlphabeticalJUnit4() throws Exception @@ -187,6 +201,16 @@ private OutputValidator executeWithRunOrder( String runOrder, String profile ) .verifyErrorFree( 3 ); } + private OutputValidator executeWithRandomOrder( String profile ) + { + return unpack() + .activateProfile( profile ) + .forkMode( getForkMode() ) + .runOrder( "random" ) + .executeTest() + .verifyErrorFree( 3 ); + } + private OutputValidator executeWithRandomOrder( String profile, long seed ) { return unpack() From efebb73eb732eb9ec0f984355a007c17ca646887 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Wed, 20 Apr 2022 23:08:40 +0200 Subject: [PATCH 2/2] Avoid NPE in DefaultRunOrderCalculator --- .../maven/surefire/api/util/DefaultRunOrderCalculator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java index d91850c17a..79a4618291 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/util/DefaultRunOrderCalculator.java @@ -55,7 +55,7 @@ public DefaultRunOrderCalculator( RunOrderParameters runOrderParameters, int thr this.runOrder = runOrderParameters.getRunOrder(); this.sortOrder = this.runOrder.length > 0 ? getSortOrderComparator( this.runOrder[0] ) : null; Long runOrderRandomSeed = runOrderParameters.getRunOrderRandomSeed(); - random = runOrderRandomSeed == null ? null : new Random( runOrderRandomSeed ); + random = new Random( runOrderRandomSeed == null ? System.nanoTime() : runOrderRandomSeed ); } @Override