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