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

Edgar Molina updated AXIS2-5923:
--------------------------------
    Description: 
h1. Background

The 1st of April 2018, Namibia changed their time zone and they don't observe 
DST anymore, they changed from _Western African Time (WAST)_ to _Central 
African Time (CAST)_, this change was rolled out in JDK 1.8u161 (Search for 
tzdata2017c 
[here|http://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html],
 and check the database in 
[wikipedia|https://en.wikipedia.org/wiki/List_of_tz_database_time_zones]).

The Axis2 code in the ConverterUtil 
(java/org/apache/axis2/databinding/utils/ConverterUtil.java) creates a Calendar 
object which is historically aware (returns the date offsets for the date that 
is being set, in other words returns that in Feb 2007, Namibia had DST), then 
pulls the raw offset from the time zone, which returns the current offset (no 
DST) and then sets it to the calendar again.

This discrepancy causes that the calendar is off by one hour this time of the 
year:
{noformat}
setting time zone to Africa/Windhoek
testing with TimeZone Central African Time
uses daylight time: false
we are in daylight time: false
testValue ==> 2007-02-15T14:54:29
calendar  ==> 2007-02-15T13:54:29+02:00 <---- HERE
back      ==> 2007-02-15T14:54:29.000+03:00{noformat}
h1. Proposed Design

We can default the test date time zone to GMT+1 as WAST used to be or to a 
different country in this TZ. It seems that this test is very outdated as 
Namibia hasn't been GMT+1 for a while and currently there is no GMT+1 that 
observes DST in the southern hemisphere.

Therefore:
 # Update the offending test to switch from "Africa/Windhoek" to "Africa/Tunis" 
(capital of Tunisia) to fix the broken build.
 # Or refactor the ConverterUtil so it doesn't overwrites the TZ offset (this 
might be sensitive to specific JVM implementations).

{panel:title=Build Execution}
{noformat}
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.apache.axis2.databinding.utils.BeanUtilTest
[INFO] Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.418 s 
- in org.apache.axis2.databinding.utils.BeanUtilTest
[INFO] Running org.apache.axis2.databinding.utils.ConverterUtilTest
[ERROR] Tests run: 12, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.204 
s <<< FAILURE! - in org.apache.axis2.databinding.utils.ConverterUtilTest
[ERROR] 
testConvertToDateTime(org.apache.axis2.databinding.utils.ConverterUtilTest)  
Time elapsed: 0.027 s  <<< FAILURE!
junit.framework.ComparisonFailure: expected:<2007-02-15T1[4]:54:29> but 
was:<2007-02-15T1[3]:54:29>
        at junit.framework.Assert.assertEquals(Assert.java:100)
        at junit.framework.Assert.assertEquals(Assert.java:107)
        at junit.framework.TestCase.assertEquals(TestCase.java:269)
        at 
org.apache.axis2.databinding.utils.ConverterUtilTest.internalTestConvertToDateTime(ConverterUtilTest.java:385)
        at 
org.apache.axis2.databinding.utils.ConverterUtilTest.testConvertToDateTime(ConverterUtilTest.java:165)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at junit.framework.TestCase.runTest(TestCase.java:176)
        at junit.framework.TestCase.runBare(TestCase.java:141)
        at junit.framework.TestResult$1.protect(TestResult.java:122)
        at junit.framework.TestResult.runProtected(TestResult.java:142)
        at junit.framework.TestResult.run(TestResult.java:125)
        at junit.framework.TestCase.run(TestCase.java:129)
        at junit.framework.TestSuite.runTest(TestSuite.java:252)
        at junit.framework.TestSuite.run(TestSuite.java:247)
        at 
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:272)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:236)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
        at 
org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:386)
        at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:323)
        at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:143)

[INFO] Running org.apache.axis2.databinding.utils.MultirefHelperTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 s - 
in org.apache.axis2.databinding.utils.MultirefHelperTest
[INFO] Running org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderTest
[INFO] Tests run: 22, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s 
- in org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderTest
[INFO]
[INFO] Results:
[INFO]
[ERROR] Failures:
[ERROR]   
ConverterUtilTest.testConvertToDateTime:165->internalTestConvertToDateTime:385 
expected:<2007-02-15T1[4]:54:29> but was:<2007-02-15T1[3]:54:29>
[INFO]
[ERROR] Tests run: 56, Failures: 1, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:19 min
[INFO] Finished at: 2018-07-12T14:22:28-05:00
[INFO] Final Memory: 31M/254M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-surefire-plugin:2.20:test (default-test) on 
project axis2-adb: There are test failures.
{noformat}
{panel}

  was:
h1. Background

