You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/11/30 02:53:09 UTC

activemq-artemis git commit: ARTEMIS-1508 Adding a test with Expiry, to make sure the message copy works correctly

Repository: activemq-artemis
Updated Branches:
  refs/heads/master ce9e82429 -> f2b5114af


ARTEMIS-1508 Adding a test with Expiry, to make sure the message copy works correctly


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/f2b5114a
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/f2b5114a
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/f2b5114a

Branch: refs/heads/master
Commit: f2b5114af8dd505e3c5c3efc1f395fe5f066e376
Parents: ce9e824
Author: Clebert Suconic <cl...@apache.org>
Authored: Wed Nov 29 21:12:30 2017 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Wed Nov 29 21:49:31 2017 -0500

----------------------------------------------------------------------
 .../integration/amqp/AmqpClientTestSupport.java |  4 +-
 .../amqp/AmqpExpiredMessageTest.java            | 62 ++++++++++++++++++--
 2 files changed, 60 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f2b5114a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpClientTestSupport.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpClientTestSupport.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpClientTestSupport.java
index 054e715..044183f 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpClientTestSupport.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpClientTestSupport.java
@@ -216,11 +216,11 @@ public class AmqpClientTestSupport extends AmqpTestSupport {
    }
 
    protected void createAddressAndQueues(ActiveMQServer server) throws Exception {
-      // Default DLQ
+      // Default Queue
       server.addAddressInfo(new AddressInfo(SimpleString.toSimpleString(getQueueName()), RoutingType.ANYCAST));
       server.createQueue(SimpleString.toSimpleString(getQueueName()), RoutingType.ANYCAST, SimpleString.toSimpleString(getQueueName()), null, true, false, -1, false, true);
 
-      // Default Queue
+      // Default DLQ
       server.addAddressInfo(new AddressInfo(SimpleString.toSimpleString(getDeadLetterAddress()), RoutingType.ANYCAST));
       server.createQueue(SimpleString.toSimpleString(getDeadLetterAddress()), RoutingType.ANYCAST, SimpleString.toSimpleString(getDeadLetterAddress()), null, true, false, -1, false, true);
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/f2b5114a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java
index 61525e9..f5795b6 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/AmqpExpiredMessageTest.java
@@ -55,7 +55,7 @@ public class AmqpExpiredMessageTest extends AmqpClientTestSupport {
       // Now try and get the message
       AmqpReceiver receiver = session.createReceiver(getQueueName());
       receiver.flow(1);
-      AmqpMessage received = receiver.receive(1, TimeUnit.SECONDS);
+      AmqpMessage received = receiver.receiveNoWait();
       assertNull(received);
 
       Wait.assertEquals(1, queueView::getMessagesExpired);
@@ -64,6 +64,60 @@ public class AmqpExpiredMessageTest extends AmqpClientTestSupport {
    }
 
    @Test(timeout = 60000)
+   public void testExpiryThroughTTL() throws Exception {
+      AmqpClient client = createAmqpClient();
+      AmqpConnection connection = addConnection(client.connect());
+      AmqpSession session = connection.createSession();
+
+      AmqpSender sender = session.createSender(getQueueName());
+
+      // Get the Queue View early to avoid racing the delivery.
+      final Queue queueView = getProxyToQueue(getQueueName());
+      assertNotNull(queueView);
+
+      AmqpMessage message = new AmqpMessage();
+      message.setTimeToLive(1);
+      message.setText("Test-Message");
+      message.setDurable(true);
+      message.setApplicationProperty("key1", "Value1");
+      sender.send(message);
+      sender.close();
+
+      Thread.sleep(100);
+
+
+      // Now try and get the message
+      AmqpReceiver receiver = session.createReceiver(getQueueName());
+      receiver.flow(1);
+      AmqpMessage received = receiver.receiveNoWait();
+      assertNull(received);
+
+      Wait.assertEquals(1, queueView::getMessagesExpired);
+
+      connection.close();
+
+      // This will stop and start the server
+      // to make sure the message is decoded again from its binary format
+      // avoiding any parsing cached at the server.
+      server.stop();
+      server.start();
+
+      client = createAmqpClient();
+      connection = addConnection(client.connect());
+      session = connection.createSession();
+
+      AmqpReceiver receiverDLQ = session.createReceiver(getDeadLetterAddress());
+      receiverDLQ.flow(1);
+      received = receiverDLQ.receive(5, TimeUnit.SECONDS);
+      Assert.assertEquals(1, received.getTimeToLive());
+      System.out.println("received.heandler.TTL" + received.getTimeToLive());
+      Assert.assertNotNull(received);
+      Assert.assertEquals("Value1", received.getApplicationProperty("key1"));
+
+      connection.close();
+   }
+
+   @Test(timeout = 60000)
    public void testSendMessageThatIsNotExpiredUsingAbsoluteTime() throws Exception {
       AmqpClient client = createAmqpClient();
       AmqpConnection connection = addConnection(client.connect());
@@ -119,7 +173,7 @@ public class AmqpExpiredMessageTest extends AmqpClientTestSupport {
       // Now try and get the message
       AmqpReceiver receiver = session.createReceiver(getQueueName());
       receiver.flow(1);
-      AmqpMessage received = receiver.receive(1, TimeUnit.SECONDS);
+      AmqpMessage received = receiver.receiveNoWait();
       assertNull(received);
 
       Wait.assertEquals(1, queueView::getMessagesExpired);
@@ -154,7 +208,7 @@ public class AmqpExpiredMessageTest extends AmqpClientTestSupport {
       // Now try and get the message
       AmqpReceiver receiver = session.createReceiver(getQueueName());
       receiver.flow(1);
-      AmqpMessage received = receiver.receive(1, TimeUnit.SECONDS);
+      AmqpMessage received = receiver.receiveNoWait();
       assertNull(received);
 
       Wait.assertEquals(1, queueView::getMessagesExpired);
@@ -253,7 +307,7 @@ public class AmqpExpiredMessageTest extends AmqpClientTestSupport {
       // Now try and get the message
       AmqpReceiver receiver = session.createReceiver(getQueueName());
       receiver.flow(1);
-      AmqpMessage received = receiver.receive(1, TimeUnit.SECONDS);
+      AmqpMessage received = receiver.receiveNoWait();
       assertNull(received);
 
       Wait.assertEquals(1, queueView::getMessagesExpired);