You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ma...@apache.org on 2007/01/25 22:08:55 UTC

svn commit: r499979 - in /incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid: client/message/TestNonQpidTextMessage.java test/unit/message/JMSPropertiesTest.java test/unit/message/MessageConverterTest.java

Author: marnie
Date: Thu Jan 25 13:08:54 2007
New Revision: 499979

URL: http://svn.apache.org/viewvc?view=rev&rev=499979
Log:
QPID-315
Test classes to reproduce problem with missing correlation id on incoming messages from non-Qpid broker

Added:
    incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/message/TestNonQpidTextMessage.java   (with props)
    incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java   (with props)
    incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java   (with props)

Added: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/message/TestNonQpidTextMessage.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/message/TestNonQpidTextMessage.java?view=auto&rev=499979
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/message/TestNonQpidTextMessage.java (added)
+++ incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/message/TestNonQpidTextMessage.java Thu Jan 25 13:08:54 2007
@@ -0,0 +1,231 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.client.message;
+
+import javax.jms.*;
+import java.util.Enumeration;
+import java.io.Serializable;
+
+public class TestNonQpidTextMessage implements ObjectMessage {
+
+    private JMSObjectMessage _realMessage;
+    private String _contentString;
+
+    /**
+     * Allows us to construct a JMS message which
+     * does not inherit from the Qpid message superclasses
+     * and expand our unit testing of MessageConverter et al
+     */
+    public TestNonQpidTextMessage()
+    {
+        _realMessage = new JMSObjectMessage();
+    }
+
+    public String getJMSMessageID() throws JMSException {
+        return _realMessage.getJMSMessageID();
+    }
+
+    public void setJMSMessageID(String string) throws JMSException {
+        _realMessage.setJMSMessageID(string);
+    }
+
+    public long getJMSTimestamp() throws JMSException {
+        return _realMessage.getJMSTimestamp();
+    }
+
+    public void setJMSTimestamp(long l) throws JMSException {
+        _realMessage.setJMSTimestamp(l);
+    }
+
+    public byte[] getJMSCorrelationIDAsBytes() throws JMSException {
+        return _realMessage.getJMSCorrelationIDAsBytes();
+    }
+
+    public void setJMSCorrelationIDAsBytes(byte[] bytes) throws JMSException {
+        _realMessage.setJMSCorrelationIDAsBytes(bytes);
+    }
+
+    public void setJMSCorrelationID(String string) throws JMSException {
+        _realMessage.setJMSCorrelationID(string);
+    }
+
+    public String getJMSCorrelationID() throws JMSException {
+        return _realMessage.getJMSCorrelationID();
+    }
+
+    public Destination getJMSReplyTo() throws JMSException {
+        return _realMessage.getJMSReplyTo();
+    }
+
+    public void setJMSReplyTo(Destination destination) throws JMSException {
+        _realMessage.setJMSReplyTo(destination);
+    }
+
+    public Destination getJMSDestination() throws JMSException {
+        return _realMessage.getJMSDestination();
+    }
+
+    public void setJMSDestination(Destination destination) throws JMSException {
+        _realMessage.setJMSDestination(destination);
+    }
+
+    public int getJMSDeliveryMode() throws JMSException {
+        return _realMessage.getJMSDeliveryMode();
+    }
+
+    public void setJMSDeliveryMode(int i) throws JMSException {
+        _realMessage.setJMSDeliveryMode(i);
+    }
+
+    public boolean getJMSRedelivered() throws JMSException {
+        return _realMessage.getJMSRedelivered();
+    }
+
+    public void setJMSRedelivered(boolean b) throws JMSException {
+        _realMessage.setJMSRedelivered(b);
+    }
+
+    public String getJMSType() throws JMSException {
+        return _realMessage.getJMSType();
+    }
+
+    public void setJMSType(String string) throws JMSException {
+        _realMessage.setJMSType(string);
+    }
+
+    public long getJMSExpiration() throws JMSException {
+        return _realMessage.getJMSExpiration();
+    }
+
+    public void setJMSExpiration(long l) throws JMSException {
+        _realMessage.setJMSExpiration(l);
+    }
+
+    public int getJMSPriority() throws JMSException {
+        return _realMessage.getJMSPriority();
+    }
+
+    public void setJMSPriority(int i) throws JMSException {
+        _realMessage.setJMSPriority(i);
+    }
+
+    public void clearProperties() throws JMSException {
+        _realMessage.clearProperties();
+    }
+
+    public boolean propertyExists(String string) throws JMSException {
+        return _realMessage.propertyExists(string);
+    }
+
+    public boolean getBooleanProperty(String string) throws JMSException {
+        return _realMessage.getBooleanProperty(string);
+    }
+
+    public byte getByteProperty(String string) throws JMSException {
+        return _realMessage.getByteProperty(string);
+    }
+
+    public short getShortProperty(String string) throws JMSException {
+        return _realMessage.getShortProperty(string);
+    }
+
+    public int getIntProperty(String string) throws JMSException {
+        return _realMessage.getIntProperty(string);
+    }
+
+    public long getLongProperty(String string) throws JMSException {
+        return _realMessage.getLongProperty(string);
+    }
+
+    public float getFloatProperty(String string) throws JMSException {
+        return _realMessage.getFloatProperty(string);
+    }
+
+    public double getDoubleProperty(String string) throws JMSException {
+        return _realMessage.getDoubleProperty(string);
+    }
+
+    public String getStringProperty(String string) throws JMSException {
+        return _realMessage.getStringProperty(string);
+    }
+
+    public Object getObjectProperty(String string) throws JMSException {
+        return _realMessage.getObjectProperty(string);
+    }
+
+    public Enumeration getPropertyNames() throws JMSException {
+        return _realMessage.getPropertyNames();
+    }
+
+    public void setBooleanProperty(String string, boolean b) throws JMSException {
+        _realMessage.setBooleanProperty(string,b);
+    }
+
+    public void setByteProperty(String string, byte b) throws JMSException {
+        _realMessage.setByteProperty(string,b);
+    }
+
+    public void setShortProperty(String string, short i) throws JMSException {
+        _realMessage.setShortProperty(string,i);
+    }
+
+    public void setIntProperty(String string, int i) throws JMSException {
+        _realMessage.setIntProperty(string,i);
+    }
+
+    public void setLongProperty(String string, long l) throws JMSException {
+        _realMessage.setLongProperty(string,l);
+    }
+
+    public void setFloatProperty(String string, float v) throws JMSException {
+        _realMessage.setFloatProperty(string,v);
+    }
+
+    public void setDoubleProperty(String string, double v) throws JMSException {
+        _realMessage.setDoubleProperty(string,v);
+    }
+
+    public void setStringProperty(String string, String string1) throws JMSException {
+        _realMessage.setStringProperty(string,string1);
+    }
+
+    public void setObjectProperty(String string, Object object) throws JMSException {
+        _realMessage.setObjectProperty(string,object);
+    }
+
+    public void acknowledge() throws JMSException {
+        _realMessage.acknowledge();
+    }
+
+    public void clearBody() throws JMSException {
+        _realMessage.clearBody();
+    }
+
+    public void setObject(Serializable serializable) throws JMSException {
+        if (serializable instanceof String)
+        {
+            _contentString = (String)serializable;
+        }
+    }
+
+    public Serializable getObject() throws JMSException {
+        return _contentString;      }
+}