The 1st of April 2018, Namibia changed their time zone and they don't observe 
DST anymore, they changed from _Western African Time (WAST)_ to _Central 
African Time (CAST)_, this change was rolled out in JDK 1.8u161 (Search for 
tzdata2017c 
[here|http://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html],
 and check the database in 
[wikipedia|https://en.wikipedia.org/wiki/List_of_tz_database_time_zones]).

The Axis2 code in the ConverterUtil 
(java/org/apache/axis2/databinding/utils/ConverterUtil.java) creates a Calendar 
object which is historically aware (returns the date offsets for the date that 
is being set, in other words returns that in Feb 2007, Namibia had DST), then 
pulls the raw offset from the time zone, which returns the current offset (no 
DST) and then sets it to the calendar again.

This discrepancy causes that the calendar is off by one hour this time of the 
year:
{noformat}
setting time zone to Africa/Windhoek
testing with TimeZone Central African Time
uses daylight time: false
we are in daylight time: false
testValue ==> 2007-02-15T14:54:29
calendar  ==> 2007-02-15T13:54:29+02:00 <---- HERE
back      ==> 2007-02-15T14:54:29.000+03:00{noformat}
h1. Proposed Design

We can default the test date time zone to GMT+1 as WAST used to be or to a 
different country in this TZ. It seems that this test is very outdated as 
Namibia hasn't been GMT+1 for a while and currently there is no GMT+1 that 
observes DST in the southern hemisphere.

Therefore:

Update the offending test to switch from "Africa/Windhoek" to "Africa/Tunis" 
(capital of Tunisia) to fix the broken build.


{panel:title=Build Execution}
{noformat}
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.apache.axis2.databinding.utils.BeanUtilTest
[INFO] Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.418 s 
- in org.apache.axis2.databinding.utils.BeanUtilTest
[INFO] Running org.apache.axis2.databinding.utils.ConverterUtilTest
[ERROR] Tests run: 12, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.204 
s <<< FAILURE! - in org.apache.axis2.databinding.utils.ConverterUtilTest
[ERROR] 
testConvertToDateTime(org.apache.axis2.databinding.utils.ConverterUtilTest)  
Time elapsed: 0.027 s  <<< FAILURE!
junit.framework.ComparisonFailure: expected:<2007-02-15T1[4]:54:29> but 
was:<2007-02-15T1[3]:54:29>
        at junit.framework.Assert.assertEquals(Assert.java:100)
        at junit.framework.Assert.assertEquals(Assert.java:107)
        at junit.framework.TestCase.assertEquals(TestCase.java:269)
        at 
org.apache.axis2.databinding.utils.ConverterUtilTest.internalTestConvertToDateTime(ConverterUtilTest.java:385)
        at 
org.apache.axis2.databinding.utils.ConverterUtilTest.testConvertToDateTime(ConverterUtilTest.java:165)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at junit.framework.TestCase.runTest(TestCase.java:176)
        at junit.framework.TestCase.runBare(TestCase.java:141)
        at junit.framework.TestResult$1.protect(TestResult.java:122)
        at junit.framework.TestResult.runProtected(TestResult.java:142)
        at junit.framework.TestResult.run(TestResult.java:125)
        at junit.framework.TestCase.run(TestCase.java:129)
        at junit.framework.TestSuite.runTest(TestSuite.java:252)
        at junit.framework.TestSuite.run(TestSuite.java:247)
        at 
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:272)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:236)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
        at 
org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:386)
        at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:323)
        at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:143)

[INFO] Running org.apache.axis2.databinding.utils.MultirefHelperTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 s - 
in org.apache.axis2.databinding.utils.MultirefHelperTest
[INFO] Running org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderTest
[INFO] Tests run: 22, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s 
- in org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderTest
[INFO]
[INFO] Results:
[INFO]
[ERROR] Failures:
[ERROR]   
ConverterUtilTest.testConvertToDateTime:165->internalTestConvertToDateTime:385 
expected:<2007-02-15T1[4]:54:29> but was:<2007-02-15T1[3]:54:29>
[INFO]
[ERROR] Tests run: 56, Failures: 1, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:19 min
[INFO] Finished at: 2018-07-12T14:22:28-05:00
[INFO] Final Memory: 31M/254M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-surefire-plugin:2.20:test (default-test) on 
project axis2-adb: There are test failures.
{noformat}
{panel}



