[jboss-cvs] JBoss Messaging SVN: r6087 - in trunk: tests/src/org/jboss/messaging/tests/integration/management and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 16 06:04:08 EDT 2009


Author: jmesnil
Date: 2009-03-16 06:04:08 -0400 (Mon, 16 Mar 2009)
New Revision: 6087

Modified:
   trunk/src/main/org/jboss/messaging/core/management/QueueControlMBean.java
   trunk/tests/src/org/jboss/messaging/tests/integration/management/QueueControlTest.java
Log:
QueueControl integration tests

Modified: trunk/src/main/org/jboss/messaging/core/management/QueueControlMBean.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/QueueControlMBean.java	2009-03-16 10:03:45 UTC (rev 6086)
+++ trunk/src/main/org/jboss/messaging/core/management/QueueControlMBean.java	2009-03-16 10:04:08 UTC (rev 6087)
@@ -62,7 +62,7 @@
    
    String getExpiryAddress();
    
-   void setExpiryAddress(@Parameter(name = "expiryAddres", desc = "Expiry address of the queue") 
+   void setExpiryAddress(@Parameter(name = "expiryAddress", desc = "Expiry address of the queue") 
                          String expiryAddres) 
    throws Exception;
    

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/management/QueueControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/management/QueueControlTest.java	2009-03-16 10:03:45 UTC (rev 6086)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/management/QueueControlTest.java	2009-03-16 10:04:08 UTC (rev 6087)
@@ -90,6 +90,7 @@
 
       QueueControlMBean queueControl = createQueueControl(address, queue, mbeanServer);
       assertEquals(queue.toString(), queueControl.getName());
+      assertEquals(address.toString(), queueControl.getAddress());
       assertEquals(filter.toString(), queueControl.getFilter());
       assertEquals(durable, queueControl.isDurable());
       assertEquals(temporary, queueControl.isTemporary());
@@ -229,23 +230,56 @@
       assertEquals(0, queueControl.getMessageCount());
 
       // check there is no message to consume from queue
-      ClientConsumer consumer = session.createConsumer(queue);
-      ClientMessage m = consumer.receive(500);
-      assertNull(m);
+      consumeMessages(0, session, queue);
 
       // consume the message from otherQueue
       ClientConsumer otherConsumer = session.createConsumer(otherQueue);
-      m = otherConsumer.receive(500);
+      ClientMessage m = otherConsumer.receive(500);
       assertEquals(value, m.getProperty(key));
 
       m.acknowledge();
 
-      consumer.close();
       session.deleteQueue(queue);
       otherConsumer.close();
       session.deleteQueue(otherQueue);
    }
