[
https://issues.apache.org/jira/browse/DERBY-4624?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-4624:
--------------------------------------
Attachment: remove_calendar.diff
The Calendar object is actually only used to initialize some unused fields, so
I think removing it along with the dead code is the simplest and best
resolution to this issue. The attached patch removes the Calendar object, the
broken midnight check that uses the Calendar, and the unused fields
ONE_BILLION, TODAY, TOMORROW, YEAR_FROM_TOMORROW, YEAR_FROM_TODAY, YESTERDAY
and WEEK_FROM_TODAY, as well as the method isoFormatDate() that's only used to
initialize the unused fields.
> 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
> 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.