[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