[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