[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