You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2014/10/10 23:25:29 UTC

[3/4] git commit: Add some testing and some notes about cleanup of delivery / redelivery count methods in the message facades.

Add some testing and some notes about cleanup of delivery / redelivery
count methods in the message facades.

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

Branch: refs/heads/master
Commit: a52e142cabb7f73a54d96e3613e176d1b79eb6bb
Parents: a7907e0
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Oct 10 16:38:33 2014 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Oct 10 16:38:33 2014 -0400

----------------------------------------------------------------------
 .../amqp/message/AmqpJmsMessageFacade.java      |   8 ++
 .../amqp/message/AmqpJmsMessageFacadeTest.java  | 119 +++++++++++++++++++
 2 files changed, 127 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a52e142c/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
index e7d017f..84dac97 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
@@ -486,6 +486,14 @@ public class AmqpJmsMessageFacade implements JmsMessageFacade {
         setRedeliveryCount(deliveryCount - 1);
     }
 
+    // TODO - We can probably remove these set / get redelivery count and just use
+    //        the delivery count and is / set redelivered bits for the JMS mapping.
+    //
+    // possibly add an increment to make the consumer code more readable when doing
+    // a recover or rollback if we do local redeliveries.
+    //
+    //  public void incrementRedeliveryCount()
+
     @Override
     public int getRedeliveryCount() {
         if (message.getHeader() != null) {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/a52e142c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
index 7acc3d5..8faf7e1 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
@@ -201,6 +201,125 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase  {
         assertEquals("TTL has not been overriden", overrideTtl, message.getTtl());
     }
 
+    // --- delivery count  ---
+
+    @Test
+    public void testGetDeliveryCountIs1ForNewMessage() {
+        AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+
+        // JMS delivery count starts at one.
+        assertEquals("expected delivery count value not found", 1, amqpMessageFacade.getDeliveryCount());
+
+        // Redelivered state inferred from delivery count
+        assertFalse(amqpMessageFacade.isRedelivered());
+        assertEquals(0, amqpMessageFacade.getRedeliveryCount());;
+    }
+
+    @Test
+    public void testGetDeliveryCountForReceivedMessageWithNoHeader() {
+        Message message = Proton.message();
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
+        assertNull("expected no header section to exist", message.getHeader());
+        // JMS delivery count starts at one.
+        assertEquals("expected delivery count value not found", 1, amqpMessageFacade.getDeliveryCount());
+
+        // Redelivered state inferred from delivery count
+        assertFalse(amqpMessageFacade.isRedelivered());
+        assertEquals(0, amqpMessageFacade.getRedeliveryCount());;
+    }
+
+    @Test
+    public void testGetDeliveryCountForReceivedMessageWithHeaderButNoDeliveryCount() {
+        Message message = Proton.message();
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
+        Header header = new Header();
+        message.setHeader(header);
+
+        // JMS delivery count starts at one.
+        assertEquals("expected delivery count value not found", 1, amqpMessageFacade.getDeliveryCount());
+
+        // Redelivered state inferred from delivery count
+        assertFalse(amqpMessageFacade.isRedelivered());
+        assertEquals(0, amqpMessageFacade.getRedeliveryCount());;
+    }
+
+    @Test
+    public void testGetDeliveryCountForReceivedMessageWithHeaderWithDeliveryCount() {
+        Message message = Proton.message();
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
+        Header header = new Header();
+        header.setDeliveryCount(new UnsignedInteger(1));
+        message.setHeader(header);
+
+        // JMS delivery count starts at one.
+        assertEquals("expected delivery count value not found", 2, amqpMessageFacade.getDeliveryCount());
+
+        // Redelivered state inferred from delivery count
+        assertTrue(amqpMessageFacade.isRedelivered());
+        assertEquals(1, amqpMessageFacade.getRedeliveryCount());;
+    }
+
+    @Test
+    public void testSetRedeliveredAltersDeliveryCount() {
+        Message message = Proton.message();
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
+        // Redelivered state inferred from delivery count
+        assertFalse(amqpMessageFacade.isRedelivered());
+        assertEquals(0, amqpMessageFacade.getRedeliveryCount());;
+
+        amqpMessageFacade.setRedelivered(true);
+        assertTrue(amqpMessageFacade.isRedelivered());
+        assertEquals(1, amqpMessageFacade.getRedeliveryCount());;
+    }
+
+    @Test
+    public void testSetRedeliveredWhenAlreadyRedeliveredDoesNotChangeDeliveryCount() {
+        Message message = Proton.message();
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
+        Header header = new Header();
+        header.setDeliveryCount(new UnsignedInteger(1));
+        message.setHeader(header);
+
+        // Redelivered state inferred from delivery count
+        assertTrue(amqpMessageFacade.isRedelivered());
+        assertEquals(1, amqpMessageFacade.getRedeliveryCount());;
+
+        amqpMessageFacade.setRedelivered(true);
+        assertTrue(amqpMessageFacade.isRedelivered());
+        assertEquals(1, amqpMessageFacade.getRedeliveryCount());;
+    }
+
+    @Test
+    public void testSetRedeliveredFalseClearsDeliveryCount() {
+        Message message = Proton.message();
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+
+        Header header = new Header();
+        header.setDeliveryCount(new UnsignedInteger(1));
+        message.setHeader(header);
+
+        // Redelivered state inferred from delivery count
+        assertTrue(amqpMessageFacade.isRedelivered());
+        assertEquals(1, amqpMessageFacade.getRedeliveryCount());;
+
+        amqpMessageFacade.setRedelivered(false);
+        assertFalse(amqpMessageFacade.isRedelivered());
+        assertEquals(0, amqpMessageFacade.getRedeliveryCount());;
+    }
+
+    @Test
+    public void testSetRedeliveryCountToZeroWhenNoHeadersNoNPE() {
+        Message message = Proton.message();
+        AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
+        assertNull("expected no header section to exist", message.getHeader());
+        amqpMessageFacade.setRedeliveryCount(0);
+    }
+
     // --- priority field  ---
 
     @Test


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