Oh, I didn't know that. Thought it affects only iters. In that case it may be wrong to change the default?
Shai On May 11, 2013 4:39 PM, "Dawid Weiss" <[email protected]> wrote: > > Can you create an issue and attach a patch? failFast is not only for > reiterations -- its primary purpose is, as far as I remember, to skip all > tests executing on this JVM after the first (or n-th in general) failure > was hit. I'd have to take a global look at this in order to constructively > tell you how to globally change the default. > > Dawid > > On Sat, May 11, 2013 at 3:07 PM, Shai Erera <[email protected]> wrote: > >> Hmm ... thought it would be a simple fix such as changing >> >> boolean failFast = systemPropertyAsBoolean(SYSPROP_FAILFAST, false); >> >> to >> >> boolean failFast = systemPropertyAsBoolean(SYSPROP_FAILFAST, true); >> >> But after I do that, tests like TestSystemPropertiesInvariantRule (and >> few others) fail, on some unexpected failures. >> I think that in general the code that initializes ignoreAfterMaxFailures >> should take tests.iters into account? >> I.e. what's the point of running a test with maxfailures=5 or >> failfast=true without iters? >> >> After I do this, all tests are happy: >> >> Index: >> lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java >> =================================================================== >> --- >> lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java >> (revision 1481311) >> +++ >> lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java >> (working copy) >> @@ -358,12 +358,13 @@ >> /** >> * Ignore tests after hitting a designated number of initial failures. >> */ >> - final static TestRuleIgnoreAfterMaxFailures ignoreAfterMaxFailures; >> + final static TestRuleIgnoreAfterMaxFailures ignoreAfterMaxFailures; >> static { >> int maxFailures = systemPropertyAsInt(SYSPROP_MAXFAILURES, >> Integer.MAX_VALUE); >> - boolean failFast = systemPropertyAsBoolean(SYSPROP_FAILFAST, false); >> - >> - if (failFast) { >> + boolean failFast = systemPropertyAsBoolean(SYSPROP_FAILFAST, true); >> + int iters = systemPropertyAsInt("tests.iters", 1); >> + >> + if (iters > 1 && failFast) { >> if (maxFailures == Integer.MAX_VALUE) { >> maxFailures = 1; >> } else { >> >> What do you think? Maybe we should also print a warning about using these >> props without iters? >> >> Shai >> >> >> On Fri, May 10, 2013 at 10:45 PM, Dawid Weiss < >> [email protected]> wrote: >> >>> > Dawid promised me he will one day find the time to do it! :) >>> >>> I have it pretty high on my list of things to do in my spare time. The >>> problem is twofold -- I have very few spare cycles at the moment and the >>> problem is actually more complicated than it seems on the surface. I do >>> have some ideas though. >>> >>> Maybe if you have a shellscript that's generic enough, it's worth >>>> putting under dev-tools? >>>> >>> >>> The simplest string would be something that just calls ant test >>> -Dtests.seed=`...` repeatedly with a different seed and checks for the >>> output status. This is doable even in bash, as in: >>> >>> for i in `seq 1 100`; do >>> seed=`printf "%X%X" $RANDOM $RANDOM` >>> echo "Iteration $i, seed: $seed" >>> # ant -Dtests.seed=$seed >>> # check if $? indicates a failure and abort if so. >>> done >>> >>> D. >>> >> >> >
