[
https://issues.apache.org/jira/browse/DERBY-4624?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-4624:
--------------------------------------
Assignee: Knut Anders Hatlen
Issue & fix info: [Patch Available]
> Broken logic for avoiding testing across midnight in TimestampArithTest
> -----------------------------------------------------------------------
>
> Key: DERBY-4624
> URL: https://issues.apache.org/jira/browse/DERBY-4624
> Project: Derby
> Issue Type: Bug
> Components: Test
> Affects Versions: 10.6.1.0
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Priority: Minor
> Attachments: remove_calendar.diff
>
>
> TimestampArithTest's decorator has this code to avoid failures in case the
> test starts close to midnight:
> /*
> * Make sure that we are not so close to
> midnight that TODAY
> * might be yesterday before we are finished
> using it.
> */
> while (calendar.get(Calendar.HOUR) == 23
> &&
> calendar.get(Calendar.MINUTE) >= 58) {
> try {
> Thread.sleep((60 -
> calendar.get(Calendar.SECOND)) * 1000);
> } catch (InterruptedException ie) {
> // ignore it
> }
> }
> There are at least three problems with this code:
> 1) (calendar.get(Calendar.HOUR) == 23) never evaluates to true, because
> calendar.get(Calendar.HOUR) returns values in the range 0-11.
> Calendar.HOUR_OF_DAY should be used instead.
> 2) If the current time is after 23:58 and before 23:59, the code sleeps until
> 23:59, the test will wait until 23:59 before it starts, making it even more
> likely that it will cross midnight while running.
> 3) The code is executed after the Calendar object has been initialized, so if
> this code is ever triggered and waits until after midnight, the TODAY field
> is guaranteed to be yesterday when the test starts executing.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.