From d6836d3d0e5d33a98b35c0885b9787f46c4be47e Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 3 Nov 2023 17:05:17 +0100 Subject: [PATCH] tests.multiplier could be omitted in failed test reproduce line (#12752) The default tests.multiplier passed from gradle was 1, but LuceneTestCase tried to compute its default value from TESTS_NIGHTLY. This could lead to subtle errors: nightly mode failures would not report tests.multipler=1 and when started from the IDE, the tests.multiplier would be set to 2 (leading to different randomness). --- gradle/testing/randomization.gradle | 2 +- lucene/CHANGES.txt | 3 +++ .../java/org/apache/lucene/tests/util/LuceneTestCase.java | 7 ++++++- .../lucene/tests/util/RunListenerPrintReproduceInfo.java | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gradle/testing/randomization.gradle b/gradle/testing/randomization.gradle index 30aad60e9e0..1b56044e071 100644 --- a/gradle/testing/randomization.gradle +++ b/gradle/testing/randomization.gradle @@ -67,7 +67,7 @@ allprojects { // seed, repetition and amplification. [propName: 'tests.seed', value: { -> rootSeed }, description: "Sets the master randomization seed."], [propName: 'tests.iters', value: null, description: "Duplicate (re-run) each test case N times."], - [propName: 'tests.multiplier', value: 1, description: "Value multiplier for randomized tests."], + [propName: 'tests.multiplier', value: null, description: "Value multiplier for randomized tests."], [propName: 'tests.maxfailures', value: null, description: "Skip tests after a given number of failures."], [propName: 'tests.timeoutSuite', value: null, description: "Timeout (in millis) for an entire suite."], [propName: 'tests.failfast', value: "false", description: "Stop the build early on failure.", buildOnly: true], diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 039afcba68d..7467b990080 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -285,6 +285,9 @@ Bug Fixes Build --------------------- +* GITHUB#12752: tests.multiplier could be omitted in test failure reproduce lines (esp. in + nightly mode). (Dawid Weiss) + * GITHUB#12742: JavaCompile tasks may be in up-to-date state when modular dependencies have changed leading to odd runtime errors (Chris Hostetter, Dawid Weiss) diff --git a/lucene/test-framework/src/java/org/apache/lucene/tests/util/LuceneTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/tests/util/LuceneTestCase.java index 50f87ad0a19..5b114ff9a49 100644 --- a/lucene/test-framework/src/java/org/apache/lucene/tests/util/LuceneTestCase.java +++ b/lucene/test-framework/src/java/org/apache/lucene/tests/util/LuceneTestCase.java @@ -476,7 +476,12 @@ public abstract class LuceneTestCase extends Assert { * of iterations to scale your tests (for nightly builds). */ public static final int RANDOM_MULTIPLIER = - systemPropertyAsInt("tests.multiplier", TEST_NIGHTLY ? 2 : 1); + systemPropertyAsInt("tests.multiplier", defaultRandomMultiplier()); + + /** Compute the default value of the random multiplier (based on {@link #TEST_NIGHTLY}). */ + static int defaultRandomMultiplier() { + return TEST_NIGHTLY ? 2 : 1; + } /** Leave temporary files on disk, even on successful runs. */ public static final boolean LEAVE_TEMPORARY; diff --git a/lucene/test-framework/src/java/org/apache/lucene/tests/util/RunListenerPrintReproduceInfo.java b/lucene/test-framework/src/java/org/apache/lucene/tests/util/RunListenerPrintReproduceInfo.java index 9fa50a20417..753f27a15c8 100644 --- a/lucene/test-framework/src/java/org/apache/lucene/tests/util/RunListenerPrintReproduceInfo.java +++ b/lucene/test-framework/src/java/org/apache/lucene/tests/util/RunListenerPrintReproduceInfo.java @@ -189,7 +189,8 @@ public final class RunListenerPrintReproduceInfo extends RunListener { addVmOpt(b, "tests.seed", RandomizedContext.current().getRunnerSeedAsString()); // Test groups and multipliers. - if (RANDOM_MULTIPLIER > 1) addVmOpt(b, "tests.multiplier", RANDOM_MULTIPLIER); + if (RANDOM_MULTIPLIER != LuceneTestCase.defaultRandomMultiplier()) + addVmOpt(b, "tests.multiplier", RANDOM_MULTIPLIER); if (TEST_NIGHTLY) addVmOpt(b, SYSPROP_NIGHTLY, TEST_NIGHTLY); if (TEST_WEEKLY) addVmOpt(b, SYSPROP_WEEKLY, TEST_WEEKLY); if (TEST_MONSTER) addVmOpt(b, SYSPROP_MONSTER, TEST_MONSTER);