[jboss-cvs] JBoss Messaging SVN: r5157 - in trunk: tests/src/org/jboss/messaging/tests/integration and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Oct 20 10:14:24 EDT 2008


Author: ataylor
Date: 2008-10-20 10:14:24 -0400 (Mon, 20 Oct 2008)
New Revision: 5157

Added:
   trunk/tests/src/org/jboss/messaging/tests/integration/consumer/
   trunk/tests/src/org/jboss/messaging/tests/integration/consumer/ConsumerTest.java
Modified:
   trunk/src/main/org/jboss/messaging/core/filter/impl/FilterImpl.java
   trunk/tests/src/org/jboss/messaging/tests/integration/cluster/MultiThreadRandomFailoverTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/filter/impl/FilterTest.java
Log:
added new tests and a fix for filter matching

Modified: trunk/src/main/org/jboss/messaging/core/filter/impl/FilterImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/filter/impl/FilterImpl.java	2008-10-20 13:20:14 UTC (rev 5156)
+++ trunk/src/main/org/jboss/messaging/core/filter/impl/FilterImpl.java	2008-10-20 14:14:24 UTC (rev 5157)
@@ -22,15 +22,15 @@
 
 package org.jboss.messaging.core.filter.impl;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.server.ServerMessage;
 import org.jboss.messaging.util.SimpleString;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
 * This class implements a JBoss Messaging filter
 * 
@@ -123,14 +123,12 @@
               
               if (val instanceof SimpleString)
               {
-                 val = ((SimpleString)val).toString();
+                 val = val.toString();
               }
            }
-           
-           if (val != null)
-           {
-              id.setValue(val);
-           }
+
+           id.setValue(val);
+
         }
         
         // Compute the result of this operator

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/MultiThreadRandomFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/MultiThreadRandomFailoverTest.java	2008-10-20 13:20:14 UTC (rev 5156)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/MultiThreadRandomFailoverTest.java	2008-10-20 14:14:24 UTC (rev 5157)
@@ -12,19 +12,7 @@
 
 package org.jboss.messaging.tests.integration.cluster;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
 import junit.framework.TestCase;
-
 import org.jboss.messaging.core.client.ClientConsumer;
 import org.jboss.messaging.core.client.ClientMessage;
 import org.jboss.messaging.core.client.ClientProducer;
