[15] RFR: 8246261: TCKLocalTime.java failed due to "AssertionError: expected [18:14:22] but found [18:14:23]"
Joe Wang
huizhe.wang at oracle.com
Tue Jun 2 06:03:21 UTC 2020
Looks good. Thanks for the analysis!
-Joe
On 6/1/2020 9:13 PM, naoto.sato at oracle.com wrote:
> Updated webrev: http://cr.openjdk.java.net/~naoto/8246261/webrev.01/
>
> Naoto
>
> On 6/1/20 6:30 PM, naoto.sato at oracle.com wrote:
>> Hi Joe,
>>
>> In fact, this bug was possibly revealed by the fix to 8242504, where
>> the system clock precision is now nanoseconds. Before that, it used
>> to be millisecond precision, so the first try for the exact match
>> succeeded for most of the cases. Even with the nano precision fix,
>> most of the cases the test exits with exact match in the loop. But
>> you are right, exact match or not does not matter in this test case,
>> so I think we can just eliminate these exact match try loops. I will
>> remove them and do some sniff testing on it.
>>
>> Naoto
>>
>> On 6/1/20 5:58 PM, Joe Wang wrote:
>>> Hi Naoto,
>>>
>>> The patch looks good to fix the failure. I'm just curious whether
>>> the 100-time comparison is necessary because of the existence of
>>> this assertion outside the loop that allowed the test to pass if the
>>> different was within a certain period of time. None of the tests had
>>> commented on the purpose of the test, it looks like it's testing
>>> the assertion that (for the now method) "This will query the system
>>> clock to obtain the current time." The 100-loop therefore was a
>>> compromise for lack of a better way to prove that. I agree with what
>>> you said that "inherently those two objects could have different
>>> times". The outside-loop assertion therefore makes better sense,
>>> and the loop was kind of just wasting time to me (I mean you could
>>> get lucky to have the two returning the same time down to a
>>> nanosecond, but that didn't make the test better than just the
>>> out-of-loop assertion.
>>>
>>> my 2 cents
>>>
>>> -Joe
>>>
>>> On 6/1/2020 12:31 PM, naoto.sato at oracle.com wrote:
>>>> Hello,
>>>>
>>>> Please review the fix to the following issue:
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8246261
>>>>
>>>> The proposed changeset is located at:
>>>>
>>>> https://cr.openjdk.java.net/~naoto/8246261/webrev.00/
>>>>
>>>> The test case compares two LocalTime objects, created with
>>>> LocalTime.now(Clock/ZoneId). So inherently those two objects could
>>>> have different times. The test tries to compare them 100 times for
>>>> the exact match, and if not, then falls back to compare those times
>>>> by truncating nanoseconds. The failure could occur when those two
>>>> LocalTimes are around the whole second, e.g., expected ==
>>>> 18:14:22.999999 and test == 18:14:23.000001. To fix this, check the
>>>> difference of those objects and ensure it is less than a second.
>>>>
>>>> Similar test cases exist in TCKLocalDateTime.java and
>>>> TCKZonedDateTime.java so they should also be fixed. It is ok to
>>>> leave the similar test case in TCKLocalDate.java, as multiple tries
>>>> do exact match.
>>>>
>>>> Naoto
>>>
More information about the core-libs-dev
mailing list