Timing bugs
David Holmes
david.holmes at oracle.com
Thu Nov 10 07:36:24 UTC 2011
Hi Gary,
Functional changes look okay to me.
Thanks,
David
On 10/11/2011 5:21 AM, Gary Adams wrote:
> Here's an update diff for the elapsed time check.
> - added current CR# to @bug tag
> - moved capture of start time to after creation of the latches
> so only the schedule*() and the await() calls are included
> in the elapsed time check.
>
> jdk/test/java/util/Timer/Args.java
>
> /*
> * @test
> - * @bug 6571655 6571881 6574585 6571297
> + * @bug 6571655 6571881 6574585 6571297 6731620
> * @summary Test various args to task scheduling methods
> */
>
> @@ -92,19 +92,21 @@
> new F(){void f(){ t.scheduleAtFixedRate(x, (Date)null, 42); }}
> );
>
> - final long start = System.currentTimeMillis();
> - final Date past = new Date(start - 10500);
> final CountDownLatch y1 = new CountDownLatch(1);
> final CountDownLatch y2 = new CountDownLatch(1);
> final CountDownLatch y3 = new CountDownLatch(11);
> + final long start = System.currentTimeMillis();
> + final Date past = new Date(start - 10500);
> + final long elapsed;
> schedule( t, counter(y1), past);
> schedule( t, counter(y2), past, 1000);
> scheduleAtFixedRate(t, counter(y3), past, 1000);
> y3.await();
> y1.await();
> y2.await();
> - System.out.printf("elapsed=%d%n", System.currentTimeMillis() - start);
> - check(System.currentTimeMillis() - start < 500);
> + elapsed = System.currentTimeMillis() - start;
> + System.out.printf("elapsed=%d%n", elapsed);
> + check(elapsed < 500);
>
> t.cancel();
>
>
>
>
> On 11/ 4/11 09:36 AM, Gary Adams wrote:
>> I've started to look at timing related bugs that have been open
>> for a while, but have not had sufficient priority to make it to the
>> top of the list of bugs to be fixed. Thought I'd start with some
>> low hanging fruit with simple bug fixes.
>>
>> 6731620: TEST_BUG: java/util/Timer/Args.java is too optimistic about
>> the execution time of System.out.printf
>>
>> This seems like a simply problem to avoid two calls to get the current
>> time
>> and to eliminated the time to process the print statement
>> from the evaluation of the test elapsed time.
>>
>> Replacing this sequence ;
>>
>> System.out.printf("elapsed=%d%n", System.currentTimeMillis() - start);
>> check(System.currentTimeMillis() - start < 500);
>>
>> with
>>
>> elapsed = System.currentTimeMillis() - start;
>> System.out.printf("elapsed=%d%n", elapsed);
>> check(elapsed < 500);
>>
>> I plan to test the fix on a 300MHz linux/arm device.
>> I'll provide a proper webrev as soon as I have author rights
>> confirmed. I'm looking for reviewer and a committer,
>> once I get the fix tested locally.
>>
>> Thanks
>> Gary Adams
>>
>
More information about the core-libs-dev
mailing list