You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2017/08/28 16:04:39 UTC

qpid-broker-j git commit: QPID-7896: [Java System Tests] Add more conversion tests

Repository: qpid-broker-j
Updated Branches:
  refs/heads/master dbaff6090 -> d3ca1343b


QPID-7896: [Java System Tests] Add more conversion tests


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/d3ca1343
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/d3ca1343
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/d3ca1343

Branch: refs/heads/master
Commit: d3ca1343bf95408e23a9563efc98f31121ea3815
Parents: dbaff60
Author: Lorenz Quack <lq...@apache.org>
Authored: Mon Aug 28 16:17:41 2017 +0100
Committer: Lorenz Quack <lq...@apache.org>
Committed: Mon Aug 28 16:17:41 2017 +0100

----------------------------------------------------------------------
 .../ClientInstructionBuilder.java               |   9 +-
 .../end_to_end_conversion/client/Client.java    | 127 ++++++++-------
 .../client/MessageCreator.java                  |   2 +-
 .../client/MessageVerifier.java                 |  86 ++++++++--
 .../client/MessagingInstruction.java            |  12 ++
 .../client/SerializableTestClass.java           |  79 ++++++++++
 .../SimpleConversionTest.java                   | 155 +++++++++++++++----
 7 files changed, 367 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d3ca1343/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/ClientInstructionBuilder.java
----------------------------------------------------------------------
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/ClientInstructionBuilder.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/ClientInstructionBuilder.java
index 7c50832..3559693 100644
--- a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/ClientInstructionBuilder.java
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/ClientInstructionBuilder.java
@@ -22,7 +22,6 @@ package org.apache.qpid.systests.end_to_end_conversion;
 
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -96,6 +95,14 @@ public class ClientInstructionBuilder
         return this;
     }
 
