Looking over the test again (I was the original author IIRC),
I think this test still has lots of value with a longer timeout.

Experience seems to show that 200ms is not a long enough timeout for
"system" operations to use in non-flaky tests, including everything in
Process handling.
I say we ncrease the timeout by at least 10x and move on.

On Wed, Nov 12, 2014 at 12:16 PM, roger riggs <roger.ri...@oracle.com> wrote:
> Hi Martin, Rob,
>
> I thought the point of the test was to verify the timeout logic in
> waitFor(timeout).
> Adding the prints without changing the test criteria was intended to gather
> data
> about the distribution.
>
> A long timeout would still catch a failure in the reaper/waitFor
> communication
> so maybe that's ok.
>
> As for printing the time, I would switch to the newer
> java.time.Instant/Duration
> which have a decent toString.
>
> Roger
>
>
>
> On 11/12/2014 3:02 PM, Rob McKenna wrote:
>>
>> Eesh, Sorry Roger, I have something like this on my todo.
>>
>> Martin, my concern with the long delay approach is that it effectively
>> nullifies the point of the test. Given that this test has been flakey the
>> approach has been to simply bump the acceptable delta by another 100ms or so
>> every time. Since we've had to do this repeatedly however, I'm beginning to
>> question whether the test is more trouble than its worth.
>>
>>     -Rob
>>
>> On 12/11/14 19:44, Martin Buchholz wrote:
>>>
>>> The print statement below seems redundant with the assertion failure
>>> message.
>>> You could improve the assertion message instead if need be.
>>> Adding thousand separator underscores to 200000000L would help a little.
>>>
>>> I like my little helper
>>>
>>>      static long millisElapsedSince(long startNanoTime) {
>>>          return NANOSECONDS.toMillis(System.nanoTime() - startNanoTime);
>>>      }
>>>
>>>
>>> +            System.out.printf(" waitFor process: delta: %d%n",(end -
>>> start) );
>>> +
>>>               if ((end - start) > 200000000L * (AIX.is() ? 2 : 1))
>>>                   fail("Test failed: waitFor took too long (" + (end -
>>> start) + "ns)");
>>>
>>> 200 ms timeout for subprocesses to finish is just too damn low. In
>>> j.u.c. tests we switched to 10 seconds for most "long" timeouts
>>> (LONG_DELAY_MS) and are happy with the disappearance of rare flaky
>>> results.
>>>
>>>
>>> On Wed, Nov 12, 2014 at 11:34 AM, roger riggs <roger.ri...@oracle.com>
>>> wrote:
>>>>
>>>> Please review test changes to ProcessBuilder Basic.java to add some
>>>> debugging information.
>>>> The test has been failing intermittently.  The wait times have been
>>>> extended
>>>> to see
>>>> if the systems are just slow.  The failure criteria have not changed.
>>>>
>>>> Suggestions welcome.
>>>>
>>>> Webrev:
>>>> http://cr.openjdk.java.net/~rriggs/webrev-basic-debug-8043477/
>>>>
>>>> issue:
>>>>     8043477: java/lang/ProcessBuilder/Basic.java failed with:
>>>> java.lang.AssertionError: Some tests failed
>>>>
>>>> Thanks, Roger
>>>>
>>>> [1] https://bugs.openjdk.java.net/browse/JDK-8043477
>>>>
>>
>

Reply via email to