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 <lqu...@apache.org> Authored: Mon Aug 28 16:17:41 2017 +0100 Committer: Lorenz Quack <lqu...@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-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org