Propchange: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/message/TestNonQpidTextMessage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java?view=auto&rev=499979
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java (added)
+++ incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java Thu Jan 25 13:08:54 2007
@@ -0,0 +1,100 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.test.unit.message;
+
+import junit.framework.TestCase;
+import org.apache.log4j.Logger;
+import org.apache.qpid.client.transport.TransportConnection;
+import org.apache.qpid.client.AMQConnection;
+import org.apache.qpid.client.AMQSession;
+import org.apache.qpid.client.AMQQueue;
+import org.apache.qpid.client.message.TestNonQpidTextMessage;
+import org.apache.qpid.framing.AMQShortString;
+
+import javax.jms.*;
+
+/**
+ * @author Apache Software Foundation
+ */
+public class JMSPropertiesTest extends TestCase
+{
+
+    private static final Logger _logger = Logger.getLogger(JMSPropertiesTest.class);
+
+    public String _connectionString = "vm://:1";
+
+    public static final String JMS_CORR_ID = "QPIDID_01";
+    public static final int JMS_DELIV_MODE = 1;
+    public static final String JMS_TYPE = "test.jms.type";
+    public static final Destination JMS_REPLY_TO = new AMQQueue("my.replyto");
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        TransportConnection.createVMBroker(1);
+    }
+
+
+    protected void tearDown() throws Exception
+    {
+        super.tearDown();
+        TransportConnection.killAllVMBrokers();
+    }
+
+    public void testJMSProperties() throws Exception
+    {
+        Connection con = new AMQConnection("vm://:1", "guest", "guest", "consumer1", "test");
+        AMQSession consumerSession = (AMQSession) con.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+        Queue queue = new AMQQueue(new AMQShortString("someQ"), new AMQShortString("someQ"), false, true);
+        MessageConsumer consumer = consumerSession.createConsumer(queue);
+
+        Connection con2 = new AMQConnection("vm://:1", "guest", "guest", "producer1", "test");
+        Session producerSession = con2.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+        MessageProducer producer = producerSession.createProducer(queue);
+
+        //create a test message to send
+        ObjectMessage sentMsg = new TestNonQpidTextMessage();
+        sentMsg.setJMSCorrelationID(JMS_CORR_ID);
+        sentMsg.setJMSDeliveryMode(JMS_DELIV_MODE);
+        sentMsg.setJMSType(JMS_TYPE);
+        sentMsg.setJMSReplyTo(JMS_REPLY_TO);
+
+        //send it
+        producer.send(sentMsg);
+
+        con2.close();
+
+        con.start();
+
+        //get message and check JMS properties
+        ObjectMessage rm = (ObjectMessage) consumer.receive();
+        assertNotNull(rm);
+
+        assertEquals("JMS Correlation ID mismatch",sentMsg.getJMSCorrelationID(),rm.getJMSCorrelationID());
+        //TODO: Commented out as always overwritten by send delivery mode value - prob should not set in conversion
+        //assertEquals("JMS Delivery Mode mismatch",sentMsg.getJMSDeliveryMode(),rm.getJMSDeliveryMode());
+        assertEquals("JMS Type mismatch",sentMsg.getJMSType(),rm.getJMSType());
+        assertEquals("JMS Reply To mismatch",sentMsg.getJMSReplyTo(),rm.getJMSReplyTo());
+
+        con.close();
+    }
+
+}