> Broken build in JDK1.8u172
> --------------------------
>
>                 Key: AXIS2-5923
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5923
>             Project: Axis2
>          Issue Type: Bug
>            Reporter: Edgar Molina
>            Priority: Minor
>
> h1. Background
> The 1st of April 2018, Namibia changed their time zone and they don't observe 
> DST anymore, they changed from _Western African Time (WAST)_ to _Central 
> African Time (CAST)_, this change was rolled out in JDK 1.8u161 (Search for 
> tzdata2017c 
> [here|http://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html],
>  and check the database in 
> [wikipedia|https://en.wikipedia.org/wiki/List_of_tz_database_time_zones]).
> The Axis2 code in the ConverterUtil 
> (java/org/apache/axis2/databinding/utils/ConverterUtil.java) creates a 
> Calendar object which is historically aware (returns the date offsets for the 
> date that is being set, in other words returns that in Feb 2007, Namibia had 
> DST), then pulls the raw offset from the time zone, which returns the current 
> offset (no DST) and then sets it to the calendar again.
> This discrepancy causes that the calendar is off by one hour this time of the 
> year:
> {noformat}
> setting time zone to Africa/Windhoek
> testing with TimeZone Central African Time
> uses daylight time: false
> we are in daylight time: false
> testValue ==> 2007-02-15T14:54:29
> calendar  ==> 2007-02-15T13:54:29+02:00 <---- HERE
> back      ==> 2007-02-15T14:54:29.000+03:00{noformat}
> h1. Proposed Design
> We can default the test date time zone to GMT+1 as WAST used to be or to a 
> different country in this TZ. It seems that this test is very outdated as 
> Namibia hasn't been GMT+1 for a while and currently there is no GMT+1 that 
> observes DST in the southern hemisphere.
> Therefore:
>  # Update the offending test to switch from "Africa/Windhoek" to 
> "Africa/Tunis" (capital of Tunisia) to fix the broken build.
>  # Or refactor the ConverterUtil so it doesn't overwrites the TZ offset (this 
> might be sensitive to specific JVM implementations).
> {panel:title=Build Execution}
> {noformat}
> [INFO]
> [INFO] -------------------------------------------------------
> [INFO]  T E S T S
> [INFO] -------------------------------------------------------
> [INFO] Running org.apache.axis2.databinding.utils.BeanUtilTest
> [INFO] Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.418 
> s - in org.apache.axis2.databinding.utils.BeanUtilTest
> [INFO] Running org.apache.axis2.databinding.utils.ConverterUtilTest
> [ERROR] Tests run: 12, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 
> 0.204 s <<< FAILURE! - in org.apache.axis2.databinding.utils.ConverterUtilTest
> [ERROR] 
> testConvertToDateTime(org.apache.axis2.databinding.utils.ConverterUtilTest)  
> Time elapsed: 0.027 s  <<< FAILURE!
> junit.framework.ComparisonFailure: expected:<2007-02-15T1[4]:54:29> but 
> was:<2007-02-15T1[3]:54:29>
>         at junit.framework.Assert.assertEquals(Assert.java:100)
>         at junit.framework.Assert.assertEquals(Assert.java:107)
>         at junit.framework.TestCase.assertEquals(TestCase.java:269)
>         at 
> org.apache.axis2.databinding.utils.ConverterUtilTest.internalTestConvertToDateTime(ConverterUtilTest.java:385)
>         at 
> org.apache.axis2.databinding.utils.ConverterUtilTest.testConvertToDateTime(ConverterUtilTest.java:165)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at junit.framework.TestCase.runTest(TestCase.java:176)
>         at junit.framework.TestCase.runBare(TestCase.java:141)
>         at junit.framework.TestResult$1.protect(TestResult.java:122)
>         at junit.framework.TestResult.runProtected(TestResult.java:142)
>         at junit.framework.TestResult.run(TestResult.java:125)
>         at junit.framework.TestCase.run(TestCase.java:129)
>         at junit.framework.TestSuite.runTest(TestSuite.java:252)
>         at junit.framework.TestSuite.run(TestSuite.java:247)
>         at 
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:272)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:236)
>         at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:386)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:323)
>         at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:143)
> [INFO] Running org.apache.axis2.databinding.utils.MultirefHelperTest
> [INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 s 
> - in org.apache.axis2.databinding.utils.MultirefHelperTest
> [INFO] Running 
> org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderTest
> [INFO] Tests run: 22, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 
> s - in org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderTest
> [INFO]
> [INFO] Results:
> [INFO]
> [ERROR] Failures:
> [ERROR]   
> ConverterUtilTest.testConvertToDateTime:165->internalTestConvertToDateTime:385
>  expected:<2007-02-15T1[4]:54:29> but was:<2007-02-15T1[3]:54:29>
> [INFO]
> [ERROR] Tests run: 56, Failures: 1, Errors: 0, Skipped: 0
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time: 02:19 min
> [INFO] Finished at: 2018-07-12T14:22:28-05:00
> [INFO] Final Memory: 31M/254M
> [INFO] 
> ------------------------------------------------------------------------
> [ERROR] Failed to execute goal 
> org.apache.maven.plugins:maven-surefire-plugin:2.20:test (default-test) on 
> project axis2-adb: There are test failures.
> {noformat}
> {panel}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to