[jboss-cvs] JBoss Messaging SVN: r3498 - in trunk: src/main/org/jboss/jms/client/remoting and 12 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Dec 13 05:12:39 EST 2007
Author: jmesnil
Date: 2007-12-13 05:12:39 -0500 (Thu, 13 Dec 2007)
New Revision: 3498
Added:
trunk/src/main/org/jboss/messaging/core/remoting/impl/
trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/
trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/INVMConnector.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/INVMSession.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/
trunk/tests/src/org/jboss/messaging/core/remoting/impl/ClientTestBase.java
trunk/tests/src/org/jboss/messaging/core/remoting/impl/invm/
trunk/tests/src/org/jboss/messaging/core/remoting/impl/invm/test/
trunk/tests/src/org/jboss/messaging/core/remoting/impl/invm/test/unit/
trunk/tests/src/org/jboss/messaging/core/remoting/impl/invm/test/unit/INVMClientTest.java
Removed:
trunk/src/main/org/jboss/messaging/core/remoting/integration/
trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/TargetHandlerTest.java
Modified:
trunk/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java
trunk/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java
trunk/src/main/org/jboss/jms/server/ServerPeer.java
trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java
trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryDeployer.java
trunk/src/main/org/jboss/messaging/core/remoting/TransportType.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/FilterChainSupport.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaHandler.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaInspector.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaPacketCodec.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaSession.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/PacketCodecFactory.java
trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaHandlerTest.java
trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaInspectorTest.java
trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaRemotingBufferTest.java
trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/TestSupport.java
trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java
Log:
http://jira.jboss.org/jira/browse/JBMESSAGING-1195 - Optimize in-vm communication
* added invm connector and session implementation in org.jboss.messaging.core.remoting.impl.invm
* moved mina code to org.jboss.messaging.core.remoting.impl.mina
* extracted a ClientTestBase superclass from MinaClientTest and added another subclass INVMClientTest
Modified: trunk/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -36,7 +36,7 @@
import org.jboss.jms.delegate.TopologyResult;
import org.jboss.jms.exception.MessagingNetworkFailureException;
import org.jboss.messaging.core.remoting.Client;
-import org.jboss.messaging.core.remoting.integration.MinaConnector;
+import org.jboss.messaging.core.remoting.impl.mina.MinaConnector;
import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
import org.jboss.messaging.core.remoting.wireformat.GetClientAOPStackRequest;
Modified: trunk/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -24,7 +24,7 @@
import org.jboss.logging.Logger;
import org.jboss.messaging.core.remoting.Client;
import org.jboss.messaging.core.remoting.TransportType;
-import org.jboss.messaging.core.remoting.integration.MinaConnector;
+import org.jboss.messaging.core.remoting.impl.mina.MinaConnector;
/**
* Encapsulates the state and behaviour from MINA needed for a JMS connection.
Modified: trunk/src/main/org/jboss/jms/server/ServerPeer.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/ServerPeer.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/jms/server/ServerPeer.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -62,7 +62,7 @@
import org.jboss.messaging.core.impl.memory.SimpleMemoryManager;
import org.jboss.messaging.core.impl.postoffice.MessagingPostOffice;
import org.jboss.messaging.core.impl.tx.TransactionRepository;
-import org.jboss.messaging.core.remoting.integration.MinaService;
+import org.jboss.messaging.core.remoting.impl.mina.MinaService;
import org.jboss.messaging.util.ExceptionUtil;
import org.jboss.messaging.util.Version;
Modified: trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -15,7 +15,7 @@
import org.jboss.jms.server.ConnectorManager;
import org.jboss.jms.server.ServerPeer;
import org.jboss.logging.Logger;
-import org.jboss.messaging.core.remoting.integration.MinaService;
+import org.jboss.messaging.core.remoting.impl.mina.MinaService;
import org.jboss.messaging.util.ExceptionUtil;
/**
Modified: trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryDeployer.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryDeployer.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryDeployer.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -26,7 +26,7 @@
import java.util.List;
import org.jboss.jms.server.ServerPeer;
-import org.jboss.messaging.core.remoting.integration.MinaService;
+import org.jboss.messaging.core.remoting.impl.mina.MinaService;
import org.jboss.messaging.util.XMLUtil;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
Modified: trunk/src/main/org/jboss/messaging/core/remoting/TransportType.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/TransportType.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/TransportType.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -15,5 +15,5 @@
*/
public enum TransportType
{
- TCP, HTTP;
+ TCP, HTTP, INVM;
}
Added: trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/INVMConnector.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/INVMConnector.java (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/INVMConnector.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -0,0 +1,86 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.impl.invm;
+
+import java.io.IOException;
+
+import org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener;
+import org.jboss.messaging.core.remoting.NIOConnector;
+import org.jboss.messaging.core.remoting.NIOSession;
+import org.jboss.messaging.core.remoting.TransportType;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class INVMConnector implements NIOConnector
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private String host;
+
+ private INVMSession session;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ // Public --------------------------------------------------------
+
+ // NIOConnector implementation -----------------------------------
+
+ public NIOSession connect(String host, int port, TransportType transport)
+ throws IOException
+ {
+ assert host != null;
+ assert transport == TransportType.INVM;
+
+ this.host = host;
+ this.session = new INVMSession();
+ return session;
+ }
+
+ public boolean disconnect()
+ {
+ if (session == null)
+ {
+ return false;
+ } else
+ {
+ boolean closed = session.close();
+ session = null;
+ return closed;
+ }
+ }
+
+ public String getServerURI()
+ {
+ return "invm://" + host;
+ }
+
+ public void removeConnectionListener(
+ ConsolidatedRemotingConnectionListener listener)
+ {
+ }
+
+ public void addConnectionListener(
+ ConsolidatedRemotingConnectionListener listener)
+ {
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/INVMSession.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/INVMSession.java (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/invm/INVMSession.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -0,0 +1,134 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.impl.invm;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import org.jboss.messaging.core.remoting.NIOSession;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketSender;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class INVMSession implements NIOSession
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private long id;
+ private ExecutorService executor;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public INVMSession()
+ {
+ // FIXME have a real ID
+ this.id = System.currentTimeMillis();
+ this.executor = Executors.newSingleThreadExecutor();
+ }
+
+ // Public --------------------------------------------------------
+
+ public boolean close()
+ {
+ if (executor.isShutdown())
+ return true;
+ executor.shutdown();
+ return true;
+ }
+
+ // NIOSession implementation -------------------------------------
+
+ public long getID()
+ {
+ return id;
+ }
+
+ public boolean isConnected()
+ {
+ return true;
+ }
+
+ public void write(final Object object)
+ {
+ assert object instanceof AbstractPacket;
+
+ PacketDispatcher.server.dispatch((AbstractPacket) object,
+ new PacketSender()
+ {
+
+ public void send(AbstractPacket response)
+ {
+ PacketDispatcher.client.dispatch(response, null);
+ }
+ });
+ }
+
+ public Object writeAndBlock(long requestID, final Object request,
+ long timeout, TimeUnit timeUnit) throws Throwable
+ {
+ assert request instanceof AbstractPacket;
+
+ Future<AbstractPacket> future = executor
+ .submit(new PacketDispatcherCallable((AbstractPacket) request));
+ return future.get(timeout, timeUnit);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+
+ private final class PacketDispatcherCallable implements
+ Callable<AbstractPacket>
+ {
+ private final AbstractPacket packet;
+
+ private PacketDispatcherCallable(AbstractPacket packet)
+ {
+ this.packet = packet;
+ }
+
+ public AbstractPacket call() throws Exception
+ {
+ final CountDownLatch latch = new CountDownLatch(1);
+ final AbstractPacket[] responses = new AbstractPacket[1];
+
+ PacketDispatcher.server.dispatch((AbstractPacket) packet,
+ new PacketSender()
+ {
+ public void send(AbstractPacket response)
+ {
+ responses[0] = response;
+ latch.countDown();
+ }
+ });
+
+ latch.await();
+
+ assert responses[0] != null;
+
+ return responses[0];
+ }
+ }
+}
Copied: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina (from rev 3497, trunk/src/main/org/jboss/messaging/core/remoting/integration)
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/FilterChainSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/integration/FilterChainSupport.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/FilterChainSupport.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -4,7 +4,7 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.messaging.core.remoting.integration;
+package org.jboss.messaging.core.remoting.impl.mina;
import static org.apache.mina.filter.logging.LogLevel.TRACE;
import static org.apache.mina.filter.logging.LogLevel.WARN;
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/integration/MinaConnector.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -4,12 +4,12 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.messaging.core.remoting.integration;
+package org.jboss.messaging.core.remoting.impl.mina;
-import static org.jboss.messaging.core.remoting.integration.FilterChainSupport.addBlockingRequestResponseFilter;
-import static org.jboss.messaging.core.remoting.integration.FilterChainSupport.addCodecFilter;
-import static org.jboss.messaging.core.remoting.integration.FilterChainSupport.addLoggingFilter;
-import static org.jboss.messaging.core.remoting.integration.FilterChainSupport.addMDCFilter;
+import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addBlockingRequestResponseFilter;
+import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addCodecFilter;
+import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addLoggingFilter;
+import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addMDCFilter;
import java.io.IOException;
import java.net.InetSocketAddress;
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/integration/MinaHandler.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaHandler.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -4,7 +4,7 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.messaging.core.remoting.integration;
+package org.jboss.messaging.core.remoting.impl.mina;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaInspector.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/integration/MinaInspector.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaInspector.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -4,7 +4,7 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.messaging.core.remoting.integration;
+package org.jboss.messaging.core.remoting.impl.mina;
import static org.apache.mina.filter.reqres.ResponseType.WHOLE;
import static org.jboss.messaging.core.remoting.wireformat.AbstractPacket.NO_CORRELATION_ID;
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaPacketCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/integration/MinaPacketCodec.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaPacketCodec.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -4,7 +4,7 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.messaging.core.remoting.integration;
+package org.jboss.messaging.core.remoting.impl.mina;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/integration/MinaService.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -4,11 +4,11 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.messaging.core.remoting.integration;
+package org.jboss.messaging.core.remoting.impl.mina;
-import static org.jboss.messaging.core.remoting.integration.FilterChainSupport.addCodecFilter;
-import static org.jboss.messaging.core.remoting.integration.FilterChainSupport.addLoggingFilter;
-import static org.jboss.messaging.core.remoting.integration.FilterChainSupport.addMDCFilter;
+import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addCodecFilter;
+import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addLoggingFilter;
+import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addMDCFilter;
import java.net.InetSocketAddress;
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaSession.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/integration/MinaSession.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaSession.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -4,7 +4,7 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.messaging.core.remoting.integration;
+package org.jboss.messaging.core.remoting.impl.mina;
import java.util.concurrent.TimeUnit;
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/PacketCodecFactory.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/integration/PacketCodecFactory.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/PacketCodecFactory.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -4,7 +4,7 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.messaging.core.remoting.integration;
+package org.jboss.messaging.core.remoting.impl.mina;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.NULL;
Added: trunk/tests/src/org/jboss/messaging/core/remoting/impl/ClientTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/impl/ClientTestBase.java (rev 0)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/impl/ClientTestBase.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -0,0 +1,225 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.impl;
+
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.jboss.messaging.core.remoting.impl.mina.integration.test.TestSupport.MANY_MESSAGES;
+import static org.jboss.messaging.core.remoting.impl.mina.integration.test.TestSupport.PORT;
+import static org.jboss.messaging.core.remoting.impl.mina.integration.test.TestSupport.reverse;
+
+import java.io.IOException;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.jboss.messaging.core.remoting.Client;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketSender;
+import org.jboss.messaging.core.remoting.TransportType;
+import org.jboss.messaging.core.remoting.impl.mina.integration.test.ReversePacketHandler;
+import org.jboss.messaging.core.remoting.test.unit.TestPacketHandler;
+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 abstract class ClientTestBase extends TestCase
+{
+ private ReversePacketHandler serverPacketHandler;
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private Client client;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ // Public --------------------------------------------------------
+
+ public void testConnected() throws Exception
+ {
+ Client client = createClient();
+
+ assertFalse(client.isConnected());
+
+ client.connect("localhost", PORT, getTransport());
+ assertTrue(client.isConnected());
+
+ assertTrue(client.disconnect());
+ assertFalse(client.isConnected());
+ assertFalse(client.disconnect());
+ }
+
+ public void testSendOneWay() throws Exception
+ {
+ serverPacketHandler.expectMessage(1);
+
+ TextPacket packet = new TextPacket("testSendOneWay");
+ packet.setVersion((byte) 1);
+ packet.setTargetID(serverPacketHandler.getID());
+ client.sendOneWay(packet);
+
+ assertTrue(serverPacketHandler.await(2, SECONDS));
+
+ List<TextPacket> messages = serverPacketHandler.getPackets();
+ assertEquals(1, messages.size());
+ String response = ((TextPacket) messages.get(0)).getText();
+ assertEquals(packet.getText(), response);
+ }
+
+ public void testSendManyOneWay() throws Exception
+ {
+ serverPacketHandler.expectMessage(MANY_MESSAGES);
+
+ TextPacket[] packets = new TextPacket[MANY_MESSAGES];
+ for (int i = 0; i < MANY_MESSAGES; i++)
+ {
+ packets[i] = new TextPacket("testSendManyOneWay " + i);
+ packets[i].setVersion((byte) 1);
+ packets[i].setTargetID(serverPacketHandler.getID());
+ client.sendOneWay(packets[i]);
+ }
+
+ assertTrue(serverPacketHandler.await(10, SECONDS));
+
+ List<TextPacket> receivedPackets = serverPacketHandler.getPackets();
+ assertEquals(MANY_MESSAGES, receivedPackets.size());
+ for (int i = 0; i < MANY_MESSAGES; i++)
+ {
+ TextPacket receivedPacket = (TextPacket) receivedPackets.get(i);
+ assertEquals(packets[i].getText(), receivedPacket.getText());
+ }
+ }
+
+ public void testSendOneWayWithCallbackHandler() throws Exception
+ {
+ TestPacketHandler callbackHandler = new TestPacketHandler();
+ callbackHandler.expectMessage(1);
+
+ PacketDispatcher.client.register(callbackHandler);
+
+ TextPacket packet = new TextPacket("testSendOneWayWithCallbackHandler");
+ packet.setVersion((byte) 1);
+ packet.setTargetID(serverPacketHandler.getID());
+ packet.setCallbackID(callbackHandler.getID());
+
+ client.sendOneWay(packet);
+
+ assertTrue(callbackHandler.await(5, SECONDS));
+
+ assertEquals(1, callbackHandler.getPackets().size());
+ String response = callbackHandler.getPackets().get(0).getText();
+ assertEquals(reverse(packet.getText()), response);
+ }
+
+ public void testSendBlocking() throws Exception
+ {
+ TextPacket request = new TextPacket("testSendBlocking");
+ request.setVersion((byte) 1);
+ request.setTargetID(serverPacketHandler.getID());
+
+ AbstractPacket receivedPacket = client.sendBlocking(request);
+
+ assertNotNull(receivedPacket);
+ assertTrue(receivedPacket instanceof TextPacket);
+ TextPacket response = (TextPacket) receivedPacket;
+ assertEquals(reverse(request.getText()), response.getText());
+ }
+
+ public void testSendBlockingWithTimeout() throws Exception
+ {
+ client.setBlockingRequestTimeout(500, MILLISECONDS);
+ serverPacketHandler.setSleepTime(1000, MILLISECONDS);
+
+ AbstractPacket packet = new TextPacket("testSendBlockingWithTimeout");
+ packet.setTargetID(serverPacketHandler.getID());
+
+ packet.setVersion((byte) 1);
+
+ try
+ {
+ client.sendBlocking(packet);
+ fail("a IOException should be thrown");
+ } catch (IOException e)
+ {
+ }
+ }
+
+ public void testClientHandlePacketSentByServer() throws Exception
+ {
+ TestPacketHandler clientHandler = new TestPacketHandler();
+ PacketDispatcher.client.register(clientHandler);
+
+ serverPacketHandler.expectMessage(1);
+ clientHandler.expectMessage(1);
+
+ TextPacket packet = new TextPacket(
+ "testClientHandlePacketSentByServer from client");
+ packet.setVersion((byte) 1);
+ packet.setTargetID(serverPacketHandler.getID());
+ // send a packet to create a sender when the server
+ // handles the packet
+ client.sendOneWay(packet);
+
+ assertTrue(serverPacketHandler.await(2, SECONDS));
+
+ assertNotNull(serverPacketHandler.getLastSender());
+ PacketSender sender = serverPacketHandler.getLastSender();
+ TextPacket packetFromServer = new TextPacket(
+ "testClientHandlePacketSentByServer from server");
+ packetFromServer.setVersion((byte) 1);
+ packetFromServer.setTargetID(clientHandler.getID());
+ sender.send(packetFromServer);
+
+ assertTrue(clientHandler.await(2, SECONDS));
+
+ List<TextPacket> packets = clientHandler.getPackets();
+ assertEquals(1, packets.size());
+ TextPacket packetReceivedByClient = (TextPacket) packets.get(0);
+ assertEquals(packetFromServer.getText(), packetReceivedByClient.getText());
+ }
+
+ // Protected -----------------------------------------------------
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ startServer();
+
+ client = createClient();
+ client.connect("localhost", PORT, getTransport());
+
+ serverPacketHandler = new ReversePacketHandler();
+ PacketDispatcher.server.register(serverPacketHandler);
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ PacketDispatcher.server.unregister(serverPacketHandler.getID());
+
+ client.disconnect();
+ stopServer();
+
+ client = null;
+ }
+
+ protected abstract Client createClient() throws Exception;
+
+ protected abstract TransportType getTransport();
+
+ protected abstract void startServer() throws Exception;
+
+ protected abstract void stopServer();
+}
Added: trunk/tests/src/org/jboss/messaging/core/remoting/impl/invm/test/unit/INVMClientTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/impl/invm/test/unit/INVMClientTest.java (rev 0)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/impl/invm/test/unit/INVMClientTest.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.impl.invm.test.unit;
+
+import static org.jboss.messaging.core.remoting.TransportType.INVM;
+
+import org.jboss.messaging.core.remoting.Client;
+import org.jboss.messaging.core.remoting.TransportType;
+import org.jboss.messaging.core.remoting.impl.ClientTestBase;
+import org.jboss.messaging.core.remoting.impl.invm.INVMConnector;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class INVMClientTest extends ClientTestBase
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ // Public --------------------------------------------------------
+
+ // ClientTestBase overrides --------------------------------------
+
+ @Override
+ protected Client createClient() throws Exception
+ {
+ return new Client(new INVMConnector());
+ }
+
+ @Override
+ protected TransportType getTransport()
+ {
+ return INVM;
+ }
+
+ @Override
+ protected void startServer() throws Exception
+ {
+ // no op
+ }
+
+ @Override
+ protected void stopServer()
+ {
+ // no op
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaHandlerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaHandlerTest.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaHandlerTest.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -9,7 +9,7 @@
import junit.framework.TestCase;
import org.jboss.messaging.core.remoting.PacketDispatcher;
-import org.jboss.messaging.core.remoting.integration.MinaHandler;
+import org.jboss.messaging.core.remoting.impl.mina.MinaHandler;
import org.jboss.messaging.core.remoting.test.unit.TestPacketHandler;
import org.jboss.messaging.core.remoting.wireformat.TextPacket;
Modified: trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaInspectorTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaInspectorTest.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaInspectorTest.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -12,7 +12,7 @@
import junit.framework.TestCase;
-import org.jboss.messaging.core.remoting.integration.MinaInspector;
+import org.jboss.messaging.core.remoting.impl.mina.MinaInspector;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
import org.jboss.messaging.core.remoting.wireformat.NullPacket;
Modified: trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaRemotingBufferTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaRemotingBufferTest.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/MinaRemotingBufferTest.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -11,7 +11,7 @@
import org.apache.mina.common.IoBuffer;
import org.jboss.messaging.core.remoting.codec.RemotingBuffer;
-import org.jboss.messaging.core.remoting.integration.MinaPacketCodec;
+import org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
Deleted: trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/TargetHandlerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/TargetHandlerTest.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/TargetHandlerTest.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -1,97 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.core.remoting.impl.mina.integration.test;
-
-import static java.util.concurrent.TimeUnit.SECONDS;
-
-import java.util.List;
-
-import org.jboss.messaging.core.remoting.PacketDispatcher;
-import org.jboss.messaging.core.remoting.PacketSender;
-import org.jboss.messaging.core.remoting.test.unit.TestPacketHandler;
-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 TargetHandlerTest extends TestSupport
-{
- // Constants -----------------------------------------------------
-
- // Attributes ----------------------------------------------------
-
- private ReversePacketHandler serverPacketHandler;
-
- // Static --------------------------------------------------------
-
- // Constructors --------------------------------------------------
-
- // Public --------------------------------------------------------
-
- public void testClientHandlePacketSentByServer() throws Exception
- {
- TestPacketHandler clientHandler = new TestPacketHandler();
- PacketDispatcher.client.register(clientHandler);
-
- serverPacketHandler.expectMessage(1);
- clientHandler.expectMessage(1);
-
- TextPacket packet = new TextPacket(
- "testClientHandlePacketSentByServer from client");
- packet.setVersion((byte) 1);
- packet.setTargetID(serverPacketHandler.getID());
- // send a packet to create a sender when the server
- // handles the packet
- client.sendOneWay(packet);
-
- assertTrue(serverPacketHandler.await(2, SECONDS));
-
- assertNotNull(serverPacketHandler.getLastSender());
- PacketSender sender = serverPacketHandler.getLastSender();
- TextPacket packetFromServer = new TextPacket(
- "testClientHandlePacketSentByServer from server");
- packetFromServer.setVersion((byte) 1);
- packetFromServer.setTargetID(clientHandler.getID());
- sender.send(packetFromServer);
-
- assertTrue(clientHandler.await(2, SECONDS));
-
- List<TextPacket> packets = clientHandler.getPackets();
- assertEquals(1, packets.size());
- TextPacket packetReceivedByClient = (TextPacket) packets.get(0);
- assertEquals(packetFromServer.getText(), packetReceivedByClient.getText());
- }
-
- // TestCase overrides --------------------------------------------
-
- public void setUp() throws Exception
- {
- startServer(PORT, TRANSPORT);
- startClient(PORT, TRANSPORT);
-
- serverPacketHandler = new ReversePacketHandler();
- PacketDispatcher.server.register(serverPacketHandler);
- }
-
- public void tearDown() throws Exception
- {
- PacketDispatcher.server.unregister(serverPacketHandler.getID());
-
- client.disconnect();
- stopServer();
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
- // Private -------------------------------------------------------
-
- // Inner classes -------------------------------------------------
-}
Modified: trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/TestSupport.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/TestSupport.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/impl/mina/integration/test/TestSupport.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -11,8 +11,8 @@
import org.jboss.messaging.core.remoting.Client;
import org.jboss.messaging.core.remoting.TransportType;
-import org.jboss.messaging.core.remoting.integration.MinaConnector;
-import org.jboss.messaging.core.remoting.integration.MinaService;
+import org.jboss.messaging.core.remoting.impl.mina.MinaConnector;
+import org.jboss.messaging.core.remoting.impl.mina.MinaService;
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
@@ -33,7 +33,7 @@
// Attributes ----------------------------------------------------
- Client client;
+ protected Client client;
private MinaService service;
@@ -64,29 +64,29 @@
// Public --------------------------------------------------------
- void startServer(int port, TransportType transport) throws Exception
+ protected void startServer(int port, TransportType transport) throws Exception
{
startServer(port, transport, false);
}
- void startServer(int port, TransportType transport, boolean useSSL)
+ protected void startServer(int port, TransportType transport, boolean useSSL)
throws Exception
{
service = new MinaService("localhost", port);
service.start();
}
- void stopServer()
+ protected void stopServer()
{
service.stop();
}
- void startClient(int port, TransportType transport) throws Exception
+ protected void startClient(int port, TransportType transport) throws Exception
{
startClient(port, transport, false);
}
- void startClient(int port, TransportType transport, boolean useSSL)
+ protected void startClient(int port, TransportType transport, boolean useSSL)
throws Exception
{
client = new Client(new MinaConnector());
Modified: trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java 2007-12-13 08:30:53 UTC (rev 3497)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java 2007-12-13 10:12:39 UTC (rev 3498)
@@ -133,7 +133,7 @@
import org.jboss.messaging.core.remoting.codec.TextPacketCodec;
import org.jboss.messaging.core.remoting.codec.UnsubscribeMessageCodec;
import org.jboss.messaging.core.remoting.codec.UpdateCallbackMessageCodec;
-import org.jboss.messaging.core.remoting.integration.PacketCodecFactory;
+import org.jboss.messaging.core.remoting.impl.mina.PacketCodecFactory;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
More information about the jboss-cvs-commits
mailing list