Aha, yes, I need to set -Ptests.nightly=true as it changes the behaviour of `rarely()`. Thanks, this drove me absolutely nuts for about three hours yesterday.
> On 24 Sep 2025, at 16:23, Michael Sokolov <[email protected]> wrote: > > did you also set the other test parameters like -Ptests.nightly=true ? > > On Wed, Sep 24, 2025 at 7:01 AM Alan Woodward <[email protected]> wrote: >> >> Hi all, >> >> I’m seeing some strange behaviour trying to reproduce a test failure in >> IntelliJ, compared to what happens when I run the test on the command line >> via gradle. >> >> The following failed in the elasticsearch CI this morning, and reproduces >> when I run it on my laptop: >> >> ./gradlew :lucene:test-framework:test --tests >> "org.apache.lucene.tests.store.TestMockDirectoryWrapper.testIsLoadedOnSlice" >> -Ptests.jvms=12 -Ptests.jvmargs= -Ptests.seed=7AA64BB2BA5EE192 >> -Ptests.useSecurityManager=true -Ptests.nightly=true -Ptests.gui=true >> -Ptests.file.encoding=US-ASCII -Ptests.vectorsize=128 >> -Ptests.forceintegervectors=true >> >> However, if I take that seed and fix it on TestMockDirectoryWrapper, the >> same test passes when run inside IntelliJ. Adding some debug println >> statements indicates that the seed is indeed the same, but the random code >> paths taken seem to be different. I made the following changes to the code: >> >> --- >> >> $ git diff >> diff --git >> a/lucene/test-framework/src/java/org/apache/lucene/tests/store/BaseDirectoryTestCase.java >> >> b/lucene/test-framework/src/java/org/apache/lucene/tests/store/BaseDirectoryTestCase.java >> index 27bfa3c72f1..e522168b43c 100644 >> --- >> a/lucene/test-framework/src/java/org/apache/lucene/tests/store/BaseDirectoryTestCase.java >> +++ >> b/lucene/test-framework/src/java/org/apache/lucene/tests/store/BaseDirectoryTestCase.java >> @@ -22,6 +22,7 @@ import static org.hamcrest.Matchers.containsString; >> import static org.hamcrest.Matchers.hasItemInArray; >> import static org.hamcrest.Matchers.not; >> >> +import com.carrotsearch.randomizedtesting.RandomizedContext; >> import com.carrotsearch.randomizedtesting.RandomizedTest; >> import com.carrotsearch.randomizedtesting.generators.RandomBytes; >> import com.carrotsearch.randomizedtesting.generators.RandomNumbers; >> @@ -1647,6 +1648,10 @@ public abstract class BaseDirectoryTestCase extends >> LuceneTestCase { >> } >> var loaded = in.isLoaded(); >> >> + >> System.out.println(RandomizedContext.current().getRunnerSeedAsString()); >> + System.out.println(dir.toString()); >> + System.out.println(dir.getClass().getName()); >> + >> if (Constants.WINDOWS) { >> // On Windows, we temporarily don't care until this is fixed: >> #14050 >> } else if (FilterDirectory.unwrap(dir) instanceof MMapDirectory >> diff --git >> a/lucene/test-framework/src/test/org/apache/lucene/tests/store/TestMockDirectoryWrapper.java >> >> b/lucene/test-framework/src/test/org/apache/lucene/tests/store/TestMockDirectoryWrapper.java >> index b5ca29dcbb0..d06e32b4ba1 100644 >> --- >> a/lucene/test-framework/src/test/org/apache/lucene/tests/store/TestMockDirectoryWrapper.java >> +++ >> b/lucene/test-framework/src/test/org/apache/lucene/tests/store/TestMockDirectoryWrapper.java >> @@ -21,6 +21,7 @@ import java.io.FileNotFoundException; >> import java.io.IOException; >> import java.nio.file.NoSuchFileException; >> import java.nio.file.Path; >> +import com.carrotsearch.randomizedtesting.annotations.Seed; >> import org.apache.lucene.document.Document; >> import org.apache.lucene.store.ByteArrayDataInput; >> import org.apache.lucene.store.ByteBuffersDirectory; >> @@ -33,6 +34,7 @@ import org.apache.lucene.tests.index.RandomIndexWriter; >> >> // See: https://issues.apache.org/jira/browse/SOLR-12028 Tests cannot remove >> files on Windows >> // machines occasionally >> +@Seed("7AA64BB2BA5EE192") >> public class TestMockDirectoryWrapper extends BaseDirectoryTestCase { >> >> @Override >> >> — >> >> Running from gradle I get the following output: >> >> 1> 7AA64BB2BA5EE192 >> 1> >> MockDirectoryWrapper(NRTCachingDirectory(MMapDirectory@/Users/romseygeek/projects/lucene/lucene/test-framework/build/tests-tmp/lucene.tests.store.TestMockDirectoryWrapper_7AA64BB2BA5EE192-008/index-MMapDirectory-001 >> lockFactory=org.apache.lucene.store.NativeFSLockFactory@2bb5ff68; >> maxCacheMB=0.9546899795532227 maxMergeSizeMB=0.9689407348632812)) >> 1> org.apache.lucene.tests.store.MockDirectoryWrapper >> >> And running via IntelliJ: >> >> 7AA64BB2BA5EE192 >> MockDirectoryWrapper(ByteBuffersDirectory@7e97aee2 >> lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@dfeade5) >> org.apache.lucene.tests.store.MockDirectoryWrapper >> >> Same seed, different Directory implementations. This happens with both the >> IntelliJ and gradle test runners, and I’ve checked that both situations use >> the same JDK. I am pretty stumped at the moment. Any ideas, anyone? >> >> - Alan >> >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
