On 27 February 2013 23:28, Alan Conway <acon...@redhat.com> wrote: > On Wed, 2013-02-27 at 11:19 +0000, Phil Harvey wrote: >> Hi, >> >> I notice that proton-jni on Jenkins is failing [1] , probably due to the >> recent PROTON-215 commits. >> >> The failing test is: >> proton_tests.interop.InteropTest.test_message<https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-proton-jni/org.apache.qpid$tests/35/testReport/junit/proton_tests.interop/InteropTest/test_message/> >> >> Is someone already looking into this? > > Regarding: > https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-proton-jni/org.apache.qpid$tests/37/ > > I need some help with the JNI code to figure this out. > > I can't reproduce the problem on my fedora box. Can we get information > about the jenkins build system, e.g. version of Java and Python > involved? > > Here's a summary of what I think happens, this is running the > interop.py tests in Jython: > > m = proton.Message() > d = Proton.Data() > m.decode("an amqp message read from a file.") > d.decode(body) > <BANG> > > We blow up with: TypeError: wrap(): 1st arg can't be coerced to byte[] > > This is in python class proton.Data > > def decode(self, encoded): > return self._data.decode(ByteBuffer.wrap(encoded)) > > So it appears that a python Message.body is somehow set to something > that cannot be coerced to byte[]. So I look at JNIMessage.getBody() and > I see it returns a Section. A Section is an empty interface. Huh?? > > Can someone explain the relationship between a JNI python message body > and this Section interface, and how it is supposed to be converted? > > Cheers, > Alan.
So, the Java API more closely matches the AMQP spec than the C API here... An AMQP Message consists of a number of sections. The body may be a Data section, an AmqpValue section or an AmqpSequence section. So in the Java API getBody() returns a Section object that may be one of these three types. -- Rob > >