@@ -47,6 +35,17 @@
 import org.jboss.messaging.jms.client.JBossTextMessage;
 import org.jboss.messaging.util.SimpleString;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
 /**
  * A MultiThreadRandomFailoverTest
  * 
@@ -1183,6 +1182,14 @@
    {
       log.info("************* Ending test " + this.getName());
 
+      if(liveService != null && liveService.isStarted())
+      {
+         liveService.stop();
+      }
+      if(backupService != null && backupService.isStarted())
+      {
+         backupService.stop();
+      }
       timer.cancel();
 
       super.tearDown();

Added: trunk/tests/src/org/jboss/messaging/tests/integration/consumer/ConsumerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/consumer/ConsumerTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/consumer/ConsumerTest.java	2008-10-20 14:14:24 UTC (rev 5157)
@@ -0,0 +1,364 @@
+/*
+ * 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.consumer;
+
+import org.jboss.messaging.core.client.ClientConsumer;
+import org.jboss.messaging.core.client.ClientMessage;
+import org.jboss.messaging.core.client.ClientProducer;
+import org.jboss.messaging.core.client.ClientSession;
+import org.jboss.messaging.core.client.ClientSessionFactory;
+import org.jboss.messaging.core.client.impl.ClientSessionFactoryImpl;
+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.server.MessagingService;
+import org.jboss.messaging.core.server.impl.MessagingServiceImpl;
+import org.jboss.messaging.jms.client.JBossTextMessage;
+import org.jboss.messaging.tests.util.UnitTestCase;
+import org.jboss.messaging.util.SimpleString;
+
+/**
+ * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ */
+public class ConsumerTest extends UnitTestCase
+{
+   private MessagingService messagingService;
+
+   private SimpleString QUEUE = new SimpleString("ConsumerTestQueue");
+
+   protected void setUp() throws Exception
+   {
+      Configuration conf = new ConfigurationImpl();
+
+      conf.setSecurityEnabled(false);
+
+      conf.getAcceptorConfigurations().add(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMAcceptorFactory"));
+
+      messagingService = MessagingServiceImpl.newNullStorageMessagingServer(conf);
+
+      messagingService.start();
+   }
+
+   protected void tearDown() throws Exception
+   {
+      messagingService.stop();
+
+      messagingService = null;
+   }
+
+   public void testSimpleConsumerBrowser() throws Exception
+   {
+
+      ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      ClientSession session = sf.createSession(false, true, true, false);
+
+      session.createQueue(QUEUE, QUEUE, null, false, false);
+
+      ClientProducer producer = session.createProducer(QUEUE);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = createMessage(session, "m" + i);
+         producer.send(message);
+      }
+
+      ClientConsumer consumer = session.createConsumer(QUEUE, null, false, true);
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+
+      consumer.close();
+
+      consumer = session.createConsumer(QUEUE, null, false, true);
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+
+      consumer.close();
+
+      session.close();
+
+
+   }
+
+   public void testConsumerBrowserWithSelector() throws Exception
+   {
+
+      ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      ClientSession session = sf.createSession(false, true, true, false);
+
+      session.createQueue(QUEUE, QUEUE, null, false, false);
+
+      ClientProducer producer = session.createProducer(QUEUE);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = createMessage(session, "m" + i);
+         message.putIntProperty(new SimpleString("x"), i);
+         producer.send(message);
+      }
+
+      ClientConsumer consumer = session.createConsumer(QUEUE, new SimpleString("x >= 50"), false, true);
+
+      for (int i = 50; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+
+      consumer.close();
+
+      consumer = session.createConsumer(QUEUE, null, false, true);
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+
+      consumer.close();
+
+      session.close();
+
+
+   }
+
+   public void testConsumerBrowserWithStringSelector() throws Exception
+   {
+
+      ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      ClientSession session = sf.createSession(false, true, true, false);
+
+      session.createQueue(QUEUE, QUEUE, null, false, false);
+
+      ClientProducer producer = session.createProducer(QUEUE);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = createMessage(session, "m" + i);
+         if(i % 2 == 0)
+         {
+            message.putStringProperty(new SimpleString("color"), new SimpleString("RED"));
+         }
+         producer.send(message);
+      }
+
+      ClientConsumer consumer = session.createConsumer(QUEUE, new SimpleString("color = 'RED'"), false, true);
+
+      for (int i = 0; i < numMessages; i+=2)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+
+      session.close();
+
+
+   }
+
+   public void testConsumerMultipleBrowser() throws Exception
+   {
+
+      ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      ClientSession session = sf.createSession(false, true, true, false);
+
+      session.createQueue(QUEUE, QUEUE, null, false, false);
+
+      ClientProducer producer = session.createProducer(QUEUE);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = createMessage(session, "m" + i);
+         producer.send(message);
+      }
+
+      ClientConsumer consumer = session.createConsumer(QUEUE, null, false, true);
+      ClientConsumer consumer2 = session.createConsumer(QUEUE, null, false, true);
+      ClientConsumer consumer3 = session.createConsumer(QUEUE, null, false, true);
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+         assertEquals("m" + i, message2.getBody().getString());
+         message2 = consumer2.receive(1000);
+         assertEquals("m" + i, message2.getBody().getString());
+         message2 = consumer3.receive(1000);
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+
+      session.close();
+
+
+   }
+
+   public void testConsumerMultipleBrowserWithSelector() throws Exception
+   {
+
+      ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      ClientSession session = sf.createSession(false, true, true, false);
+
+      session.createQueue(QUEUE, QUEUE, null, false, false);
+
+      ClientProducer producer = session.createProducer(QUEUE);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = createMessage(session, "m" + i);
+         message.putIntProperty(new SimpleString("x"), i);
+         producer.send(message);
+      }
+
+      ClientConsumer consumer = session.createConsumer(QUEUE, new SimpleString("x < 50"), false, true);
+      ClientConsumer consumer2 = session.createConsumer(QUEUE, new SimpleString("x >= 50"), false, true);
+      ClientConsumer consumer3 = session.createConsumer(QUEUE, null, false, true);
+
+      for (int i = 0; i < 50; i++)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+      for (int i = 50; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer2.receive(1000);
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer3.receive(1000);
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+
+      session.close();
+
+
+   }
+
+   public void testConsumerBrowserMessagesArentAcked() throws Exception
+   {
+
+      ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      ClientSession session = sf.createSession(false, true, true, false);
+
+      session.createQueue(QUEUE, QUEUE, null, false, false);
+
+      ClientProducer producer = session.createProducer(QUEUE);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = createMessage(session, "m" + i);
+         producer.send(message);
+      }
+
+      ClientConsumer consumer = session.createConsumer(QUEUE, null, false, true);
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+      //assert that all the messages are there and none have been acked
+      assertEquals(messagingService.getServer().getPostOffice().getBinding(QUEUE).getQueue().getDeliveringCount(), 0);
+      assertEquals(messagingService.getServer().getPostOffice().getBinding(QUEUE).getQueue().getMessageCount(), 100);
+
+      session.close();
+
+
+   }
+
+
+   public void testConsumerBrowserMessageAckDoesNothing() throws Exception
+   {
+
+      ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.core.remoting.impl.invm.InVMConnectorFactory"));
+
+      ClientSession session = sf.createSession(false, true, true, false);
+
+      session.createQueue(QUEUE, QUEUE, null, false, false);
+
+      ClientProducer producer = session.createProducer(QUEUE);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message = createMessage(session, "m" + i);
+         producer.send(message);
+      }
+
+      ClientConsumer consumer = session.createConsumer(QUEUE, null, false, true);
+
+      for (int i = 0; i < numMessages; i++)
+      {
+         ClientMessage message2 = consumer.receive(1000);
+
+         message2.acknowledge();
+
+         assertEquals("m" + i, message2.getBody().getString());
+      }
+      //assert that all the messages are there and none have been acked
+      assertEquals(messagingService.getServer().getPostOffice().getBinding(QUEUE).getQueue().getDeliveringCount(), 0);
+      assertEquals(messagingService.getServer().getPostOffice().getBinding(QUEUE).getQueue().getMessageCount(), 100);
+
+      session.close();
+
+
+   }
+
+   private ClientMessage createMessage(ClientSession session, String msg)
+   {
+      ClientMessage message = session.createClientMessage(JBossTextMessage.TYPE, false, 0,
+            System.currentTimeMillis(), (byte) 1);
+      message.getBody().putString(msg);
+      message.getBody().flip();
+      return message;
+   }
+}

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/filter/impl/FilterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/filter/impl/FilterTest.java	2008-10-20 13:20:14 UTC (rev 5156)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/filter/impl/FilterTest.java	2008-10-20 14:14:24 UTC (rev 5157)
@@ -23,7 +23,6 @@
 package org.jboss.messaging.tests.unit.core.filter.impl;
 
 import junit.framework.TestCase;
-
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.filter.impl.FilterImpl;
@@ -55,7 +54,18 @@
       
       message = new ServerMessageImpl();
    }
-     
+
+   public void testFilterForgets() throws Exception
+   {
+      filter = new FilterImpl(new SimpleString("color = 'RED'"));  
+
+      message.putStringProperty(new  SimpleString("color"), new SimpleString("RED"));
+      assertTrue(filter.match(message));
+      message = new ServerMessageImpl();
+      assertFalse(filter.match(message));
+   }
+
+
    public void testInvalidString() throws Exception
    {
       testInvalidFilter("invalid");




More information about the jboss-cvs-commits mailing list