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.
>

Reply via email to