+   
+   public void testMoveAllMessagesToUnknownQueue() throws Exception
+   {
+      SimpleString address = randomSimpleString();
+      SimpleString queue = randomSimpleString();
+      SimpleString unknownQueue = randomSimpleString();
 
+      session.createQueue(address, queue, null, false, true);
+      ClientProducer producer = session.createProducer(address);
+      session.start();
+
+      // send on queue
+      ClientMessage message = session.createClientMessage(false);
+      SimpleString key = randomSimpleString();
+      long value = randomLong();
+      message.putLongProperty(key, value);
+      producer.send(message);
+
+      QueueControlMBean queueControl = createQueueControl(address, queue, mbeanServer);
+      assertEquals(1, queueControl.getMessageCount());
+
+      // moved all messages to unknown queue
+      try
+      {
+         queueControl.moveAllMessages(unknownQueue.toString());
+         fail("operation must fail if the other queue does not exist");
+      }
+      catch (Exception e)
+      {
+      }
+      assertEquals(1, queueControl.getMessageCount());
+      
+      consumeMessages(1, session, queue);
+
+      session.deleteQueue(queue);
+   }
+
    /**
     * <ol>
     * <li>send 2 message to queue</li>
@@ -306,7 +340,83 @@
       otherConsumer.close();
       session.deleteQueue(otherQueue);
    }
+   
+   public void testMoveMessage() throws Exception
+   {
+      SimpleString address = randomSimpleString();
+      SimpleString queue = randomSimpleString();
+      SimpleString otherAddress = randomSimpleString();
+      SimpleString otherQueue = randomSimpleString();
 
+      session.createQueue(address, queue, null, false, true);
+      session.createQueue(otherAddress, otherQueue, null, false, true);
+      ClientProducer producer = session.createProducer(address);
+      session.start();
+
+      // send 2 messages on queue
+      producer.send(session.createClientMessage(false));
+      producer.send(session.createClientMessage(false));
+
+      QueueControlMBean queueControl = createQueueControl(address, queue, mbeanServer);
+      QueueControlMBean otherQueueControl = createQueueControl(otherAddress, otherQueue, mbeanServer);
+      assertEquals(2, queueControl.getMessageCount());
+      assertEquals(0, otherQueueControl.getMessageCount());
+
+      // the message IDs are set on the server
+      MessageInfo[] messageInfos = MessageInfo.from(queueControl.listAllMessages());
+      assertEquals(2, messageInfos.length);
+      long messageID = messageInfos[0].getID();
+
+      boolean moved = queueControl.moveMessage(messageID, otherQueue.toString());
+      assertTrue(moved);
+      assertEquals(1, queueControl.getMessageCount());
+      assertEquals(1, otherQueueControl.getMessageCount());
+
+      consumeMessages(1, session, queue);
+      consumeMessages(1, session, otherQueue);
+      
+      session.deleteQueue(queue);
+      session.deleteQueue(otherQueue);
+   }
+   
+   public void testMoveMessageToUnknownQueue() throws Exception
+   {
+      SimpleString address = randomSimpleString();
+      SimpleString queue = randomSimpleString();
+      SimpleString unknownQueue = randomSimpleString();
+
+      session.createQueue(address, queue, null, false, true);
+      ClientProducer producer = session.createProducer(address);
+      session.start();
+
+      // send 2 messages on queue
+      producer.send(session.createClientMessage(false));
+
+      QueueControlMBean queueControl = createQueueControl(address, queue, mbeanServer);
+      assertEquals(1, queueControl.getMessageCount());
+
+      // the message IDs are set on the server
+      MessageInfo[] messageInfos = MessageInfo.from(queueControl.listAllMessages());
+      assertEquals(1, messageInfos.length);
+      long messageID = messageInfos[0].getID();
+
+
+      // moved all messages to unknown queue
+      try
+      {
+         queueControl.moveMessage(messageID, unknownQueue.toString());
+         fail("operation must fail if the other queue does not exist");
+      }
+      catch (Exception e)
+      {
+      }
+      assertEquals(1, queueControl.getMessageCount());
+
+      consumeMessages(1, session, queue);
+      
+      session.deleteQueue(queue);
+   }
+
    /**
     * <ol>
     * <li>send 2 messages to queue</li>
@@ -337,11 +447,8 @@
       assertEquals(0, queueControl.getMessageCount());
 
       // check there is no message to consume from queue
-      ClientConsumer consumer = session.createConsumer(queue);
-      ClientMessage m = consumer.receive(500);
-      assertNull(m);
+      consumeMessages(0, session, queue);
 
-      consumer.close();
       session.deleteQueue(queue);
    }
    
@@ -426,13 +533,8 @@
       assertEquals(1, queueControl.getMessageCount());
 
       // check there is a single message to consume from queue
-      ClientConsumer consumer = session.createConsumer(queue);
-      ClientMessage m = consumer.receive(500);
-      assertNotNull(m);
-      m = consumer.receive(500);
-      assertNull(m);
+      consumeMessages(1, session, queue);
 
-      consumer.close();
       session.deleteQueue(queue);
    }
    
@@ -512,6 +614,124 @@
       session.close();
    }
    
+   public void testExpireMessage() throws Exception
+   {
+      SimpleString address = randomSimpleString();
+      SimpleString queue = randomSimpleString();
+      SimpleString expiryAddress = randomSimpleString();
+      SimpleString expiryQueue = randomSimpleString();
+
+      session.createQueue(address, queue, null, false, true);
+      session.createQueue(expiryAddress, expiryQueue, null, false, true);
+      ClientProducer producer = session.createProducer(address);
+      session.start();
+
+      // send on queue
+      producer.send(session.createClientMessage(false));
+
+      QueueControlMBean queueControl = createQueueControl(address, queue, mbeanServer);
+      QueueControlMBean expiryQueueControl = createQueueControl(expiryAddress, expiryQueue, mbeanServer);
+      assertEquals(1, queueControl.getMessageCount());
+      assertEquals(0, expiryQueueControl.getMessageCount());
+
+      // the message IDs are set on the server
+      MessageInfo[] messageInfos = MessageInfo.from(queueControl.listAllMessages());
+      assertEquals(1, messageInfos.length);
+      long messageID = messageInfos[0].getID();
+
+      queueControl.setExpiryAddress(expiryAddress.toString());
+      boolean expired = queueControl.expireMessage(messageID);
+      assertTrue(expired);
+      assertEquals(0, queueControl.getMessageCount());
+      assertEquals(1, expiryQueueControl.getMessageCount());
+
+      consumeMessages(0, session, queue);
+      consumeMessages(1, session, expiryQueue);
+
+      session.deleteQueue(queue);
+      session.deleteQueue(expiryQueue);
+      session.close();
+   }
+   
+   public void testSendMessageToDeadLetterAddress() throws Exception
+   {
+      SimpleString address = randomSimpleString();
+      SimpleString queue = randomSimpleString();
+      SimpleString deadLetterAddress = randomSimpleString();
+      SimpleString deadLetterQueue = randomSimpleString();
+
+      session.createQueue(address, queue, null, false, true);
+      session.createQueue(deadLetterAddress, deadLetterQueue, null, false, true);
+      ClientProducer producer = session.createProducer(address);
+      session.start();
+
+      // send 2 messages on queue
+      producer.send(session.createClientMessage(false));
+      producer.send(session.createClientMessage(false));
+
+      QueueControlMBean queueControl = createQueueControl(address, queue, mbeanServer);
+      QueueControlMBean deadLetterQueueControl = createQueueControl(deadLetterAddress, deadLetterQueue, mbeanServer);
+      assertEquals(2, queueControl.getMessageCount());
+
+      // the message IDs are set on the server
+      MessageInfo[] messageInfos = MessageInfo.from(queueControl.listAllMessages());
+      assertEquals(2, messageInfos.length);
+      long messageID = messageInfos[0].getID();
+
+      queueControl.setDeadLetterAddress(deadLetterAddress.toString());
+
+      assertEquals(0, deadLetterQueueControl.getMessageCount());
+      boolean movedToDeadLetterAddress = queueControl.sendMessageToDeadLetterAddress(messageID);
+      assertTrue(movedToDeadLetterAddress);
+      assertEquals(1, queueControl.getMessageCount());
+      assertEquals(1, deadLetterQueueControl.getMessageCount());
+
+      // check there is a single message to consume from queue
+      consumeMessages(1, session, queue);
+
+      // check there is a single message to consume from deadletter queue
+      consumeMessages(1, session, deadLetterQueue);
+
+      session.deleteQueue(queue);
+      session.deleteQueue(deadLetterQueue);
+   }
+   
+   public void testChangeMessagePriority() throws Exception
+   {
+      byte originalPriority = (byte)1;
+      byte newPriority = (byte)8;
+
+      SimpleString address = randomSimpleString();
+      SimpleString queue = randomSimpleString();
+
+      session.createQueue(address, queue, null, false, true);
+      ClientProducer producer = session.createProducer(address);
+      session.start();
+
+      ClientMessage message = session.createClientMessage(false);
+      message.setPriority(originalPriority);
+      producer.send(message);
+
+      QueueControlMBean queueControl = createQueueControl(address, queue, mbeanServer);
+      assertEquals(1, queueControl.getMessageCount());
+
+      // the message IDs are set on the server
+      MessageInfo[] messageInfos = MessageInfo.from(queueControl.listAllMessages());
+      assertEquals(1, messageInfos.length);
+      long messageID = messageInfos[0].getID();
+
+      boolean priorityChanged = queueControl.changeMessagePriority(messageID, newPriority);
+      assertTrue(priorityChanged);
+
+      ClientConsumer consumer = session.createConsumer(queue);
+      ClientMessage m = consumer.receive(500);
+      assertNotNull(m);
+      assertEquals(newPriority, m.getPriority());
+      
+      consumer.close();
+      session.deleteQueue(queue);
+   }
+   
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------
@@ -548,6 +768,29 @@
 
    // Private -------------------------------------------------------
 
+   private void consumeMessages(int expected, ClientSession session, SimpleString queue) throws Exception
+   {
+      ClientConsumer consumer = null;
+      try
+      {
+         consumer = session.createConsumer(queue);
+         ClientMessage m = null;
+         for (int i = 0; i < expected; i++)
+         {
+            m = consumer.receive(500);
+            assertNotNull("expected to received " + expected + " messages, got only " + (i + 1), m);  
+            m.acknowledge();
+         }
+         m = consumer.receive(500);
+         assertNull("received one more message than expected (" + expected + ")", m);
+      } finally {
+         if (consumer != null)
+         {
+            consumer.close();
+         }
+      }
+   }
+   
    // Inner classes -------------------------------------------------
 
 }




More information about the jboss-cvs-commits mailing list