[jboss-cvs] JBoss Messaging SVN: r4572 - in trunk: tests/src/org/jboss/messaging/tests/unit/core/server/impl and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 24 12:22:39 EDT 2008


Author: ataylor
Date: 2008-06-24 12:22:38 -0400 (Tue, 24 Jun 2008)
New Revision: 4572

Added:
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerBrowserImplTest.java
Modified:
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerBrowserImpl.java
Log:
ServerBrowserImpl tests and tweaks

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerBrowserImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerBrowserImpl.java	2008-06-24 14:34:33 UTC (rev 4571)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerBrowserImpl.java	2008-06-24 16:22:38 UTC (rev 4572)
@@ -22,17 +22,6 @@
 
 package org.jboss.messaging.core.server.impl;
 
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.CLOSE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.NO_ID_SET;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.NULL;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_BROWSER_HASNEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_BROWSER_NEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_BROWSER_RESET;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.filter.impl.FilterImpl;
@@ -43,6 +32,7 @@
 import org.jboss.messaging.core.remoting.PacketHandler;
 import org.jboss.messaging.core.remoting.PacketReturner;
 import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
+import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.*;
 import org.jboss.messaging.core.remoting.impl.wireformat.ReceiveMessage;
 import org.jboss.messaging.core.remoting.impl.wireformat.SessionBrowserHasNextMessageResponseMessage;
 import org.jboss.messaging.core.server.MessageReference;
@@ -51,6 +41,10 @@
 import org.jboss.messaging.core.server.ServerSession;
 import org.jboss.messaging.util.SimpleString;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
  * Concrete implementation of BrowserEndpoint.
  * 
@@ -80,7 +74,7 @@
 
    public ServerBrowserImpl(final ServerSession session,
                             final Queue destination, final String messageFilter,
-                            final PacketDispatcher dispatcher) throws Exception
+                            final PacketDispatcher dispatcher) throws MessagingException
    {     
       this.session = session;
       

Added: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerBrowserImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerBrowserImplTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerBrowserImplTest.java	2008-06-24 16:22:38 UTC (rev 4572)
@@ -0,0 +1,398 @@
+/*
+ * 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.unit.core.server.impl;
+
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
+import org.jboss.messaging.core.exception.MessagingException;
+import org.jboss.messaging.core.message.Message;
+import org.jboss.messaging.core.remoting.Packet;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.PacketReturner;
+import org.jboss.messaging.core.remoting.impl.wireformat.MessagingExceptionMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
+import org.jboss.messaging.core.remoting.impl.wireformat.ReceiveMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.SessionBrowserHasNextMessageResponseMessage;
+import org.jboss.messaging.core.server.MessageReference;
+import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.server.ServerMessage;
+import org.jboss.messaging.core.server.ServerSession;
+import org.jboss.messaging.core.server.impl.ServerBrowserImpl;
+import org.jboss.messaging.tests.util.UnitTestCase;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class ServerBrowserImplTest extends UnitTestCase
+{
+   public void testConstructor() throws Exception
+   {
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.replay(session, destination, dispatcher);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      EasyMock.verify(session, destination, dispatcher);
+      assertEquals(999l, browser.getID());
+   }
+
+   public void testConstructorWithValidFilter() throws Exception
+   {
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      String messageFilter = "myproperty='this'";
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.replay(session, destination, dispatcher);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      EasyMock.verify(session, destination, dispatcher);
+      assertEquals(999l, browser.getID());
+   }
+
+   public void testConstructorWithInValidFilter() throws Exception
+   {
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      String messageFilter = "this is a rubbish filter";
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.replay(session, destination, dispatcher);
+      ServerBrowserImpl browser = null;
+      try
+      {
+         browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+         fail("should throw exception");
+      }
+      catch (MessagingException e)
+      {
+         assertEquals(e.getCode(), MessagingException.INVALID_FILTER_EXPRESSION);
+      }
+      EasyMock.verify(session, destination, dispatcher);
+   }
+
+   public void testClose() throws Exception
+   {
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.replay(session, destination, dispatcher);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      EasyMock.reset(session);
+      session.removeBrowser(browser);
+      EasyMock.replay(session);
+      browser.close();
+      EasyMock.verify(session, destination, dispatcher);
+      assertEquals(999l, browser.getID());
+   }
+
+   public void testNextMessage() throws Exception
+   {
+      List<MessageReference> refs = setupList();
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      EasyMock.expect(destination.list(null)).andReturn(refs);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.replay(session, destination, dispatcher);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      for (MessageReference ref : refs)
+      {
+         assertTrue(browser.hasNextMessage());
+         assertEquals(browser.nextMessage(), ref.getMessage());
+      }
+      EasyMock.verify(session, destination, dispatcher);
+   }
+
+   public void testReset() throws Exception
+   {
+      List<MessageReference> refs = setupList();
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      EasyMock.expect(destination.list(null)).andStubReturn(refs);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.replay(session, destination, dispatcher);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      for (MessageReference ref : refs)
+      {
+         assertTrue(browser.hasNextMessage());
+         assertEquals(browser.nextMessage(), ref.getMessage());
+      }
+      browser.reset();
+      for (MessageReference ref : refs)
+      {
+         assertTrue(browser.hasNextMessage());
+         assertEquals(browser.nextMessage(), ref.getMessage());
+      }
+      EasyMock.verify(session, destination, dispatcher);
+   }
+
+   public void testNextBlock() throws Exception
+   {
+      List<MessageReference> refs = setupList();
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      EasyMock.expect(destination.list(null)).andReturn(refs);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.replay(session, destination, dispatcher);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      Message[] messages = browser.nextMessageBlock(2);
+      Message[] messages2 = browser.nextMessageBlock(3);
+      assertEquals(messages.length, 2);
+      assertEquals(messages2.length, 3);
+      assertEquals(messages[0], refs.get(0).getMessage());
+      assertEquals(messages[1], refs.get(1).getMessage());
+      assertEquals(messages2[0], refs.get(2).getMessage());
+      assertEquals(messages2[1], refs.get(3).getMessage());
+      assertEquals(messages2[2], refs.get(4).getMessage());
+      EasyMock.verify(session, destination, dispatcher);
+   }
+
+
+   public void testNextBlockWithOneThrowsException() throws Exception
+   {
+      List<MessageReference> refs = setupList();
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      EasyMock.expect(destination.list(null)).andReturn(refs);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.replay(session, destination, dispatcher);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      Message[] messages = browser.nextMessageBlock(2);
+      try
+      {
+         browser.nextMessageBlock(1);
+         fail("should throw exception");
+      }
+      catch (IllegalArgumentException e)
+      {
+         //pass
+      }
+      assertEquals(messages.length, 2);
+      assertEquals(messages[0], refs.get(0).getMessage());
+      assertEquals(messages[1], refs.get(1).getMessage());
+      EasyMock.verify(session, destination, dispatcher);
+   }
+
+   public void testCloseDoHandle() throws Exception
+   {
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      Packet packet = EasyMock.createStrictMock(Packet.class);
+      PacketReturner packetReturner = EasyMock.createStrictMock(PacketReturner.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.expect(packet.getType()).andReturn(PacketImpl.CLOSE);
+      EasyMock.expect(packet.getResponseTargetID()).andStubReturn(1l);
+      packetReturner.send((Packet) EasyMock.anyObject()) ;
+      EasyMock.replay(session, destination, dispatcher, packet, packetReturner);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      EasyMock.reset(session);
+      session.removeBrowser(browser);
+      EasyMock.replay(session);
+      PacketHandler handler = browser.newHandler();
+      handler.handle(packet, packetReturner);
+      EasyMock.verify(session, destination, dispatcher);
+      assertEquals(999l, browser.getID());
+   }
+
+   public void testHasNextMessageDoHandle() throws Exception
+   {
+      final List<MessageReference> refs = setupList();
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      EasyMock.expect(destination.list(null)).andStubReturn(refs);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      Packet packet = EasyMock.createStrictMock(Packet.class);
+      PacketReturner packetReturner = EasyMock.createStrictMock(PacketReturner.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.expect(packet.getType()).andReturn(PacketImpl.SESS_BROWSER_HASNEXTMESSAGE);
+      EasyMock.expect(packet.getResponseTargetID()).andStubReturn(1l);
+      packetReturner.send((Packet) EasyMock.anyObject()) ;
+      EasyMock.expectLastCall().andAnswer(new IAnswer<Object>()
+      {
+         public Object answer() throws Throwable
+         {
+            SessionBrowserHasNextMessageResponseMessage resp = (SessionBrowserHasNextMessageResponseMessage) EasyMock.getCurrentArguments()[0];
+            assertEquals(resp.hasNext(), true);
+            return null;
+         }
+      });
+      EasyMock.replay(session, destination, dispatcher, packet, packetReturner);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      PacketHandler handler = browser.newHandler();
+      handler.handle(packet, packetReturner);
+      EasyMock.verify(session, destination, dispatcher);
+      assertEquals(999l, handler.getID());
+   }
+
+   public void testNextMessageDoHandle() throws Exception
+   {
+      final List<MessageReference> refs = setupList();
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      EasyMock.expect(destination.list(null)).andStubReturn(refs);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      Packet packet = EasyMock.createStrictMock(Packet.class);
+      PacketReturner packetReturner = EasyMock.createStrictMock(PacketReturner.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.expect(packet.getType()).andReturn(PacketImpl.SESS_BROWSER_NEXTMESSAGE);
+      EasyMock.expect(packet.getResponseTargetID()).andStubReturn(1l);
+      packetReturner.send((Packet) EasyMock.anyObject()) ;
+      EasyMock.expectLastCall().andAnswer(new IAnswer<Object>()
+      {
+         public Object answer() throws Throwable
+         {
+            ReceiveMessage resp = (ReceiveMessage) EasyMock.getCurrentArguments()[0];
+            assertEquals(resp.getServerMessage(), refs.get(0).getMessage());
+            return null;
+         }
+      });
+      EasyMock.replay(session, destination, dispatcher, packet, packetReturner);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      PacketHandler handler = browser.newHandler();
+      handler.handle(packet, packetReturner);
+      EasyMock.verify(session, destination, dispatcher);
+      assertEquals(999l, browser.getID());
+   }
+
+   public void testResetDoHandle() throws Exception
+   {
+      final List<MessageReference> refs = setupList();
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      EasyMock.expect(destination.list(null)).andStubReturn(refs);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      Packet packet = EasyMock.createStrictMock(Packet.class);
+      PacketReturner packetReturner = EasyMock.createStrictMock(PacketReturner.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.expect(packet.getType()).andReturn(PacketImpl.SESS_BROWSER_NEXTMESSAGE);
+      EasyMock.expect(packet.getResponseTargetID()).andStubReturn(1l);
+      EasyMock.expect(packet.getType()).andReturn(PacketImpl.SESS_BROWSER_RESET);
+      EasyMock.expect(packet.getType()).andReturn(PacketImpl.SESS_BROWSER_NEXTMESSAGE);
+      packetReturner.send((Packet) EasyMock.anyObject()) ;
+      EasyMock.expectLastCall().andAnswer(new IAnswer<Object>()
+      {
+         public Object answer() throws Throwable
+         {
+            ReceiveMessage resp = (ReceiveMessage) EasyMock.getCurrentArguments()[0];
+            assertEquals(resp.getServerMessage(), refs.get(0).getMessage());
+            return null;
+         }
+      });
+      packetReturner.send((Packet) EasyMock.anyObject()) ;
+      packetReturner.send((Packet) EasyMock.anyObject()) ;
+      EasyMock.expectLastCall().andAnswer(new IAnswer<Object>()
+      {
+         public Object answer() throws Throwable
+         {
+            ReceiveMessage resp = (ReceiveMessage) EasyMock.getCurrentArguments()[0];
+            assertEquals(resp.getServerMessage(), refs.get(0).getMessage());
+            return null;
+         }
+      });
+      EasyMock.replay(session, destination, dispatcher, packet, packetReturner);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      PacketHandler handler = browser.newHandler();
+      handler.handle(packet, packetReturner);
+      handler.handle(packet, packetReturner);
+      handler.handle(packet, packetReturner);
+      EasyMock.verify(session, destination, dispatcher, packet, packetReturner);
+      assertEquals(999l, browser.getID());
+   }
+
+   public void testUnhandledDoHandle() throws Exception
+   {
+      ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+      Queue destination = EasyMock.createStrictMock(Queue.class);
+      String messageFilter = null;
+      PacketDispatcher dispatcher = EasyMock.createStrictMock(PacketDispatcher.class);
+      Packet packet = EasyMock.createStrictMock(Packet.class);
+      PacketReturner packetReturner = EasyMock.createStrictMock(PacketReturner.class);
+      EasyMock.expect(dispatcher.generateID()).andReturn(999l);
+      EasyMock.expect(packet.getType()).andReturn(Byte.MAX_VALUE);
+      EasyMock.expect(packet.getResponseTargetID()).andStubReturn(1l);
+      packetReturner.send((Packet) EasyMock.anyObject()) ;
+      EasyMock.expectLastCall().andAnswer(new IAnswer<Object>()
+      {
+         public Object answer() throws Throwable
+         {
+            MessagingExceptionMessage message = (MessagingExceptionMessage) EasyMock.getCurrentArguments()[0];
+            assertEquals(message.getException().getCode(), MessagingException.UNSUPPORTED_PACKET);
+            return null;
+         }
+      });
+      EasyMock.replay(session, destination, dispatcher, packet, packetReturner);
+      ServerBrowserImpl browser = new ServerBrowserImpl(session, destination, messageFilter, dispatcher);
+      PacketHandler handler = browser.newHandler();
+
+      handler.handle(packet, packetReturner);
+      EasyMock.verify(session, destination, dispatcher);
+      assertEquals(999l, browser.getID());
+   }
+
+   private List<MessageReference> setupList()
+   {
+      ServerMessage serverMessage1 = EasyMock.createStrictMock(ServerMessage.class);
+      ServerMessage serverMessage2 = EasyMock.createStrictMock(ServerMessage.class);
+      ServerMessage serverMessage3 = EasyMock.createStrictMock(ServerMessage.class);
+      ServerMessage serverMessage4 = EasyMock.createStrictMock(ServerMessage.class);
+      ServerMessage serverMessage5 = EasyMock.createStrictMock(ServerMessage.class);
+      MessageReference reference1 = EasyMock.createStrictMock(MessageReference.class);
+      MessageReference reference2 = EasyMock.createStrictMock(MessageReference.class);
+      MessageReference reference3 = EasyMock.createStrictMock(MessageReference.class);
+      MessageReference reference4 = EasyMock.createStrictMock(MessageReference.class);
+      MessageReference reference5 = EasyMock.createStrictMock(MessageReference.class);
+      List<MessageReference> refs = new ArrayList<MessageReference>();
+      refs.add(reference1);
+      refs.add(reference2);
+      refs.add(reference3);
+      refs.add(reference4);
+      refs.add(reference5);
+      EasyMock.expect(reference1.getMessage()).andStubReturn(serverMessage1);
+      EasyMock.expect(reference2.getMessage()).andStubReturn(serverMessage2);
+      EasyMock.expect(reference3.getMessage()).andStubReturn(serverMessage3);
+      EasyMock.expect(reference4.getMessage()).andStubReturn(serverMessage4);
+      EasyMock.expect(reference5.getMessage()).andStubReturn(serverMessage5);
+      EasyMock.replay(reference1, reference2, reference3, reference4, reference5);
+      return refs;
+   }
+}




More information about the jboss-cvs-commits mailing list