qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jiri Daněk (JIRA) <j...@apache.org>
Subject [jira] [Commented] (QPIDJMS-325) reading from empty buffer of a BytesMessage should return 0, not -1
Date Wed, 20 Sep 2017 14:19:00 GMT

    [ https://issues.apache.org/jira/browse/QPIDJMS-325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16173231#comment-16173231
] 

Jiri Daněk commented on QPIDJMS-325:
------------------------------------

Regarding consistency, the {{BytesMessage}} from {{org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory}}
behaves the same way qpid-jms does (and so does their StreamMessage). I am not sure which
would be the more consistent choice.

> reading from empty buffer of a BytesMessage should return 0, not -1
> -------------------------------------------------------------------
>
>                 Key: QPIDJMS-325
>                 URL: https://issues.apache.org/jira/browse/QPIDJMS-325
>             Project: Qpid JMS
>          Issue Type: Bug
>          Components: qpid-jms-client
>    Affects Versions: 0.25.0
>            Reporter: Jiri Daněk
>            Priority: Trivial
>
> Consider the following test. According to http://docs.oracle.com/javaee/7/api/javax/jms/BytesMessage.html#readBytes-byte:A-
the #readBytes method should return 0 when it is first called, as the number of bytes in the
buffer is 0 and it read 0 bytes. Only on subsequent calls it should return -1. What happens
now is that the method returns -1 the first time.
> See the commented lines to try the same thing with ActiveMQ JMS Client library, and with
StreamMessage instead of BytesMessage. The behavior there should be the same.
> ActiveMQ passes the test with BytesMessage and fails it with StreamMessage. Qpid JMS
fails with BytesMessage and passes with StreamMessage.
> {code}
> import org.apache.activemq.ActiveMQConnectionFactory;
> import org.apache.qpid.jms.JmsConnectionFactory;
> import org.junit.Test;
> import javax.jms.*;
> import static com.google.common.truth.Truth.assertThat;
> public class EmptyBufferInputTest {
>     @Test
>     public void testEmptyBufferInput() throws JMSException {
> //        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
>         JmsConnectionFactory connectionFactory = new JmsConnectionFactory("amqp://127.0.0.1:5672");
>         Connection connection = connectionFactory.createConnection();
>         Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
>         final byte[] BYTE_LIST = {1, 2, 4};
> //        StreamMessage message = session.createStreamMessage();
>         BytesMessage message = session.createBytesMessage();
>         message.clearBody();
>         byte[] readList = new byte[BYTE_LIST.length - 1];
>         byte[] emptyList = {};
>         message.writeBytes(emptyList);
>         message.reset();
>         final int IS_EMPTY = 0;
>         assertThat(message.readBytes(readList)).isEqualTo(IS_EMPTY);
>     }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message