You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2013/04/02 19:23:15 UTC

[jira] [Assigned] (DERBY-5172) testTimeAndDateWithCalendar (jdbcapi.CallableTest) fails intermittently with AssertionFailedError: hour expected: differs from actual.

     [ https://issues.apache.org/jira/browse/DERBY-5172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Knut Anders Hatlen reassigned DERBY-5172:
-----------------------------------------

    Assignee: Knut Anders Hatlen

The test uses explicit timezones, which is why it fails even if it has passed daylight savings time in the local timezone.

A timestamp is passed to a stored procedure with an explicit timezone (using setTimestamp(int,Timestamp,Calendar)). The procedure simply copies the timestamp from an input parameter to an output parameter. The test then reads the timestamp using an explicit timestamp (getTimestamp(int,Calendar)), but not necessarily the same timezone that was used when passing it to the procedure.

The test converts the timestamp between the two timezones before comparing them. However, Derby does not convert the timestamps directly from one timezone to the other in this case. When the timestamp is inside the stored procedure, it is actually in the local timezone. So the conversion is tz1 -> local timezone -> tz2. Around the time one of the timezones switch to DST, that conversion may be an hour off compared to a direct tz1 -> tz2 conversion.

I'll update the test to use the same conversion as Derby does.
                
> testTimeAndDateWithCalendar (jdbcapi.CallableTest) fails intermittently with AssertionFailedError: hour expected: differs from actual.
> --------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5172
>                 URL: https://issues.apache.org/jira/browse/DERBY-5172
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.5.3.2, 10.7.1.4
>         Environment: IBM jvms 1.5 (SR12 FP3) and 1.6 (SR9 FP1), Suse Linux and Windows XP
>            Reporter: Myrna van Lunteren
>            Assignee: Knut Anders Hatlen
>            Priority: Minor
>              Labels: derby_triage10_10
>         Attachments: failing-timestamp.diff
>
>
> I've seen the following stack trace, for instance on 3/26/2011: http://people.apache.org/~myrnavl/derby_test_results/v10_7/windows/testlog/ibm16/1085854-suites.All_diff.txt
> 1) testTimeAndDateWithCalendar(org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest)junit.framework.AssertionFailedError: hour expected:<2> but was:<3>
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest.assertSameTime(CallableTest.java:504)
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest.assertSameTimestamp(CallableTest.java:521)
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest.testTimeAndDateWithCalendar(CallableTest.java:456)
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest.testTimeAndDateWithCalendar(CallableTest.java:412)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
> 	at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:109)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> 	at junit.extensions.TestSetup.run(TestSetup.java:16)
> And another example, from
> http://people.apache.org/~myrnavl/derby_test_results/v10_5/windows/testlog/ibm16/1085628-suites.All_diff.txt:
> 1) testTimeAndDateWithCalendar(org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest)junit.framework.AssertionFailedError: hour expected:<18> but was:<17>
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest.assertSameTime(CallableTest.java:512)
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest.assertSameTimestamp(CallableTest.java:529)
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest.testTimeAndDateWithCalendar(CallableTest.java:464)
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.CallableTest.testTimeAndDateWithCalendar(CallableTest.java:412)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
> 	at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:109)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> 	at junit.extensions.TestSetup.run(TestSetup.java:23)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> 	at junit.extensions.TestSetup.run(TestSetup.java:23)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> 	at junit.extensions.TestSetup.run(TestSetup.java:23)
> As this is happening on two different code lines and on both linux and windows and I've recently updated the jvms, this could be a jvm issue, but that needs to be verified.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira