[jboss-cvs] JBoss Messaging SVN: r3395 - in branches/Branch_JBMESSAGING-544: tests/src/org/jboss/test/messaging/core/remoting and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Dec 3 05:15:23 EST 2007


Author: jmesnil
Date: 2007-12-03 05:15:22 -0500 (Mon, 03 Dec 2007)
New Revision: 3395

Added:
   branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReversePacketHandler.java
   branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestPacketHandler.java
Modified:
   branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Client.java
   branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/RemoteDispatcherTest.java
   branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReverseServerHandler.java
   branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TargetHandlerTest.java
   branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestSupport.java
Log:
http://jira.jboss.org/jira/browse/JBMESSAGING-544 Replace client-server transport with NIO based transport
* refactored tests to get rid of Thread.sleep and replace them by CountdownLatch when testing async operations

Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Client.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Client.java	2007-12-03 10:13:09 UTC (rev 3394)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/Client.java	2007-12-03 10:15:22 UTC (rev 3395)
@@ -137,17 +137,6 @@
       session.write(packet);
    }
 
-   public void sendOneWay(AbstractPacket packet, PacketHandler callbackHandler)
-   {
-      assert packet != null;
-      assert callbackHandler != null;
-      checkConnected();
-
-      PacketDispatcher.client.register(callbackHandler);
-      packet.setCallbackID(callbackHandler.getID());
-      session.write(packet);
-   }
-
    public AbstractPacket sendBlocking(AbstractPacket packet)
          throws TimeoutException
    {

Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/RemoteDispatcherTest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/RemoteDispatcherTest.java	2007-12-03 10:13:09 UTC (rev 3394)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/RemoteDispatcherTest.java	2007-12-03 10:15:22 UTC (rev 3395)
@@ -9,13 +9,11 @@
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeoutException;
 
-import org.jboss.messaging.core.remoting.AbstractPacketHandler;
 import org.jboss.messaging.core.remoting.Client;
-import org.jboss.messaging.core.remoting.PacketSender;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
 import org.jboss.messaging.core.remoting.wireformat.NullPacket;
 import org.jboss.messaging.core.remoting.wireformat.TextPacket;
@@ -53,11 +51,13 @@
 
    public void testSendOneWay() throws Exception
    {
+      serverHandler.expectMessage(1);
+
       TextPacket packet = new TextPacket("testSendOneWay");
       packet.setVersion((byte)1);
       client.sendOneWay(packet);
 
-      Thread.sleep(300);
+      serverHandler.await();
 
       List<AbstractPacket> messages = serverHandler.getPackets();
       assertEquals(1, messages.size());
@@ -67,6 +67,8 @@
 
    public void testSendManyOneWay() throws Exception
    {
+      serverHandler.expectMessage(MANY_MESSAGES);
+      
       TextPacket[] packets = new TextPacket[MANY_MESSAGES];
       for (int i = 0; i < MANY_MESSAGES; i++)
       {
@@ -75,12 +77,9 @@
          client.sendOneWay(packets[i]);
       }
 
+      serverHandler.await();
+      
       List<AbstractPacket> receivedPackets = serverHandler.getPackets();
-      // unlikely that all messages have been consumed
-      assertNotSame(MANY_MESSAGES, receivedPackets.size());
-
-      Thread.sleep(2 * 1000);
-
       assertEquals(MANY_MESSAGES, receivedPackets.size());
       for (int i = 0; i < MANY_MESSAGES; i++)
       {
@@ -93,17 +92,20 @@
    {
       // add some lag
       serverHandler.setSleepTime(300, MILLISECONDS);
+      
+      TestPacketHandler callbackHandler = new TestPacketHandler();
+      callbackHandler.expectMessage(1);
 
-      TestClientHandler callbackHandler = new TestClientHandler();
-
+      PacketDispatcher.client.register(callbackHandler);
+      
       TextPacket packet = new TextPacket("testSendOneWayWithCallbackHandler");
       packet.setVersion((byte)1);
+      packet.setCallbackID(callbackHandler.getID());
+      
+      client.sendOneWay(packet);
 
-      client.sendOneWay(packet, callbackHandler);
-      assertEquals(0, callbackHandler.getPackets().size());
+      callbackHandler.await();
 
-      Thread.sleep(600);
-
       assertEquals(1, callbackHandler.getPackets().size());
       String response = callbackHandler.getPackets().get(0).getText();
       assertEquals(reverse(packet.getText()), response);
@@ -124,8 +126,8 @@
 
    public void testSendBlockingWithTimeout() throws Exception
    {
-      client.setBlockingRequestTimeout(5, SECONDS);
-      serverHandler.setSleepTime(7, SECONDS);
+      client.setBlockingRequestTimeout(1, SECONDS);
+      serverHandler.setSleepTime(2, SECONDS);
       
       AbstractPacket packet = new TextPacket("testSendBlockingWithTimeout");
       packet.setVersion((byte)1);
@@ -154,32 +156,4 @@
       client.disconnect();
       serverAcceptor.unbind();
    }
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   // Inner classes -------------------------------------------------
-
-   private final class TestClientHandler extends AbstractPacketHandler
-   {
-      private final List<TextPacket> packets;
-
-      private TestClientHandler()
-      {
-         packets = new ArrayList<TextPacket>();
-      }
-
-      public void handle(AbstractPacket packet, PacketSender replier)
-      {
-         packets.add((TextPacket) packet);
-      }
-
-      public List<TextPacket> getPackets()
-      {
-         return packets;
-      }
-   }
 }

Added: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReversePacketHandler.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReversePacketHandler.java	                        (rev 0)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReversePacketHandler.java	2007-12-03 10:15:22 UTC (rev 3395)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.test.messaging.core.remoting;
+
+import static org.jboss.test.messaging.core.remoting.TestSupport.reverse;
+import junit.framework.Assert;
+
+import org.jboss.messaging.core.remoting.PacketSender;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.TextPacket;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class ReversePacketHandler extends TestPacketHandler
+{
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   // TestPacketHandler overrides ---------------------------------------------------
+
+   @Override
+   protected void doHandle(AbstractPacket packet, PacketSender sender)
+   {
+      Assert.assertTrue(packet instanceof TextPacket);
+      
+      TextPacket request = (TextPacket) packet;
+      TextPacket response = new TextPacket(reverse(request.getText()));
+      response.normalize(request);
+      
+      sender.send(response);
+   }
+   
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}

Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReverseServerHandler.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReverseServerHandler.java	2007-12-03 10:13:09 UTC (rev 3394)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/ReverseServerHandler.java	2007-12-03 10:15:22 UTC (rev 3395)
@@ -13,6 +13,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.mina.common.IoHandlerAdapter;
@@ -41,6 +42,8 @@
 
    private TransportType transport;
 
+   private CountDownLatch latch;
+
    // Static --------------------------------------------------------
 
    // Constructors --------------------------------------------------
@@ -72,6 +75,14 @@
    @Override
    public void messageReceived(IoSession session, Object msg)
    {
+      try
+      {
+         Thread.sleep(sleepTime);
+      } catch (InterruptedException e)
+      {
+         e.printStackTrace();
+      }
+
       packets.add((AbstractPacket) msg);
 
       // TODO put this logic in the real server handler
@@ -86,23 +97,20 @@
          TextPacket incomingPacket = (TextPacket) msg;
          if (mustReply(incomingPacket))
          {
-            try
+            TextPacket p = new TextPacket(reverse(incomingPacket.getText()));
+            p.setCorrelationID(incomingPacket.getCorrelationID());
+            p.setVersion(incomingPacket.getVersion());
+            if (!NO_ID_SET.equals(incomingPacket.getCallbackID()))
             {
-               Thread.sleep(sleepTime);
-               TextPacket p = new TextPacket(reverse(incomingPacket.getText()));
-               p.setCorrelationID(incomingPacket.getCorrelationID());
-               p.setVersion(incomingPacket.getVersion());
-               if (!NO_ID_SET.equals(incomingPacket.getCallbackID()))
-               {
-                  p.setTargetID(incomingPacket.getCallbackID());
-               }
-               session.write(p);
-            } catch (InterruptedException e)
-            {
-               e.printStackTrace();
+               p.setTargetID(incomingPacket.getCallbackID());
             }
+            session.write(p);
          }
       }
+
+      if (latch != null)
+         latch.countDown();
+      
    }
 
    @Override
@@ -131,6 +139,19 @@
       return mustReply;
    }
 
+   public void await() throws InterruptedException
+   {
+      latch.await();
+   }
+
+   /**
+    * @param manyMessages
+    */
+   public void expectMessage(int count)
+   {
+      latch = new CountDownLatch(count);
+   }
+
    // Inner classes -------------------------------------------------
 
 }
\ No newline at end of file

Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TargetHandlerTest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TargetHandlerTest.java	2007-12-03 10:13:09 UTC (rev 3394)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TargetHandlerTest.java	2007-12-03 10:15:22 UTC (rev 3395)
@@ -36,9 +36,11 @@
 
    public void testClientHandlePacketSentByServer() throws Exception
    {
-      ClientTargetHandler targetHandler = new ClientTargetHandler();
+      TestPacketHandler clientHandler = new TestPacketHandler();      
+      PacketDispatcher.client.register(clientHandler);
 
-      PacketDispatcher.client.register(targetHandler);
+      serverHandler.expectMessage(1);
+      clientHandler.expectMessage(1);
 
       TextPacket packet = new TextPacket(
       "testClientHandlePacketSentByServer from client");
@@ -46,19 +48,19 @@
       // send a packet to create the IoSession on the server
       client.sendOneWay(packet);
 
-      Thread.sleep(300);
-
+      serverHandler.await();
+      
       assertEquals(1, serverHandler.getSessions().size());
       IoSession serverSession = serverHandler.getSessions().get(0);
       TextPacket packetFromServer = new TextPacket(
             "testClientHandlePacketSentByServer from server");
       packetFromServer.setVersion((byte)1);
-      packetFromServer.setTargetID(targetHandler.getID());
+      packetFromServer.setTargetID(clientHandler.getID());
       serverSession.write(packetFromServer);
 
-      Thread.sleep(300);
+      clientHandler.await();
 
-      List<TextPacket> packets = targetHandler.getPackets();
+      List<TextPacket> packets = clientHandler.getPackets();
       assertEquals(1, packets.size());
       TextPacket packetReceivedByClient = (TextPacket) packets.get(0);
       assertEquals(packetFromServer.getText(), packetReceivedByClient.getText());

Added: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestPacketHandler.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestPacketHandler.java	                        (rev 0)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestPacketHandler.java	2007-12-03 10:15:22 UTC (rev 3395)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.test.messaging.core.remoting;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+import org.jboss.messaging.core.remoting.AbstractPacketHandler;
+import org.jboss.messaging.core.remoting.PacketSender;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.TextPacket;
+
+class TestPacketHandler extends AbstractPacketHandler
+{
+   private final List<TextPacket> packets;
+   private CountDownLatch latch;
+
+   TestPacketHandler()
+   {
+      packets = new ArrayList<TextPacket>();
+   }
+
+   public void await() throws InterruptedException
+   {
+     if (latch != null)
+        latch.await();
+   }
+
+   public void expectMessage(int count)
+   {
+      this.latch = new CountDownLatch(count);
+   }
+
+   public void handle(AbstractPacket packet, PacketSender sender)
+   {
+      packets.add((TextPacket) packet);
+      
+      if (latch != null)
+         latch.countDown();
+      
+      doHandle(packet, sender);
+   }
+   
+   protected void doHandle(AbstractPacket packet, PacketSender sender)
+   {
+   }
+
+   public List<TextPacket> getPackets()
+   {
+      return packets;
+   }
+}
\ No newline at end of file

Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestSupport.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestSupport.java	2007-12-03 10:13:09 UTC (rev 3394)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/TestSupport.java	2007-12-03 10:15:22 UTC (rev 3395)
@@ -19,8 +19,10 @@
 import org.apache.mina.filter.logging.MdcInjectionFilter;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.jboss.messaging.core.remoting.Client;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.TransportType;
 import org.jboss.messaging.core.remoting.codec.PacketCodecFactory;
+import org.jboss.test.messaging.tools.container.ServiceContainer;
 
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
@@ -44,6 +46,8 @@
    NioSocketAcceptor serverAcceptor;
 
    ReverseServerHandler serverHandler;
+   
+   ReversePacketHandler serverPacketHandler = new ReversePacketHandler();
 
    Client client;
 
@@ -77,6 +81,7 @@
    void startServer(int port, TransportType transport) throws Exception
    {
       startServer(port, transport, false);
+      PacketDispatcher.server.register(serverPacketHandler);
    }
 
    void startServer(int port, TransportType transport, boolean useSSL)




More information about the jboss-cvs-commits mailing list