You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by "Rupert Westenthaler (JIRA)" <ji...@apache.org> on 2012/06/13 08:44:42 UTC
[jira] [Created] (STANBOL-659) Adapt Unit test to work independend
of Hashing algorithm used by HashSets/-Maps
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
[jira] [Resolved] (STANBOL-659) Adapt Unit test to work independend
of Hashing algorithm used by HashSets/-Maps
Posted by "Rupert Westenthaler (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/STANBOL-659?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rupert Westenthaler resolved STANBOL-659.
-----------------------------------------
Resolution: Fixed
fixed with revision #1352034 for Java 7. This might eventually hit us again with Java 8.
> 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