+    public ClientInstructionBuilder withConsumeReplyToJndiName(final String consumeReplyToJndiName)
+    {
+        MessagingInstruction.PublishMessage publishMessageInstruction =
+                (MessagingInstruction.PublishMessage) _clientInstructions.get(_clientInstructions.size() - 1);
+        publishMessageInstruction.setConsumeReplyToJndiName(consumeReplyToJndiName);
+        return this;
+    }
+
     public List<ClientInstruction> build()
     {
         return _clientInstructions;

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d3ca1343/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java
----------------------------------------------------------------------
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java
index fe875f1..b6ad152 100644
--- a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/Client.java
@@ -167,10 +167,7 @@ public class Client
                 {
                     final MessagingInstruction.PublishMessage publishInstruction =
                             (MessagingInstruction.PublishMessage) instruction;
-                    final Destination destination =
-                            (Destination) context.lookup(publishInstruction.getDestinationJndiName());
-                    final MessageDescription messageDescription = publishInstruction.getMessageDescription();
-                    publishMessage(context, session, destination, messageDescription);
+                    publishMessage(context, session, publishInstruction);
                 }
                 else if (instruction instanceof MessagingInstruction.ReceiveMessage)
                 {
@@ -203,8 +200,8 @@ public class Client
         try
         {
             message = consumer.receive(RECEIVE_TIMEOUT);
-            MessageVerifier.verifyMessage(messageDescription, message);
             System.out.println(String.format("Received message: %s", message));
+            MessageVerifier.verifyMessage(messageDescription, message);
         }
         finally
         {
@@ -222,81 +219,97 @@ public class Client
 
     private void publishMessage(final Context context,
                                 final Session session,
-                                final Destination queue,
-                                final MessageDescription messageDescription) throws Exception
+                                final MessagingInstruction.PublishMessage publishMessageInstruction) throws Exception
     {
+        final MessageDescription messageDescription = publishMessageInstruction.getMessageDescription();
+
         Message message = MessageCreator.fromMessageDescription(session, messageDescription);
-        Destination replyToDestination = null;
-        if (messageDescription.getReplyToJndiName() != null)
+        MessageConsumer replyToConsumer = null;
+        try
         {
-            final String replyToJndiName = messageDescription.getReplyToJndiName();
-            if (replyToJndiName.equals(EndToEndConversionTestBase.TEMPORARY_QUEUE_JNDI_NAME))
+            if (messageDescription.getReplyToJndiName() != null)
             {
-                replyToDestination = session.createTemporaryQueue();
+                final Destination replyToDestination, consumerReplyToDestination;
+                final String replyToJndiName = messageDescription.getReplyToJndiName();
+                if (replyToJndiName.equals(EndToEndConversionTestBase.TEMPORARY_QUEUE_JNDI_NAME))
+                {
+                    replyToDestination = session.createTemporaryQueue();
+                }
+                else
+                {
+                    replyToDestination = (Destination) context.lookup(replyToJndiName);
+                }
+
+                if (publishMessageInstruction.getConsumeReplyToJndiName() != null)
+                {
+                    consumerReplyToDestination =
+                            (Destination) context.lookup(publishMessageInstruction.getConsumeReplyToJndiName());
+                }
+                else
+                {
+                    consumerReplyToDestination = replyToDestination;
+                }
+
+                message.setJMSReplyTo(replyToDestination);
+                replyToConsumer = session.createConsumer(consumerReplyToDestination);
             }
-            else
+
+            final Destination destination =
+                    (Destination) context.lookup(publishMessageInstruction.getDestinationJndiName());
+            MessageProducer messageProducer = session.createProducer(destination);
+            try
             {
-                replyToDestination = (Destination) context.lookup(replyToJndiName);
+                messageProducer.send(message,
+                                     messageDescription.getHeader(MessageDescription.MessageHeader.DELIVERY_MODE,
+                                                                  DeliveryMode.NON_PERSISTENT),
+                                     messageDescription.getHeader(MessageDescription.MessageHeader.PRIORITY,
+                                                                  Message.DEFAULT_PRIORITY),
+                                     messageDescription.getHeader(MessageDescription.MessageHeader.EXPIRATION,
+                                                                  Message.DEFAULT_TIME_TO_LIVE));
+                System.out.println(String.format("Sent message: %s", message));
+            }
+            finally
+            {
+                messageProducer.close();
+            }
+
+            if (replyToConsumer != null)
+            {
+                receiveReply(replyToConsumer,
+                             messageDescription.getHeader(MessageDescription.MessageHeader.CORRELATION_ID));
             }
-            message.setJMSReplyTo(replyToDestination);
-        }
-        MessageProducer messageProducer = session.createProducer(queue);
-        try
-        {
-            messageProducer.send(message,
-                                 messageDescription.getHeader(MessageDescription.MessageHeader.DELIVERY_MODE,
-                                                              DeliveryMode.NON_PERSISTENT),
-                                 messageDescription.getHeader(MessageDescription.MessageHeader.PRIORITY,
-                                                              Message.DEFAULT_PRIORITY),
-                                 messageDescription.getHeader(MessageDescription.MessageHeader.EXPIRATION,
-                                                              Message.DEFAULT_TIME_TO_LIVE));
-            System.out.println(String.format("Sent message: %s", message));
         }
         finally
         {
-            messageProducer.close();
-        }
-
-        if (replyToDestination != null)
-        {
-            receiveReply(session,
-                         replyToDestination,
-                         messageDescription.getHeader(MessageDescription.MessageHeader.CORRELATION_ID));
+            if (replyToConsumer != null)
+            {
+                replyToConsumer.close();
+            }
         }
     }
 
-    private void receiveReply(final Session session,
-                              final Destination jmsReplyTo,
-                              final Serializable expectedCorrelationId)
+    private void receiveReply(final MessageConsumer consumer, final Serializable expectedCorrelationId)
             throws Exception
     {
-        final MessageConsumer consumer = session.createConsumer(jmsReplyTo);
-        try
+        final Message message = consumer.receive(RECEIVE_TIMEOUT);
+        System.out.println(String.format("Received message: %s", message));
+        if (expectedCorrelationId != null)
         {
-            final Message message = consumer.receive(RECEIVE_TIMEOUT);
-            System.out.println(String.format("Received message: %s", message));
-            if (expectedCorrelationId != null)
+            if (expectedCorrelationId instanceof byte[])
             {
-                if (expectedCorrelationId instanceof byte[])
+                if (!Arrays.equals((byte[]) expectedCorrelationId, message.getJMSCorrelationIDAsBytes()))
                 {
-                    if (!Arrays.equals((byte[]) expectedCorrelationId, message.getJMSCorrelationIDAsBytes()))
-                    {
-                        throw new VerificationException("ReplyTo message has unexpected correlationId.");
-                    }
+                    throw new VerificationException("ReplyTo message has unexpected correlationId.");
                 }
-                else
+            }
+            else
+            {
+                if (!expectedCorrelationId.equals(message.getJMSCorrelationID()))
                 {
-                    if (!expectedCorrelationId.equals(message.getJMSCorrelationID()))
-                    {
-                        throw new VerificationException("ReplyTo message has unexpected correlationId.");
-                    }
+                    throw new VerificationException("ReplyTo message has unexpected correlationId.");
                 }
             }
         }
-        finally
-        {
-            consumer.close();
-        }
     }
 
     private void sendReply(final Session session, final Destination jmsReplyTo, final Serializable correlationId)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d3ca1343/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageCreator.java
----------------------------------------------------------------------
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageCreator.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageCreator.java
index 8028c33..6414c27 100644
--- a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageCreator.java
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageCreator.java
@@ -64,7 +64,7 @@ public class MessageCreator
             {
                 throw new RuntimeException(String.format("Could not set message property '%s' to this value: %s",
                                                          entry.getKey(),
-                                                         entry.getValue().toString()), e);
+                                                         String.valueOf(entry.getValue())), e);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d3ca1343/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
----------------------------------------------------------------------
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
index 079c893..45f4abc 100644
--- a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessageVerifier.java
@@ -23,9 +23,11 @@ package org.apache.qpid.systests.end_to_end_conversion.client;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -220,26 +222,21 @@ public class MessageVerifier
                                             final T expectedValue,
                                             final S actualValue)
     {
-        final String failureTemplate = "%s: expected <%s>, actual <%s>";
-        final String typeFailureTemplate = "%s: expected type <%s>, actual type <%s>";
-        final String arraySizeFailureTemplate = "%s: expected array of length <%d>, actual length <%d> ('%s' vs '%s')";
-        final String arrayFailureTemplate = "%s: arrays do not match ('%s' vs '%s')";
-        final String subclassFailureTemplate = "%s: expected subclass of <%s>, actual <%s>";
         if (expectedValue == null && actualValue == null)
         {
             return;
         }
         else if (expectedValue == null && actualValue != null)
         {
-            throw new VerificationException(String.format(failureTemplate, failureMessage, null, actualValue));
+            throw new VerificationException(String.format("%s: expected <%s>, actual <%s>", failureMessage, null, actualValue));
         }
         else if (expectedValue != null && actualValue == null)
         {
-            throw new VerificationException(String.format(failureTemplate, failureMessage, expectedValue, null));
+            throw new VerificationException(String.format("%s: expected <%s>, actual <%s>", failureMessage, expectedValue, null));
         }
         else if (expectedValue.getClass() != actualValue.getClass())
         {
-            throw new VerificationException(String.format(typeFailureTemplate,
+            throw new VerificationException(String.format("%s: expected type <%s>, actual type <%s>",
                                                           failureMessage,
                                                           expectedValue.getClass(),
                                                           actualValue.getClass()));
@@ -250,7 +247,7 @@ public class MessageVerifier
             {
                 if (!((Class<?>) expectedValue).isAssignableFrom(((Class<?>) actualValue)))
                 {
-                    throw new VerificationException(String.format(subclassFailureTemplate,
+                    throw new VerificationException(String.format("%s: expected subclass of <%s>, actual <%s>",
                                                                   failureMessage,
                                                                   ((Class<?>) expectedValue).getName(),
                                                                   ((Class<?>) actualValue).getName()));
@@ -272,26 +269,81 @@ public class MessageVerifier
                 }
                 if (expectedValueAsBytes.length != actualValueAsBytes.length)
                 {
-                    throw new VerificationException(String.format(arraySizeFailureTemplate,
-                                                                  failureMessage,
-                                                                  expectedValueAsBytes.length,
-                                                                  actualValueAsBytes.length,
-                                                                  expectedValueAsString,
-                                                                  actualValueAsString));
+                    throw new VerificationException(String.format(
+                            "%s: expected array of length <%d>, actual length <%d> ('%s' vs '%s')",
+                            failureMessage,
+                            expectedValueAsBytes.length,
+                            actualValueAsBytes.length,
+                            expectedValueAsString,
+                            actualValueAsString));
                 }
                 if (!Arrays.equals(expectedValueAsBytes, actualValueAsBytes))
                 {
-                    throw new VerificationException(String.format(arrayFailureTemplate,
+                    throw new VerificationException(String.format("%s: arrays do not match ('%s' vs '%s')",
                                                                   failureMessage,
                                                                   expectedValueAsString,
                                                                   actualValueAsString));
                 }
             }
+            else if (expectedValue instanceof Map)
+            {
+                if (!(actualValue instanceof Map))
+                {
+                    throw new VerificationException(String.format("%s: expected type <Map>, actual <%s>",
+                                                                  failureMessage,
+                                                                  actualValue.getClass()));
+                }
+                Map<String, Object> actualValueAsMap = (Map<String, Object>) actualValue;
+                for (Map.Entry<String, Object> entry : ((Map<String, Object>) expectedValue).entrySet())
+                {
+                    if (!actualValueAsMap.containsKey(entry.getKey()))
+                    {
+                        throw new VerificationException(String.format("%s: Map does not contain expected key <%s>",
+                                                                      failureMessage,
+                                                                      entry.getKey()));
+                    }
+                    else
+                    {
+                        verifyEquals(String.format("%s: MapVerification for key '%s' failed",
+                                                   failureMessage,
+                                                   entry.getKey()),
+                                     entry.getValue(),
+                                     actualValueAsMap.get(entry.getKey()));
+                    }
+                }
+            }
+            else if (expectedValue instanceof Collection)
+            {
+                if (!(actualValue instanceof Collection))
+                {
+                    throw new VerificationException(String.format("%s: expected type <Collection>, actual type <%s>",
+                                                                  failureMessage,
+                                                                  actualValue.getClass()));
+                }
+                Collection<Object> actualValueAsCollection = (Collection<Object>) actualValue;
+                final Collection expectedValueAsCollection = (Collection) expectedValue;
+                if (expectedValueAsCollection.size() != actualValueAsCollection.size())
+                {
+                    throw new VerificationException(String.format("%s: expected Collection of size <%s>, actual size <%s>",
+                                                                  failureMessage,
+                                                                  expectedValueAsCollection.size(),
+                                                                  actualValueAsCollection.size()));
+                }
+                final Iterator<Object> actualValueIterator = actualValueAsCollection.iterator();
+                int index = 0;
+                for (Object entry : expectedValueAsCollection)
+                {
+                    verifyEquals(String.format("%s: CollectionVerification for index %d failed", failureMessage, index),
+                                 entry,
+                                 actualValueIterator.next());
+                    index++;
+                }
+            }
             else
             {
                 if (!expectedValue.equals(actualValue))
                 {
-                    throw new VerificationException(String.format(failureTemplate,
+                    throw new VerificationException(String.format("%s: expected <%s>, actual <%s>",
                                                                   failureMessage,
                                                                   expectedValue,
                                                                   actualValue));

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d3ca1343/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessagingInstruction.java
----------------------------------------------------------------------
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessagingInstruction.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessagingInstruction.java
index 2cd555e..4083dd7 100644
--- a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessagingInstruction.java
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/MessagingInstruction.java
@@ -52,10 +52,22 @@ public abstract class MessagingInstruction implements ClientInstruction
 
     public static class PublishMessage extends MessagingInstruction
     {
+        private String _consumeReplyToJndiName;
+
         public PublishMessage(final String destinationJndiName, final MessageDescription messageDescription)
         {
             super(destinationJndiName, messageDescription);
         }
+
+        public String getConsumeReplyToJndiName()
+        {
+            return _consumeReplyToJndiName;
+        }
+
+        public void setConsumeReplyToJndiName(final String consumeReplyToJndiName)
+        {
+            _consumeReplyToJndiName = consumeReplyToJndiName;
+        }
     }
 
     public static class ReceiveMessage extends MessagingInstruction

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d3ca1343/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/SerializableTestClass.java
----------------------------------------------------------------------
diff --git a/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/SerializableTestClass.java b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/SerializableTestClass.java
new file mode 100644
index 0000000..8c7fa65
--- /dev/null
+++ b/systests/end-to-end-conversion-tests/src/main/java/org/apache/qpid/systests/end_to_end_conversion/client/SerializableTestClass.java
@@ -0,0 +1,79 @@
+/*
+ * 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.systests.end_to_end_conversion.client;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class SerializableTestClass implements Serializable
+{
+    private final HashMap<String, String> _mapField;
+    private final ArrayList<Integer> _listField;
+
+    public SerializableTestClass(final Map<String, String> map,
+                                 final List<Integer> list)
+    {
+        _mapField = new HashMap<>(map);
+        _listField = new ArrayList<>(list);
+    }
+
+    public HashMap<String, String> getMapField()
+    {
+        return _mapField;
+    }
+
+    public ArrayList<Integer> getListField()
+    {
+        return _listField;
+    }
+
+    @Override
+    public boolean equals(final Object o)
+    {
+        if (this == o)
+        {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass())
+        {
+            return false;
+        }
+
+        final SerializableTestClass that = (SerializableTestClass) o;
+
+        if (_mapField != null ? !_mapField.equals(that._mapField) : that._mapField != null)
+        {
+            return false;
+        }
+        return _listField != null ? _listField.equals(that._listField) : that._listField == null;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int result = _mapField != null ? _mapField.hashCode() : 0;
+        result = 31 * result + (_listField != null ? _listField.hashCode() : 0);
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/d3ca1343/systests/end-to-end-conversion-tests/src/test/java/org/apache/qpid/systests/end_to_end_conversion/SimpleConversionTest.java
----------------------------------------------------------------------
diff --git a/systests/end-to-end-conversion-tests/src/test/java/org/apache/qpid/systests/end_to_end_conversion/SimpleConversionTest.java b/systests/end-to-end-conversion-tests/src/test/java/org/apache/qpid/systests/end_to_end_conversion/SimpleConversionTest.java
index 4a562d6..c53d4a3 100644
--- a/systests/end-to-end-conversion-tests/src/test/java/org/apache/qpid/systests/end_to_end_conversion/SimpleConversionTest.java
+++ b/systests/end-to-end-conversion-tests/src/test/java/org/apache/qpid/systests/end_to_end_conversion/SimpleConversionTest.java
@@ -20,14 +20,17 @@
 
 package org.apache.qpid.systests.end_to_end_conversion;
 
+import static org.junit.Assume.assumeFalse;
 import static org.junit.Assume.assumeTrue;
 
+import java.util.Collections;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 
+import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.junit.Before;
@@ -36,18 +39,14 @@ import org.junit.Test;
 import org.apache.qpid.server.model.Protocol;
 import org.apache.qpid.systests.end_to_end_conversion.client.ClientInstruction;
 import org.apache.qpid.systests.end_to_end_conversion.client.MessageDescription;
+import org.apache.qpid.systests.end_to_end_conversion.client.SerializableTestClass;
 import org.apache.qpid.systests.end_to_end_conversion.client.VerificationException;
 
 public class SimpleConversionTest extends EndToEndConversionTestBase
 {
     private static final long TEST_TIMEOUT = 30000L;
-    public static final String QUEUE_NAME = "testQueue";
-    public static final String REPLY_QUEUE_NAME = "testReplyQueue";
+    private static final String QUEUE_NAME = "testQueue";
     private static final String QUEUE_JNDI_NAME = "queue";
-    private static final String REPLY_QUEUE_JNDI_NAME = "replyQueue";
-    private static final String REPLY_TOPIC_NAME = "amq.topic/topic";
-    private static final String REPLY_TOPIC_JNDI_NAME = "replyTopic";
-
 
     private HashMap<String, String> _defaultDestinations;
 
@@ -55,18 +54,17 @@ public class SimpleConversionTest extends EndToEndConversionTestBase
     public void setup()
     {
         getBrokerAdmin().createQueue(QUEUE_NAME);
-        getBrokerAdmin().createQueue(REPLY_QUEUE_NAME);
 
         _defaultDestinations = new HashMap<>();
         _defaultDestinations.put("queue." + QUEUE_JNDI_NAME, QUEUE_NAME);
-        _defaultDestinations.put("queue." + REPLY_QUEUE_JNDI_NAME, REPLY_QUEUE_NAME);
-        _defaultDestinations.put("topic." + REPLY_TOPIC_JNDI_NAME, REPLY_TOPIC_NAME);
-/*
-        destinations.put("topic.topic", "testTopic");
-        destinations.put("topic.replyTopic", "testReplyTopic");
-        destinations.put("destination.destination", "testDestination");
-        destinations.put("destination.replyDestination", "testReplyDestination");
-*/
+    }
+
+    @Test
+    public void message() throws Exception
+    {
+        final MessageDescription messageDescription = new MessageDescription();
+        messageDescription.setMessageType(MessageDescription.MessageType.MESSAGE);
+        performSimpleTest(messageDescription);
     }
 
     @Test
@@ -90,20 +88,57 @@ public class SimpleConversionTest extends EndToEndConversionTestBase
     }
 
     @Test
+    public void streamMessage() throws Exception
+    {
+        final MessageDescription messageDescription = new MessageDescription();
+        messageDescription.setMessageType(MessageDescription.MessageType.STREAM_MESSAGE);
+        messageDescription.setContent(Lists.newArrayList(true,
+                                                         (byte) -7,
+                                                         (short) 259,
+                                                         Integer.MAX_VALUE,
+                                                         Long.MAX_VALUE,
+                                                         37.5f,
+                                                         38.5,
+                                                         "testString",
+                                                         null,
+                                                         new byte[]{0x24, 0x00, (byte) 0xFF}));
+
+        performSimpleTest(messageDescription);
+    }
+
+    @Test
     public void mapMessage() throws Exception
     {
         final MessageDescription messageDescription = new MessageDescription();
         messageDescription.setMessageType(MessageDescription.MessageType.MAP_MESSAGE);
         HashMap<String, Object> content = new HashMap<>();
-        content.put("int", 42);
         content.put("boolean", true);
+        content.put("byte", (byte) -7);
+        content.put("short", (short) 259);
+        content.put("int", 42);
+        content.put("long", Long.MAX_VALUE);
+        content.put("float", 37.5f);
+        content.put("double", 37.5);
         content.put("string", "testString");
+        content.put("byteArray", new byte[] {0x24 , 0x00, (byte) 0xFF});
+
         messageDescription.setContent(content);
 
         performSimpleTest(messageDescription);
     }
 
     @Test
+    public void objectMessage() throws Exception
+    {
+        final MessageDescription messageDescription = new MessageDescription();
+        messageDescription.setMessageType(MessageDescription.MessageType.OBJECT_MESSAGE);
+        messageDescription.setContent(new SerializableTestClass(Collections.singletonMap("testKey", "testValue"),
+                                                                Collections.singletonList(42)));
+
+        performSimpleTest(messageDescription);
+    }
+
+    @Test
     public void type() throws Exception
     {
         final String type = "testType";
@@ -142,18 +177,26 @@ public class SimpleConversionTest extends EndToEndConversionTestBase
     public void property() throws Exception
     {
         final MessageDescription messageDescription = new MessageDescription();
-        messageDescription.setProperty("intProperty", 42);
-        messageDescription.setProperty("stringProperty", "foobar");
         messageDescription.setProperty("booleanProperty", true);
+        messageDescription.setProperty("byteProperty", (byte) -7);
+        messageDescription.setProperty("shortProperty", (short) 259);
+        messageDescription.setProperty("intProperty", 42);
+        messageDescription.setProperty("longProperty", Long.MAX_VALUE);
+        messageDescription.setProperty("floatProperty", 37.5f);
         messageDescription.setProperty("doubleProperty", 37.5);
+        messageDescription.setProperty("stringProperty", "foobar");
 
         performSimpleTest(messageDescription);
     }
 
     @Test
-    public void replyTo() throws Exception
+    public void replyToStaticQueue() throws Exception
     {
-        performReplyToTest(REPLY_QUEUE_JNDI_NAME);
+        final String replyQueueName = "testReplyQueue";
+        final String replyQueueJndiName = "replyQueue";
+        _defaultDestinations.put("queue." + replyQueueJndiName, replyQueueName);
+        getBrokerAdmin().createQueue(replyQueueName);
+        performReplyToTest(replyQueueJndiName);
     }
 
     @Test
@@ -163,12 +206,70 @@ public class SimpleConversionTest extends EndToEndConversionTestBase
     }
 
     @Test
-    public void replyToTopic() throws Exception
+    public void replyToAmqp10Topic() throws Exception
+    {
+        assumeTrue("This test is for AMQP 1.0 publisher",
+                    EnumSet.of(Protocol.AMQP_1_0).contains(getPublisherProtocolVersion()));
+
+        final String replyTopicJndiName = "replyTopic";
+        _defaultDestinations.put("topic." + replyTopicJndiName, "amq.topic/topic");
+        performReplyToTest(replyTopicJndiName);
+    }
+
+    @Test
+    public void replyToAmqp0xTopic() throws Exception
+    {
+        assumeFalse("This test is for AMQP 0-x publisher",
+                    EnumSet.of(Protocol.AMQP_1_0).contains(getPublisherProtocolVersion()));
+
+        String jndiName = "testTopic";
+        _defaultDestinations.put("topic." + jndiName, "myTopic");
+        performReplyToTest(jndiName);
+    }
+
+    @Test
+    public void replyToBURLDestination() throws Exception
+    {
+        assumeFalse("This test is for AMQP 0-x publisher",
+                   EnumSet.of(Protocol.AMQP_1_0).contains(getPublisherProtocolVersion()));
+
+        String jndiName = "testDestination";
+        String testDestination = "myQueue";
+        _defaultDestinations.put("destination." + jndiName,
+                                 String.format("BURL:direct://amq.direct//%s?routingkey='%s'", testDestination, testDestination));
+
+        getBrokerAdmin().createQueue(testDestination);
+
+        performReplyToTest(jndiName);
+    }
+
+    @Test
+    public void replyToAddressDestination() throws Exception
+    {
+        assumeFalse("This test is for AMQP 0-x publisher",
+                    EnumSet.of(Protocol.AMQP_1_0).contains(getPublisherProtocolVersion()));
+
+        assumeTrue("QPID-7902: setJMSReplyTo for address based destination is broken on client side for 0-8...0-9-1",
+                    EnumSet.of(Protocol.AMQP_0_10).contains(getPublisherProtocolVersion()));
+
+        String replyToJndiName = "replyToJndiName";
+        String consumeReplyToJndiName = "consumeReplyToJndiName";
+        String testDestination = "myQueue";
+        _defaultDestinations.put("destination." + replyToJndiName, "ADDR: amq.fanout/testReplyToQueue");
+        _defaultDestinations.put("destination." + consumeReplyToJndiName,
+                                 "ADDR: testReplyToQueue; {create:always, node: {type: queue, x-bindings:[{exchange: 'amq.fanout', key: testReplyToQueue}]}}");
+
+        getBrokerAdmin().createQueue(testDestination);
+
+        performReplyToTest(replyToJndiName, consumeReplyToJndiName);
+    }
+
+    private void performReplyToTest(final String jndiName) throws Exception
     {
-        performReplyToTest(REPLY_TOPIC_JNDI_NAME);
+        performReplyToTest(jndiName, null);
     }
 
-    public void performReplyToTest(final String temporaryQueueJndiName) throws Exception
+    private void performReplyToTest(final String replyToJndiName, final String consumeReplyToJndiName) throws Exception
     {
         assumeTrue("This test is known to fail for pre 0-10 subscribers (QPID-7898)",
                    EnumSet.of(Protocol.AMQP_0_10, Protocol.AMQP_1_0).contains(getSubscriberProtocolVersion()));
@@ -179,8 +280,8 @@ public class SimpleConversionTest extends EndToEndConversionTestBase
         final List<ClientInstruction>
                 publisherInstructions = new ClientInstructionBuilder().configureDestinations(_defaultDestinations)
                                                                       .publishMessage(destinationJndiName)
-                                                                      .withReplyToJndiName(
-                                                                                                    temporaryQueueJndiName)
+                                                                      .withReplyToJndiName(replyToJndiName)
+                                                                      .withConsumeReplyToJndiName(consumeReplyToJndiName)
                                                                       .withHeader(MessageDescription.MessageHeader.CORRELATION_ID,
                                                                                   correlationId)
                                                                       .build();
@@ -192,7 +293,7 @@ public class SimpleConversionTest extends EndToEndConversionTestBase
         performTest(publisherInstructions, subscriberInstructions);
     }
 
-    public void performSimpleTest(final MessageDescription messageDescription) throws Exception
+    private void performSimpleTest(final MessageDescription messageDescription) throws Exception
     {
         final String destinationJndiName = QUEUE_JNDI_NAME;
         final List<ClientInstruction> publisherInstructions =
@@ -206,7 +307,7 @@ public class SimpleConversionTest extends EndToEndConversionTestBase
         performTest(publisherInstructions,subscriberInstructions);
     }
 
-    public void performTest(final List<ClientInstruction> publisherInstructions,
+    private void performTest(final List<ClientInstruction> publisherInstructions,
                             final List<ClientInstruction> subscriberInstructions) throws Exception
     {
         final ListenableFuture<?> publisherFuture = runPublisher(publisherInstructions);


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