Propchange: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java?view=auto&rev=499979
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java (added)
+++ incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java Thu Jan 25 13:08:54 2007
@@ -0,0 +1,109 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.test.unit.message;
+
+import junit.framework.TestCase;
+import org.apache.qpid.client.message.MessageConverter;
+import org.apache.qpid.client.message.JMSTextMessage;
+import org.apache.qpid.client.message.AbstractJMSMessage;
+import org.apache.qpid.client.message.JMSMapMessage;
+import org.apache.qpid.client.AMQQueue;
+
+import javax.jms.Message;
+import javax.jms.Destination;
+import javax.jms.TextMessage;
+import javax.jms.MapMessage;
+import java.util.HashMap;
+
+
+public class MessageConverterTest extends TestCase {
+
+    public static final String JMS_CORR_ID = "QPIDID_01";
+    public static final int JMS_DELIV_MODE = 1;
+    public static final String JMS_TYPE = "test.jms.type";
+    public static final Destination JMS_REPLY_TO = new AMQQueue("my.replyto");
+
+    protected JMSTextMessage testTextMessage;
+
+    protected JMSMapMessage testMapMessage;
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        testTextMessage = new JMSTextMessage();
+
+        //Add JMSProperties
+        testTextMessage.setJMSCorrelationID(JMS_CORR_ID);
+        testTextMessage.setJMSDeliveryMode(JMS_DELIV_MODE);
+        testTextMessage.setJMSType(JMS_TYPE);
+        testTextMessage.setJMSReplyTo(JMS_REPLY_TO);
+        testTextMessage.setText("testTextMessage text");
+
+        //Add non-JMS properties
+        testTextMessage.setStringProperty("testProp1","testValue1");
+        testTextMessage.setDoubleProperty("testProp2",Double.MIN_VALUE);
+
+        testMapMessage = new JMSMapMessage();
+        testMapMessage.setString("testMapString","testMapStringValue");
+        testMapMessage.setDouble("testMapDouble",Double.MAX_VALUE);
+    }
+
+    public void testSetProperties() throws Exception
+    {
+        AbstractJMSMessage newMessage = new MessageConverter((TextMessage)testTextMessage).getConvertedMessage();
+
+        //check JMS prop values on newMessage match
+        assertEquals("JMS Correlation ID mismatch",testTextMessage.getJMSCorrelationID(),newMessage.getJMSCorrelationID());
+        assertEquals("JMS Delivery mode mismatch",testTextMessage.getJMSDeliveryMode(),newMessage.getJMSDeliveryMode());
+        assertEquals("JMS Type mismatch",testTextMessage.getJMSType(),newMessage.getJMSType());
+        assertEquals("JMS Reply To mismatch",testTextMessage.getJMSReplyTo(),newMessage.getJMSReplyTo());
+
+        //check non-JMS standard props ok too
+        assertEquals("Test String prop value mismatch",testTextMessage.getStringProperty("testProp1"),
+                    newMessage.getStringProperty("testProp1"));
+        assertEquals("Test Double prop value mismatch",testTextMessage.getDoubleProperty("testProp2"),
+                    newMessage.getDoubleProperty("testProp2"));
+    }
+
+    public void testJMSTextMessageConversion() throws Exception
+    {
+        AbstractJMSMessage newMessage = new MessageConverter((TextMessage)testTextMessage).getConvertedMessage();
+        assertEquals("Converted message text mismatch",((JMSTextMessage)newMessage).getText(),testTextMessage.getText());
+    }
+
+    public void testJMSMapMessageConversion() throws Exception
+    {
+        AbstractJMSMessage newMessage = new MessageConverter((MapMessage)testMapMessage).getConvertedMessage();
+        assertEquals("Converted map message String mismatch",((JMSMapMessage)newMessage).getString("testMapString"),
+                    testMapMessage.getString("testMapString"));
+        assertEquals("Converted map message Double mismatch",((JMSMapMessage)newMessage).getDouble("testMapDouble"),
+                    testMapMessage.getDouble("testMapDouble"));
+
+    }
+
+    protected void tearDown() throws Exception
+    {
+        super.tearDown();
+        testTextMessage = null;
+    }
+
+
+}

Propchange: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native