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

ASF GitHub Bot updated HIVE-22952:
----------------------------------
    Labels: pull-request-available  (was: )

> Use LinkedHashMap in TestStandardObjectInspectors.java
> ------------------------------------------------------
>
>                 Key: HIVE-22952
>                 URL: https://issues.apache.org/jira/browse/HIVE-22952
>             Project: Hive
>          Issue Type: Bug
>          Components: Test, Tests
>            Reporter: cpugputpu
>            Priority: Minor
>              Labels: pull-request-available
>
> The test in 
> _org.apache.hadoop.hive.serde2.objectinspector.TestStandardObjectInspectors#testStandardUnionObjectInspector_
>  can fail due to a different iteration order of HashMap. The failure is 
> presented as follows.
> org.junit.ComparisonFailure: 
> expected:<\{4:{6:"six",7:"seven",8:"eight"}}> 
> but was:<\{4:{6:"six",8:"eight",7:"seven"}}>
> The reason is that the assertion 
> _assertEquals("\{4:{6:\"six\",7:\"seven\",8:\"eight\"}}", 
> SerDeUtils.getJSONString(union, uoi1));_ compares a hard-coded string against 
> the string representation of a JSON object, which is implemented by a 
> HashMap. To get the string, the HashMap is iterated here at 
> _serde/src/java/org/apache/hadoop/hive/serde2/SerDeUtils.java:343_ 
> _for (Object entry : omap.entrySet())_
> The specification about HashMap says that "this class makes no guarantees as 
> to the order of the map; in particular, it does not guarantee that the order 
> will remain constant over time". The documentation is here for your 
> reference: [https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html]
>  
> The fix is to use LinkedHashMap instead of HashMap. In this way, the 
> non-deterministic behaviour is eliminated and the test will become more 
> stable.
>  



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

Reply via email to