Got it!
It's again related to the issue that we faced with non-independent tests.
The incriminated test was doing fragile string comparison on serialized
Values but because the Property<?> methods order is not predictible it
failed intermitently.
I added a JSONAssert utility class to org.qi4j.test-support that provide
JSONObject and JSONArray recursive equality assertion regardless of keys
order. Using thoses in EventRouterTest works.
Problem solved.
I think we can now say that the Qi4j SDK works on JDK6, JDK7, JDK8 and
IBM JDK 6.
All needed changes were valid ones, mostly in tests.
See: https://qi4j.ci.cloudbees.com/
/Paul
Niclas Hedhman a écrit :
Stuart McCulloch usually have clues about these things ;-) Are you
still around??
On Tue, Sep 4, 2012 at 1:04 AM, Paul Merlin<[email protected]> wrote:
Gang,
The majority of the Qi4j SDK now build/run on IBM JDK.
Some unit tests fails though:
https://qi4j.ci.cloudbees.com/job/qi4j-sdk.develop.tests.jdk6-ibm/lastFailedBuild/testReport/
HTTP VirtualHosts tests in library/http rely on Sun/Oracle JVM name
resolution hooks.
The library works at runtime.
Other test failures in library/shiro-core and library/http are related to
cryptographic algorithms hardcoded in tests (SunX509 instead of IbmX509).
It's a no-issue because developers can configure this.
The only worrying failure is in library/eventsourcing.
Check
https://qi4j.ci.cloudbees.com/job/qi4j-sdk.develop.tests.jdk6-ibm/15/testReport/org.qi4j.library.eventsourcing.domain.source.helper/EventRouterTest/testRouter/
It seems that values serialization order is not enforced ... on IBM JDK ...
oO.
Did not investigate this further, still have to. Do you have a clue ?
/Paul
Paul Merlin a écrit :
Niclas Hedhman a écrit :
Paul,
What is that?
It is used by the http library for testing virtualhosts support.
The jvm provide a way to hook into the name resolution. The tests use
this facility and dnsjava to run the tests as if test names were
resolvable in order to trick Jetty.
It's registered in libraries/http/build.gradle:
test {
systemProperties 'networkaddress.cache.ttl': '0'
systemProperties 'sun.net.spi.nameservice.provider.1':
'dns,LocalManagedDns'
}
and using ServiceLoaders, see in
libraries/http/src/test/resources/META-INF/services
Gradle run unit tests in a forked jvm by default since 0.9 so this should
not
disturb the rest of the build.
I get all kinds of funny exceptions during the build. For instance the
one below, where it seems that this class is called from Gradle
somehow.
The stacktrace show a failed name resolution attempt during test report
generation. dnsjava prints it to stderr...
I can't reproduce it, does the build fail ?
The fact that it uses sun.* namespace also worries me. For instance,
the "Get Qi4j SDK to build/run on IBM JDK" might be blocked by this.
About IBM JDK, it supports most of the sun network properties. I don't
have time right now to install/setup it on my laptop and couldn't find
any reliable source about this specific property support but I'm pretty
confident as the IBM JDK is based on the Sun one. Still need to try it
with live bullets.
/Paul
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev