You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Panagiotis Garefalakis (Jira)" <ji...@apache.org> on 2020/05/18 22:25:00 UTC

[jira] [Comment Edited] (HIVE-23480) Test may fail due to a incorrect usage of a third party library

    [ https://issues.apache.org/jira/browse/HIVE-23480?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17110385#comment-17110385 ] 

Panagiotis Garefalakis edited comment on HIVE-23480 at 5/18/20, 10:24 PM:
--------------------------------------------------------------------------

Hey [~contextshuffling] thanks for reporting this! 
Instead of using an alternative library, I believe we could just use the _JsonPropertyOrder_ annotation to ensure the ordering of the serialized properties.
Creating a PR --please  let me know what you think.


was (Author: pgaref):
Hey [~contextshuffling] thanks for reporting this! 
Instead of using an alternative library, I believe we could also use the _JsonPropertyOrder_ annotation to ensure the ordering of the serialized properties.
Creating a PR --please  let me know what you think.

> Test may fail due to a incorrect usage of a third party library
> ---------------------------------------------------------------
>
>                 Key: HIVE-23480
>                 URL: https://issues.apache.org/jira/browse/HIVE-23480
>             Project: Hive
>          Issue Type: Bug
>          Components: HBase Metastore
>            Reporter: contextshuffling
>            Assignee: Panagiotis Garefalakis
>            Priority: Minor
>         Attachments: HIVE-23480.01.patch
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Tests {{org.apache.hadoop.hive.common.TestStatsSetupConst#testStatColumnEntriesCompat}} replies on Jackson to serialize the params to string. However, Jackson library uses reflection API {{getDeclaredFields}} but it does not guarantee any specific order of returned field so the order of fields in the json string might change, and thus, test can fail or pass without any changes to the code.
> An example error message:
> {code:java}
> org.junit.ComparisonFailure: expected:<{"[BASIC_STATS":"true","COLUMN_STATS":{"Foo":"true"}]}> but was:<{"[COLUMN_STATS":{"Foo":"true"},"BASIC_STATS":"true"]}>
> at org.apache.hadoop.hive.common.TestStatsSetupConst.testStatColumnEntriesCompat(TestStatsSetupConst.java:76)
> {code}
> Ideally, this test should not reply on the order returned by this API so that it generates a deterministic result.
> An potential solution is to use library like https://github.com/skyscreamer/JSONassert to compare string in a order-agnostic way.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)