harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Grigorovich" <alex.grigorov...@gmail.com>
Subject [general][qa] Tried to use harmony on a small in-house project; issues follow
Date Mon, 21 May 2007 09:20:36 GMT

I thought you may be interested: here's a recollection of problems I
have encountered while trying to use Harmony for a small project at

First, jmock-based unit tests fail when run under Harmony's JVM.
Compiler doesn't seem to matter: both sun's and harmony's work. I have
attached a sample program which reproduces the following error:

unexpected invocation: foo.frob()
  expected exactly 1 time, already invoked 0 times: foo.frob();
returns a default value
        at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDispatcher.java:54)
        at org.jmock.Mockery.dispatch(Mockery.java:194)
        at org.jmock.Mockery.access$000(Mockery.java:34)
        at org.jmock.Mockery$MockObject.invoke(Mockery.java:221)
        at org.jmock.internal.InvocationDiverter.invoke(InvocationDiverter.java:27)
        at org.jmock.internal.ProxiedObjectIdentity.invoke(ProxiedObjectIdentity.java:33)
        at org.jmock.lib.JavaReflectionImposteriser$1.invoke(JavaReflectionImposteriser.java:34)
        at $Proxy0.frob(Unknown Source)
        at SimpleMock.main(SimpleMock.java:21)

Second, our java.nio-based network code which works on Sun's JVM
throws a SockectExcepion on innocent-looking code:
        at org.apache.harmony.luni.platform.OSNetworkSystem.select(OSNetworkSystem.java:312)
        at org.apache.harmony.nio.internal.SelectorImpl.selectInternal(SelectorImpl.java)
        at org.apache.harmony.nio.internal.SelectorImpl.select(SelectorImpl.java:167)
        at com.shamrock.smf.niosmpp.net.SelectorHandler.run(SelectorHandler.java:156)

These exceptions don't seem to affect the application though. They
seem to happen after setting OP_WRITE on each interesting selection
key. Relevant portion of source code looks like this (unfortunately I
cannot provide a short runnable example):

       while (true) {
            try {
                /* register new channels etc. */
                synchronized(this.writableKeys) {
                    /* for each key in writableKeys */
                    if (key.isValid()) {
                        key.interestOps(key.interestOps() |
                Set set = selector.selectedKeys();
                /* process selected keys */

However, the problem might as well be in buggy application code. Any
ideas on how to debug this?

Third, VM hard-codes default character set to iso-8859-1 instead of
using process' locale settings. Every UTF-8 user then has to manually
set file.encoding system property, or otherwise get garbage on console
when output does not fit in ASCII.

Lastly, is there a native javac adapter for ant? One can use
build.compiler=extJavac or write a custom CompilerAdapter, but a
drop-in replacement for Sun's javac would be nice. Google even finds
an implementation of com.sun.tools.javac.Main in harmony's subversion
repo, but it seems to have been removed later (for trademark

Harmony & OS details:

$ java -version
Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
Foundation or its licensors, as applicable.
java version "1.5.0"
pre-alpha : not complete or compatible
svn = r533500, (Apr 30 2007), Linux/ia32/gcc 4.1.0, release build

OS: Debian linux 4.0, kernel: 2.6.18-4-686 #1 SMP, libc-2.3.6

Thank you.

Alexey Grigorovich

View raw message