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

qpid-broker-j git commit: QPID-7434: Add unit tests for conversion of AMQP 1.0 message properties into internal format

Repository: qpid-broker-j
Updated Branches:
  refs/heads/master 6666a3f33 -> 4a2d88957


QPID-7434: Add unit tests for conversion of AMQP 1.0 message properties into internal format


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/4a2d8895
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/4a2d8895
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/4a2d8895

Branch: refs/heads/master
Commit: 4a2d8895778da7042c3a0f6cdc0523253990013d
Parents: 6666a3f
Author: Alex Rudyy <or...@apache.org>
Authored: Tue Aug 1 13:15:27 2017 +0100
Committer: Alex Rudyy <or...@apache.org>
Committed: Tue Aug 1 13:15:51 2017 +0100

----------------------------------------------------------------------
 .../PropertyConverter_v1_0_to_InternalTest.java | 383 +++++++++++++++++++
 1 file changed, 383 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/4a2d8895/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/PropertyConverter_v1_0_to_InternalTest.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/PropertyConverter_v1_0_to_InternalTest.java b/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/PropertyConverter_v1_0_to_InternalTest.java
new file mode 100644
index 0000000..e8a0634
--- /dev/null
+++ b/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/PropertyConverter_v1_0_to_InternalTest.java
@@ -0,0 +1,383 @@
+/*
+ *
+ * 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.server.protocol.v1_0;
+
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
+import org.apache.qpid.server.bytebuffer.QpidByteBufferUtils;
+import org.apache.qpid.server.message.internal.InternalMessage;
+import org.apache.qpid.server.model.NamedAddressSpace;
+import org.apache.qpid.server.protocol.v1_0.type.Binary;
+import org.apache.qpid.server.protocol.v1_0.type.Symbol;
+import org.apache.qpid.server.protocol.v1_0.type.UnsignedByte;
+import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.ApplicationProperties;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Data;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.DataSection;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.DeliveryAnnotations;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Footer;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Header;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.MessageAnnotations;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Properties;
+import org.apache.qpid.server.store.StoredMessage;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+public class PropertyConverter_v1_0_to_InternalTest extends QpidTestCase
+{
+    private MessageConverter_v1_0_to_Internal _messageConverter;
+    private NamedAddressSpace _addressSpace;
+
+    @Override
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        _messageConverter = new MessageConverter_v1_0_to_Internal();
+        _addressSpace = mock(NamedAddressSpace.class);
+    }
+
+    public void testDurableTrueConversion()
+    {
+        final Header header = new Header();
+        header.setDurable(true);
+        final Message_1_0 originalMessage = createTestMessage(header);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertTrue("Unexpected persistence of message", convertedMessage.isPersistent());
+        assertTrue("Unexpected persistence of meta data",
+                   convertedMessage.getStoredMessage().getMetaData().isPersistent());
+    }
+
+    public void testDurableFalseConversion()
+    {
+        final Header header = new Header();
+        header.setDurable(false);
+        final Message_1_0 originalMessage = createTestMessage(header);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertFalse("Unexpected persistence of message", convertedMessage.isPersistent());
+        assertFalse("Unexpected persistence of meta data",
+                    convertedMessage.getStoredMessage().getMetaData().isPersistent());
+    }
+
+    public void testPriorityConversion()
+    {
+        final byte priority = 7;
+        final Header header = new Header();
+        header.setPriority(UnsignedByte.valueOf(priority));
+        final Message_1_0 originalMessage = createTestMessage(header);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected priority", priority, convertedMessage.getMessageHeader().getPriority());
+    }
+
+    public void testAbsoluteExpiryTimeConversion()
+    {
+        long ttl = 10000;
+        long arrivalTime = System.currentTimeMillis();
+        long expiryTime = arrivalTime + ttl;
+        Properties properties = new Properties();
+        properties.setAbsoluteExpiryTime(new Date(expiryTime));
+        Message_1_0 originalMessage = createTestMessage(properties, arrivalTime);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected expiration", expiryTime, convertedMessage.getMessageHeader().getExpiration());
+    }
+
+    public void testContentEncodingConversion()
+    {
+        String contentEncoding = "my-test-encoding";
+        final Properties properties = new Properties();
+        properties.setContentEncoding(Symbol.valueOf(contentEncoding));
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected content encoding", contentEncoding, convertedMessage.getMessageHeader().getEncoding());
+    }
+
+    public void testMessageIdStringConversion()
+    {
+        final String messageId = "testMessageId";
+        Properties properties = new Properties();
+        properties.setMessageId(messageId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected messageId",
+                     messageId,
+                     convertedMessage.getMessageHeader().getMessageId());
+    }
+
+    public void testMessageIdUuidConversion()
+    {
+        final UUID messageId = UUID.randomUUID();
+        Properties properties = new Properties();
+        properties.setMessageId(messageId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected messageId",
+                     messageId.toString(),
+                     convertedMessage.getMessageHeader().getMessageId());
+    }
+
+    public void testMessageIdUnsignedLongConversion()
+    {
+        final UnsignedLong messageId = UnsignedLong.valueOf(-1L);
+        Properties properties = new Properties();
+        properties.setMessageId(messageId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected messageId",
+                     messageId.toString(),
+                     convertedMessage.getMessageHeader().getMessageId());
+    }
+
+    public void testMessageIdBinaryConversion()
+    {
+        final byte[] data = new byte[]{(byte) 0xc3, 0x28};
+        final Binary messageId = new Binary(data);
+        Properties properties = new Properties();
+        properties.setMessageId(messageId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected messageId", messageId.toString(), convertedMessage.getMessageHeader().getMessageId());
+    }
+
+    public void testCorrelationIdStringConversion()
+    {
+        final String correlationId = "testMessageCorrelationId";
+        Properties properties = new Properties();
+        properties.setCorrelationId(correlationId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected correlationId",
+                     correlationId,
+                     convertedMessage.getMessageHeader().getCorrelationId());
+    }
+
+    public void testCorrelationIdUuidConversion()
+    {
+        final UUID correlationId = UUID.randomUUID();
+        Properties properties = new Properties();
+        properties.setCorrelationId(correlationId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected correlationId",
+                     correlationId.toString(),
+                     convertedMessage.getMessageHeader().getCorrelationId());
+    }
+
+    public void testCorrelationIdUnsignedLongConversion()
+    {
+        final UnsignedLong correlationId = UnsignedLong.valueOf(-1L);
+        Properties properties = new Properties();
+        properties.setCorrelationId(correlationId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected correlationId",
+                     correlationId.toString(),
+                     convertedMessage.getMessageHeader().getCorrelationId());
+    }
+
+    public void testCorrelationIdBinaryConversion()
+    {
+        final byte[] data = new byte[]{(byte) 0xc3, 0x28};
+        final Binary correlationId = new Binary(data);
+        Properties properties = new Properties();
+        properties.setCorrelationId(correlationId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected correlationId",
+                     correlationId.toString(),
+                     convertedMessage.getMessageHeader().getCorrelationId());
+    }
+
+    public void testUserIdConversion()
+    {
+        final byte[] data = new byte[]{(byte) 0xc3, 0x28};
+        final Binary userId = new Binary(data);
+        Properties properties = new Properties();
+        properties.setUserId(userId);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected userId", new String(data, UTF_8), convertedMessage.getMessageHeader().getUserId());
+    }
+
+    public void testReplyToConversion()
+    {
+        final String replyTo = "amq.direct/test";
+        Properties properties = new Properties();
+        properties.setReplyTo(replyTo);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected replyTo", replyTo, convertedMessage.getMessageHeader().getReplyTo());
+    }
+
+    public void testCreationTimeConversion()
+    {
+        final long creationTime = System.currentTimeMillis();
+        Properties properties = new Properties();
+        properties.setCreationTime(new Date(creationTime));
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected timestamp", creationTime, convertedMessage.getMessageHeader().getTimestamp());
+    }
+
+    public void testToConversionIntoToAndInitialRoutingAddressWhenToIncludesExchangeNameAndRoutingKey()
+    {
+        final String exchangeName = "amq.direct";
+        final String routingKey = "test";
+        final String to = String.format("%s/%s", exchangeName, routingKey);
+        Properties properties = new Properties();
+        properties.setTo(to);
+        Message_1_0 originalMessage = createTestMessage(properties);
+
+        InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        assertEquals("Unexpected to", to, convertedMessage.getTo());
+        assertEquals("Unexpected initialRoutingAddress", "", convertedMessage.getInitialRoutingAddress());
+    }
+
+    public void testApplicationPropertiesConversion()
+    {
+        Map<String, Object> properties = new HashMap<>();
+        properties.put("testProperty1", "testProperty1Value");
+        properties.put("intProperty", 1);
+        ApplicationProperties applicationProperties = new ApplicationProperties(properties);
+        Message_1_0 originalMessage = createTestMessage(applicationProperties);
+
+        final InternalMessage convertedMessage = _messageConverter.convert(originalMessage, _addressSpace);
+
+        final Map<String, Object> headers = convertedMessage.getMessageHeader().getHeaderMap();
+        assertEquals("Unexpected headers", properties, new HashMap<>(headers));
+    }
+
+
+    private Message_1_0 createTestMessage(final Header header)
+    {
+        return createTestMessage(header, 0);
+    }
+
+    private Message_1_0 createTestMessage(final Header header, long arrivalTime)
+    {
+        return createTestMessage(header,
+                                 new DeliveryAnnotations(Collections.emptyMap()),
+                                 new MessageAnnotations(Collections.emptyMap()),
+                                 new Properties(),
+                                 new ApplicationProperties(Collections.emptyMap()),
+                                 arrivalTime,
+                                 null);
+    }
+
+    private Message_1_0 createTestMessage(final Properties properties)
+    {
+        return createTestMessage(properties, 0L);
+    }
+
+    private Message_1_0 createTestMessage(final Properties properties, final long arrivalTime)
+    {
+        return createTestMessage(new Header(),
+                                 new DeliveryAnnotations(Collections.emptyMap()),
+                                 new MessageAnnotations(Collections.emptyMap()),
+                                 properties,
+                                 new ApplicationProperties(Collections.emptyMap()),
+                                 arrivalTime,
+                                 null);
+    }
+
+    private Message_1_0 createTestMessage(final ApplicationProperties applicationProperties)
+    {
+        return createTestMessage(new Header(),
+                                 new DeliveryAnnotations(Collections.emptyMap()),
+                                 new MessageAnnotations(Collections.emptyMap()),
+                                 new Properties(),
+                                 applicationProperties,
+                                 0,
+                                 null);
+    }
+
+    private Message_1_0 createTestMessage(final Header header,
+                                          final DeliveryAnnotations deliveryAnnotations,
+                                          final MessageAnnotations messageAnnotations,
+                                          final Properties properties,
+                                          final ApplicationProperties applicationProperties,
+                                          final long arrivalTime,
+                                          final byte[] content)
+    {
+        final StoredMessage<MessageMetaData_1_0> storedMessage = mock(StoredMessage.class);
+        MessageMetaData_1_0 metaData = new MessageMetaData_1_0(header.createEncodingRetainingSection(),
+                                                               deliveryAnnotations.createEncodingRetainingSection(),
+                                                               messageAnnotations.createEncodingRetainingSection(),
+                                                               properties.createEncodingRetainingSection(),
+                                                               applicationProperties.createEncodingRetainingSection(),
+                                                               new Footer(Collections.emptyMap()).createEncodingRetainingSection(),
+                                                               arrivalTime,
+                                                               content == null ? 0 : content.length);
+        when(storedMessage.getMetaData()).thenReturn(metaData);
+
+        if (content != null)
+        {
+            Binary binary = new Binary(content);
+            DataSection dataSection = new Data(binary).createEncodingRetainingSection();
+            List<QpidByteBuffer> qbbList = dataSection.getEncodedForm();
+            int length = (int) QpidByteBufferUtils.remaining(qbbList);
+            when(storedMessage.getContentSize()).thenReturn(length);
+            when(storedMessage.getContent(0, length)).thenReturn(qbbList);
+        }
+        return new Message_1_0(storedMessage);
+    }
+}


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