OK.

I've modified JNIMessenger to throw ProtonUnsupportedOperationException so
testSendBogus skips rather than fails when using the proton-jni profile.  I
believe there is still an issue with the pure Java implementation too
because this test fails on my dev machine (though not on the Apache Jenkins
job), therefore I'm leaving PROTON-214 open for now.

I'm easy about whether we mention this stuff in the release notes.  Since
PROTON-214 is still open, maybe the existence of that Jira is enough to
flag this deficiency.


On 21 February 2013 21:42, Rafael Schloming <r...@alum.mit.edu> wrote:

> On Thu, Feb 21, 2013 at 10:53 AM, Rafael Schloming <r...@alum.mit.edu>
> wrote:
>
> > On Wed, Feb 20, 2013 at 2:43 PM, Phil Harvey <p...@philharveyonline.com
> >wrote:
> >
> >> Mostly looks good.  One test is failing when run using the Java JNI
> >> binding
> >> - see below.
> >>
> >> Tested:
> >>
> >> - Download tarball
> >> - cmake, make, make install
> >>   - Observed .so and .jar files installed to correct locations
> >> - Ran ./tests/python/proton-test
> >> - Ran mvn package test and observed all tests passing
> >> - Ran mvn -P proton-jni test
> >>   - *FAILED* test "proton_tests.messenger.MessengerTest.testSendBogus".
>  I
> >> think this is existing issue PROTON-214 [1].  I don't know if this
> >> represents a serious functional problem but generally we wouldn't want
> to
> >> release something that fails any tests.
> >>
> >
> > I looked into this a little bit. The test is checking that using
> messenger
> > to send to an address that contains an unresolvable domain name will
> > actually fail. This appears to work fine with pure Java messenger, fine
> > with pure C messenger, but for some reason doesn't work with Java using C
> > via JNI. This is a bit of a mystery to me as I believe the networking
> code
> > is exactly the same in both cases. This needs a bit more investigation to
> > figure out what is going on, but given how isolated this is I'd prefer
> not
> > to hold up the release if we don't turn up anything fruitful soon.
> >
>
> Ok, mystery solved. My assumption was that the profile was running the Java
> messenger with a JNI wrapped engine. It's actually JNI wrapped the entire C
> messenger impl and JNIMessenger.java doesn't actually check any return
> codes, e.g.:
>
>     @Override
>     public void put(final Message message) throws MessengerException
>     {
>         SWIGTYPE_p_pn_message_t message_t = (message instanceof JNIMessage)
> ? ((JNIMessage)message).getImpl() : convertMessage(message);
>         int err = Proton.pn_messenger_put(_impl, message_t);
>         //TODO - error handling
>     }
>
> As this isn't really fixable in an 0.4 timeframe, I think we should just
> release note this issue.
>
> --Rafael
>

Reply via email to