You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Kengo Seki (Jira)" <ji...@apache.org> on 2020/04/08 01:44:00 UTC
[jira] [Updated] (AVRO-2792) Fix C# logical type tests to work in
other timezones than UTC
[ https://issues.apache.org/jira/browse/AVRO-2792?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kengo Seki updated AVRO-2792:
-----------------------------
Status: Patch Available (was: Open)
> Fix C# logical type tests to work in other timezones than UTC
> -------------------------------------------------------------
>
> Key: AVRO-2792
> URL: https://issues.apache.org/jira/browse/AVRO-2792
> Project: Apache Avro
> Issue Type: Bug
> Reporter: Kengo Seki
> Assignee: Kengo Seki
> Priority: Major
>
> I ran the C# unit tests outside of a container and got the following error. This is because my machine's timezone is JST (UTC+9).
> {code}
> $ cd lang/csharp
> $ ./build.sh test
> (snip)
> X TestLogical_TimestampMicrosecond() [22ms]
> Error Message:
> Expected: 1990-01-01 14:15:30
> But was: 1990-01-01 05:15:30
> Stack Trace:
> at Avro.Test.Generic.GenericTests.test[T](String s, T value) in /home/sekikn/repos/avro/lang/csharp/src/apache/test/Generic/GenericTests.cs:line 38
> at Avro.Test.Generic.GenericTests.TestLogical_TimestampMicrosecond() in /home/sekikn/repos/avro/lang/csharp/src/apache/test/Generic/GenericTests.cs:line 139
> X TestLogical_TimestampMillisecond() [< 1ms]
> Error Message:
> Expected: 1990-01-01 14:15:30
> But was: 1990-01-01 05:15:30
> Stack Trace:
> at Avro.Test.Generic.GenericTests.test[T](String s, T value) in /home/sekikn/repos/avro/lang/csharp/src/apache/test/Generic/GenericTests.cs:line 38
> at Avro.Test.Generic.GenericTests.TestLogical_TimestampMillisecond() in /home/sekikn/repos/avro/lang/csharp/src/apache/test/Generic/GenericTests.cs:line 133
> X TestTimestampMicrosecond("01/01/2019 14:20:00","01/01/2019 14:20:00Z") [< 1ms]
> Error Message:
> Expected: 2019-01-01 14:20:00
> But was: 2019-01-01 05:20:00
> Stack Trace:
> at Avro.Test.LogicalTypeTests.TestTimestampMicrosecond(String s, String e) in /home/sekikn/repos/avro/lang/csharp/src/apache/test/Util/LogicalTypeTests.cs:line 143
> X TestTimestampMillisecond("01/01/2019 14:20:00","01/01/2019 14:20:00Z") [< 1ms]
> Error Message:
> Expected: 2019-01-01 14:20:00
> But was: 2019-01-01 05:20:00
> Stack Trace:
> at Avro.Test.LogicalTypeTests.TestTimestampMillisecond(String s, String e) in /home/sekikn/repos/avro/lang/csharp/src/apache/test/Util/LogicalTypeTests.cs:line 119
> Test Run Failed.
> Total tests: 584
> Passed: 580
> Failed: 4
> Total time: 2.3598 Seconds
> {code}
> [As the specification says|https://avro.apache.org/docs/current/spec.html#Timestamp+%28millisecond+precision%29], Avro's timestamp logical type has a long value that represents the difference from the unix epoch (1 Jan 1970 00:00:00 UTC) and it doesn't have timezone information. So when deserializing it, it's returned as a C# DateTime object with UTC.
> Therefore, if the input string lacks timezone information, we should assume it represents UTC datetime in these test cases.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)