Rupert Westenthaler created STANBOL-659:
-------------------------------------------
Summary: Adapt Unit test to work independend of Hashing algorithm
used by HashSets/-Maps
Key: STANBOL-659
URL: https://issues.apache.org/jira/browse/STANBOL-659
Project: Stanbol
Issue Type: Test
Reporter: Rupert Westenthaler
Assignee: Rupert Westenthaler
With Java SE 7u6 and all current SE 8 build the hash algorithm used by the
HashSet/HashMap based Set implementation will change (see [1] for details).
It is important to note that the iteration order of hash based set
implementations relays on the used hash algorithm. Therefore with this change
the iteration order of will change - something that has not happened since
JDK1.2 if I remember correctly.
Related to Stanbol this has the following affects:
* ordering of Triples in serialize RDF graphs changes
* ordering of Roles for the Factstore changes -> resulting in different sorted
SQL queries (e.g. such as ordering of selected fields will change)
while this does not have any effect for normal operation it does affect a lot
of unit tests as those do often check against String patterns that will no
longer match if the ordering in the serialization changes.
Validate compatibility of the Tests:
* ensure that the new hashing algorith is used for all HashSet/-Maps under
Java7u6 by setting "jdk.map.althashing.threshold=0" (see also [1])
* check build with JDK 1.6 (old hashing)
* check build with JDK 1.7u6+ (new hashing)
Adapting Tests/Components:
* For the JSON-LD serializer I suggest to use TreeMaps. This has the advantage
that properties will be sorted alphabetically - what will the serialized RDF
made much easier to read for users. This is also important because all JSON-LD
specific properties start with '@' and will therefore be in the beginning of an
JSON object.
* Adapt unit tests for JSON-LD to validate the alphabetically ordered JSON
properties.
* For Roles of the FactStore I also suggest to use a TreeMap to ensure that the
created SQL queries are independend of the used JDK version.
* All other unit tests affected by this need to be adapted to be independent of
this (e.g. changed serialization order of triples.
[1] http://mail.openjdk.java.net/pipermail/jdk7u-dev/2012-May/003118.html
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira