You are viewing a plain text version of this content. The canonical link for it is here.
Posted to proton@qpid.apache.org by Rob Godfrey <ro...@gmail.com> on 2013/02/28 00:26:41 UTC

Re: Need help Re: jenkins interop test failing due to PROTON-215 commits?

On 27 February 2013 23:28, Alan Conway <ac...@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

>
>