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 <tabish...@gmail.com> Authored: Fri Oct 10 16:38:33 2014 -0400 Committer: Timothy Bish <tabish...@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-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org