[jboss-cvs] JBoss Messaging SVN: r6687 - trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/management.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed May 6 05:46:27 EDT 2009


Author: timfox
Date: 2009-05-06 05:46:26 -0400 (Wed, 06 May 2009)
New Revision: 6687

Added:
   trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/management/TopicControlUsingJMSTest.java
Log:
added missing test

Added: trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/management/TopicControlUsingJMSTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/management/TopicControlUsingJMSTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/jms/server/management/TopicControlUsingJMSTest.java	2009-05-06 09:46:26 UTC (rev 6687)
@@ -0,0 +1,385 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.messaging.tests.integration.jms.server.management;
+
+import static org.jboss.messaging.core.config.impl.ConfigurationImpl.DEFAULT_MANAGEMENT_ADDRESS;
+import static org.jboss.messaging.tests.util.RandomUtil.randomLong;
+import static org.jboss.messaging.tests.util.RandomUtil.randomString;
+
+import javax.jms.Connection;
+import javax.jms.QueueConnection;
+import javax.jms.QueueSession;
+import javax.jms.Session;
+import javax.jms.TopicSubscriber;
+
+import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.config.TransportConfiguration;
+import org.jboss.messaging.core.config.impl.ConfigurationImpl;
+import org.jboss.messaging.core.management.ResourceNames;
+import org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory;
+import org.jboss.messaging.core.server.Messaging;
+import org.jboss.messaging.core.server.MessagingServer;
+import org.jboss.messaging.jms.JBossQueue;
+import org.jboss.messaging.jms.JBossTopic;
+import org.jboss.messaging.jms.client.JBossConnectionFactory;
+import org.jboss.messaging.jms.server.impl.JMSServerManagerImpl;
+import org.jboss.messaging.tests.integration.management.ManagementTestBase;
+
+public class TopicControlUsingJMSTest extends ManagementTestBase
+{
+
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   private MessagingServer server;
+
+   private JMSServerManagerImpl serverManager;
+
+   private String clientID;
+
+   private String subscriptionName;
+
+   protected JBossTopic topic;
+
+   protected JMSMessagingProxy proxy;
+
+   private QueueConnection connection;
+
+   private QueueSession session;
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   public void testGetAttributes() throws Exception
+   {
+      assertEquals(topic.getTopicName(), proxy.retrieveAttributeValue("Name"));
+      assertEquals(topic.getAddress(), proxy.retrieveAttributeValue("Address"));
+      assertEquals(topic.isTemporary(), proxy.retrieveAttributeValue("Temporary"));
+      assertEquals(topic.getName(), proxy.retrieveAttributeValue("JNDIBinding"));
+   }
+
+   public void testGetXXXSubscriptionsCount() throws Exception
+   {
+      Connection connection_1 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+
+      // 1 non-durable subscriber, 2 durable subscribers
+      JMSUtil.createConsumer(connection_1, topic);
+
+      Connection connection_2 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection_2, topic, clientID, subscriptionName);
+      Connection connection_3 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection_3, topic, clientID, subscriptionName + "2");
+
+      assertEquals(3, proxy.retrieveAttributeValue("SubscriptionCount"));
+      assertEquals(1, proxy.retrieveAttributeValue("NonDurableSubscriptionCount"));
+      assertEquals(2, proxy.retrieveAttributeValue("DurableSubscriptionCount"));
+
+      connection_1.close();
+      connection_2.close();
+      connection_3.close();
+   }
+
+   public void testGetXXXMessagesCount() throws Exception
+   {
+      // 1 non-durable subscriber, 2 durable subscribers
+      Connection connection_1 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createConsumer(connection_1, topic);
+      Connection connection_2 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection_2, topic, clientID, subscriptionName);
+      Connection connection_3 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection_3, topic, clientID, subscriptionName + "2");
+
+      assertEquals(0, proxy.retrieveAttributeValue("MessageCount"));
+      assertEquals(0, proxy.retrieveAttributeValue("NonDurableMessageCount"));
+      assertEquals(0, proxy.retrieveAttributeValue("DurableMessageCount"));
+
+      JMSUtil.sendMessages(topic, 2);
+
+      assertEquals(3 * 2, proxy.retrieveAttributeValue("MessageCount"));
+      assertEquals(1 * 2, proxy.retrieveAttributeValue("NonDurableMessageCount"));
+      assertEquals(2 * 2, proxy.retrieveAttributeValue("DurableMessageCount"));
+
+      connection_1.close();
+      connection_2.close();
+      connection_3.close();
+   }
+
+   public void testListXXXSubscriptionsCount() throws Exception
+   {
+      // 1 non-durable subscriber, 2 durable subscribers
+      Connection connection_1 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createConsumer(connection_1, topic);
+      Connection connection_2 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection_2, topic, clientID, subscriptionName);
+      Connection connection_3 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection_3, topic, clientID, subscriptionName + "2");
+
+      assertEquals(3, ((Object[])proxy.invokeOperation("listAllSubscriptions", null)).length);
+      assertEquals(1, ((Object[])proxy.invokeOperation("listNonDurableSubscriptions", null)).length);
+      assertEquals(2, ((Object[])proxy.invokeOperation("listDurableSubscriptions", null)).length);
+
+      connection_1.close();
+      connection_2.close();
+      connection_3.close();
+   }
+
+   public void testCountMessagesForSubscription() throws Exception
+   {
+      String key = "key";
+      long matchingValue = randomLong();
+      long unmatchingValue = matchingValue + 1;
+
+      Connection connection = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection, topic, clientID, subscriptionName);
+
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      JMSUtil.sendMessageWithProperty(session, topic, key, matchingValue);
+      JMSUtil.sendMessageWithProperty(session, topic, key, unmatchingValue);
+      JMSUtil.sendMessageWithProperty(session, topic, key, matchingValue);
+
+      assertEquals(3, proxy.retrieveAttributeValue("MessageCount"));
+
+      assertEquals(2, proxy.invokeOperation("countMessagesForSubscription", clientID, subscriptionName, key + " =" +
+                                                                                                        matchingValue));
+      assertEquals(1,
+                   proxy.invokeOperation("countMessagesForSubscription", clientID, subscriptionName, key + " =" +
+                                                                                                     unmatchingValue));
+
+      connection.close();
+   }
+
+   public void testCountMessagesForUnknownSubscription() throws Exception
+   {
+      String unknownSubscription = randomString();
+
+      try
+      {
+         proxy.invokeOperation("countMessagesForSubscription", clientID, unknownSubscription, null);
+         fail();
+      }
+      catch (Exception e)
+      {
+      }
+   }
+
+   public void testCountMessagesForUnknownClientID() throws Exception
+   {
+      String unknownClientID = randomString();
+
+      try
+      {
+         proxy.invokeOperation("countMessagesForSubscription", unknownClientID, subscriptionName, null);
+         fail();
+      }
+      catch (Exception e)
+      {
+      }
+   }
+
+   public void testDropDurableSubscriptionWithExistingSubscription() throws Exception
+   {
+      Connection connection = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+
+      JMSUtil.createDurableSubscriber(connection, topic, clientID, subscriptionName);
+
+      assertEquals(1, proxy.retrieveAttributeValue("DurableSubscriptionCount"));
+
+      connection.close();
+
+      proxy.invokeOperation("dropDurableSubscription", clientID, subscriptionName);
+
+      assertEquals(0, proxy.retrieveAttributeValue("DurableSubscriptionCount"));
+   }
+
+   public void testDropDurableSubscriptionWithUnknownSubscription() throws Exception
+   {
+      Connection connection = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+
+      JMSUtil.createDurableSubscriber(connection, topic, clientID, subscriptionName);
+
+      assertEquals(1, proxy.retrieveAttributeValue("DurableSubscriptionCount"));
+
+      try
+      {
+         proxy.invokeOperation("dropDurableSubscription", clientID, "this subscription does not exist");
+         fail("should throw an exception");
+      }
+      catch (Exception e)
+      {
+
+      }
+
+      assertEquals(1, proxy.retrieveAttributeValue("DurableSubscriptionCount"));
+
+      connection.close();
+   }
+
+   public void testDropAllSubscriptions() throws Exception
+   {
+      Connection connection_1 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      TopicSubscriber durableSubscriber_1 = JMSUtil.createDurableSubscriber(connection_1,
+                                                                            topic,
+                                                                            clientID,
+                                                                            subscriptionName);
+      Connection connection_2 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      TopicSubscriber durableSubscriber_2 = JMSUtil.createDurableSubscriber(connection_2,
+                                                                            topic,
+                                                                            clientID,
+                                                                            subscriptionName + "2");
+
+      assertEquals(2, proxy.retrieveAttributeValue("SubscriptionCount"));
+
+      durableSubscriber_1.close();
+      durableSubscriber_2.close();
+
+      assertEquals(2, proxy.retrieveAttributeValue("SubscriptionCount"));
+      proxy.invokeOperation("dropAllSubscriptions", null);
+
+      assertEquals(0, proxy.retrieveAttributeValue("SubscriptionCount"));
+
+      connection_1.close();
+      connection_2.close();
+   }
+
+   public void testRemoveAllMessages() throws Exception
+   {
+      Connection connection_1 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection_1, topic, clientID, subscriptionName);
+      Connection connection_2 = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+      JMSUtil.createDurableSubscriber(connection_2, topic, clientID, subscriptionName + "2");
+
+      JMSUtil.sendMessages(topic, 3);
+
+      assertEquals(3 * 2, proxy.retrieveAttributeValue("MessageCount"));
+
+      int removedCount = (Integer)proxy.invokeOperation("removeAllMessages", null);
+      assertEquals(3 * 2, removedCount);
+      assertEquals(0, proxy.retrieveAttributeValue("MessageCount"));
+
+      connection_1.close();
+      connection_2.close();
+   }
+
+   public void testListMessagesForSubscription() throws Exception
+   {
+      Connection connection = JMSUtil.createConnection(InVMConnectorFactory.class.getName());
+
+      JMSUtil.createDurableSubscriber(connection, topic, clientID, subscriptionName);
+
+      JMSUtil.sendMessages(topic, 3);
+
+      Object[] data = (Object[])proxy.invokeOperation("listMessagesForSubscription",
+                                                      JBossTopic.createQueueNameForDurableSubscription(clientID,
+                                                                                                       subscriptionName));
+      assertEquals(3, data.length);
+   }
+
+   public void testListMessagesForSubscriptionWithUnknownClientID() throws Exception
+   {
+      String unknownClientID = randomString();
+
+      try
+      {
+         proxy.invokeOperation("listMessagesForSubscription",
+                               JBossTopic.createQueueNameForDurableSubscription(unknownClientID, subscriptionName));
+         fail();
+      }
+      catch (Exception e)
+      {
+      }
+   }
+
+   public void testListMessagesForSubscriptionWithUnknownSubscription() throws Exception
+   {
+      String unknownSubscription = randomString();
+
+      try
+      {
+         proxy.invokeOperation("listMessagesForSubscription",
+                               JBossTopic.createQueueNameForDurableSubscription(clientID, unknownSubscription));
+         fail();
+      }
+      catch (Exception e)
+      {
+      }
+   }
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+
+      Configuration conf = new ConfigurationImpl();
+      conf.setSecurityEnabled(false);
+      conf.setJMXManagementEnabled(true);
+      conf.getAcceptorConfigurations()
+          .add(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMAcceptorFactory"));
+      server = Messaging.newMessagingServer(conf, mbeanServer, false);
+      server.start();
+
+      serverManager = new JMSServerManagerImpl(server);
+      serverManager.start();
+      serverManager.setContext(new NullInitialContext());
+      serverManager.activated();
+
+      clientID = randomString();
+      subscriptionName = randomString();
+
+      String topicName = randomString();
+      serverManager.createTopic(topicName, topicName);
+      topic = new JBossTopic(topicName);
+
+      JBossConnectionFactory cf = new JBossConnectionFactory(new TransportConfiguration(InVMConnectorFactory.class.getName()));
+      connection = cf.createQueueConnection();
+      session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
+      connection.start();
+
+      JBossQueue managementQueue = new JBossQueue(DEFAULT_MANAGEMENT_ADDRESS.toString(),
+                                                  DEFAULT_MANAGEMENT_ADDRESS.toString());
+      proxy = new JMSMessagingProxy(session, managementQueue, ResourceNames.JMS_TOPIC + topic.getTopicName());
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      connection.close();
+
+      server.stop();
+
+      super.tearDown();
+   }
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+
+}




More information about the jboss-cvs-commits mailing list