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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jun 26 20:36:20 EDT 2008


Author: clebert.suconic at jboss.com
Date: 2008-06-26 20:36:20 -0400 (Thu, 26 Jun 2008)
New Revision: 4605

Modified:
   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/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaConnectorTest.java
Log:
Tests on MinaConnector + adding a TODO block ( JBMESSAGING-1383 )

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java	2008-06-26 18:09:35 UTC (rev 4604)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaConnector.java	2008-06-27 00:36:20 UTC (rev 4605)
@@ -281,8 +281,7 @@
 
    public synchronized void addSessionListener(final RemotingSessionListener listener)
    {
-      assert listener != null;
-      assert connector != null;
+      validateArgument(listener);
 
       listeners.add(listener);
 
@@ -294,8 +293,7 @@
 
    public synchronized void removeSessionListener(RemotingSessionListener listener)
    {
-      assert listener != null;
-      assert connector != null;
+      validateArgument(listener);
 
       listeners.remove(listener);
 
@@ -328,7 +326,7 @@
       alive = false;
       for (RemotingSessionListener listener : listeners)
       {
-         listener.sessionDestroyed(sessionID, me);
+         listener.sessionDestroyed(sessionID, me); 
       }
 
       session = null;
@@ -353,6 +351,19 @@
 
    // Private -------------------------------------------------------
 
+   private void validateArgument(final RemotingSessionListener listener)
+   {
+      if (listener == null)
+      {
+         throw new IllegalArgumentException("Argument listener shouldn't be null");
+      }
+      
+      if (connector == null)
+      {
+         throw new IllegalStateException("Connector is disconnected");
+      }
+   }
+
    // Inner classes -------------------------------------------------
 
    private final class IoServiceListenerAdapter implements IoServiceListener

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaHandler.java	2008-06-26 18:09:35 UTC (rev 4604)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaHandler.java	2008-06-27 00:36:20 UTC (rev 4605)
@@ -127,6 +127,7 @@
       }
       if (closeSessionOnExceptionCaught)
       {
+         // TODO: (JBMESSAGING-1383) Shouldn't this be closed on MinaConnector instead?
          session.close();
       }
    }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaConnectorTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaConnectorTest.java	2008-06-26 18:09:35 UTC (rev 4604)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaConnectorTest.java	2008-06-27 00:36:20 UTC (rev 4605)
@@ -59,7 +59,9 @@
 import org.easymock.IAnswer;
 import org.easymock.IArgumentMatcher;
 import org.jboss.messaging.core.client.ConnectionParams;
+import org.jboss.messaging.core.client.RemotingSessionListener;
 import org.jboss.messaging.core.client.impl.LocationImpl;
+import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.remoting.PacketDispatcher;
 import org.jboss.messaging.core.remoting.PacketHandler;
 import org.jboss.messaging.core.remoting.PacketReturner;
@@ -105,8 +107,10 @@
    
    private FilterChainSupport filterChainSupport;
    
-   private SetHandlerAnswer setHandlerAnswer;
+   private PacketHandlerAnswer packetHandlerAnswer;
    
+   private IoServiceListenerAnswer ioServiceListenerAnswer;
+   
    // Static --------------------------------------------------------
    
    // Constructors --------------------------------------------------
@@ -134,7 +138,9 @@
       
       filterChainSupport = null;
       
-      setHandlerAnswer = null;
+      packetHandlerAnswer = null;
+      
+      ioServiceListenerAnswer = null;
 
    }
    
@@ -341,7 +347,7 @@
       
       EasyMock.replay(retPack);
       
-      this.setHandlerAnswer.handler.handle(ping, retPack);
+      this.packetHandlerAnswer.handler.handle(ping, retPack);
 
       EasyMock.verify(retPack);
       
@@ -349,12 +355,160 @@
       
    }
    
+   public void testIOServiceListenerAdapter() throws Exception
+   {
+      MinaConnector minaConnector = construct(true);
+      
+      connect(minaConnector, true);
+      
+      RemotingSessionListener listener = EasyMock.createStrictMock(RemotingSessionListener.class);
+      
+      listener.sessionDestroyed(EasyMock.eq(3l), messagingExceptionMatch(MessagingException.INTERNAL_ERROR));
+      
+      EasyMock.expect(ioSession.getId()).andStubReturn(3l);
+      
+      EasyMock.replay(listener, ioSession);
+      
+      minaConnector.addSessionListener(listener);
+      
+      IoServiceListener handler = ioServiceListenerAnswer.handler;
+      
+      IoService service = EasyMock.createNiceMock(IoService.class);
+      
+      handler.serviceActivated(service);
+      
+      handler.serviceDeactivated(service);
+      
+      handler.serviceIdle(service, IdleStatus.BOTH_IDLE);
+      
+      handler.sessionDestroyed(ioSession);
+      
+      handler.sessionCreated(ioSession);
+      
+      EasyMock.verify(listener, ioSession);
+      
+      EasyMock.reset(listener, ioSession);
+      
+   }
+
+   public void testInvalidAddRemoveListener() throws Exception
+   {
+      MinaConnector minaConnector = construct(true);
+      
+      connect(minaConnector, true);
+      
+      try
+      {
+         minaConnector.addSessionListener(null);
+         fail("Supposed to throw exception");
+      }
+      catch (IllegalArgumentException e)
+      {
+      }
+
+      disconnect(minaConnector);
+      
+      try
+      {
+         minaConnector.addSessionListener(EasyMock.createNiceMock(RemotingSessionListener.class));
+         fail("Supposed to throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+      }
+   }
+   
+   public void testAddRemoveListener() throws Exception
+   {
+      MinaConnector minaConnector = construct(true);
+      
+      connect(minaConnector, true);
+      
+      RemotingSessionListener listener = EasyMock.createStrictMock(RemotingSessionListener.class);
+      
+      listener.sessionDestroyed(EasyMock.eq(3l), messagingExceptionMatch(MessagingException.ILLEGAL_STATE));
+      
+      RemotingSessionListener listener2 = EasyMock.createStrictMock(RemotingSessionListener.class);
+      
+      listener2.sessionDestroyed(EasyMock.eq(3l), messagingExceptionMatch(MessagingException.ILLEGAL_STATE));
+      
+      EasyMock.expect(ioSession.getId()).andStubReturn(3l);
+      
+      EasyMock.replay(listener, listener2, ioSession);
+      
+      minaConnector.addSessionListener(listener);
+      
+      minaConnector.addSessionListener(listener2);
+      
+      minaConnector.fireCleanup(3, new MessagingException(MessagingException.ILLEGAL_STATE));
+      
+      EasyMock.verify(listener, listener2, ioSession);
+      
+      EasyMock.reset(listener, listener2, ioSession);
+      
+      listener.sessionDestroyed(3l, null);
+      
+      listener2.sessionDestroyed(3l, null);
+      
+      EasyMock.replay(listener, listener2, ioSession);
+      
+      minaConnector.fireCleanup(3);
+      
+      EasyMock.verify(listener, listener2, ioSession);
+      
+      EasyMock.reset(listener, listener2, ioSession);
+      
+
+      minaConnector = construct(true);
+      
+      connect(minaConnector, true);
+      
+      minaConnector.addSessionListener(listener);
+      
+      minaConnector.addSessionListener(listener2);
+      
+      minaConnector.removeSessionListener(listener2);
+      
+      listener.sessionDestroyed(3l, null);
+      
+      EasyMock.replay(listener, listener2, ioSession);
+      
+      minaConnector.fireCleanup(3);
+      
+      EasyMock.verify(listener, listener2, ioSession);
+      
+      EasyMock.reset(listener, listener2, ioSession);
+      
+   }
+   
    // Package protected ---------------------------------------------
    
    // Protected -----------------------------------------------------
    
    // Private -------------------------------------------------------
 
+   private MessagingException messagingExceptionMatch(final int errorID)
+   {
+      EasyMock.reportMatcher(new IArgumentMatcher()
+      {
+
+         public void appendTo(StringBuffer buffer)
+         {
+            buffer.append(errorID);
+         }
+
+         public boolean matches(Object argument)
+         {
+            MessagingException ex = (MessagingException) argument;
+            
+            return ex.getCode() == errorID;
+         }
+         
+      });
+      
+      return null;
+   }
+
    private Pong pongMatch(final int sessionId, final boolean sessionFailed)
    {
       EasyMock.reportMatcher(new IArgumentMatcher()
@@ -398,6 +552,10 @@
       
       connector.addListener(EasyMock.isA(IoServiceListener.class));
       
+      ioServiceListenerAnswer = new IoServiceListenerAnswer();
+      
+      EasyMock.expectLastCall().andAnswer(ioServiceListenerAnswer);
+      
       EasyMock.expect(futureConnect.awaitUninterruptibly()).andReturn(futureConnect);
       
       EasyMock.expect(futureConnect.isConnected()).andReturn(true);
@@ -408,9 +566,9 @@
       
       dispatcher.register(EasyMock.isA(PacketHandler.class));
       
-      this.setHandlerAnswer = new SetHandlerAnswer();
+      this.packetHandlerAnswer = new PacketHandlerAnswer();
       
-      EasyMock.expectLastCall().andAnswer(setHandlerAnswer);
+      EasyMock.expectLastCall().andAnswer(packetHandlerAnswer);
       
       if (ping)
       {
@@ -546,6 +704,12 @@
       
       EasyMock.reset(connectionParams, dispatcher, connector, sessionConfig, filterChainSupport);
       
+      assertSame (location, mina.getLocation());
+      
+      assertSame (connectionParams, mina.getConnectionParams());
+      
+      assertSame (dispatcher, mina.getDispatcher());
+      
       return mina;
    }
    
@@ -553,19 +717,29 @@
    // Inner classes -------------------------------------------------
    
 
-   class SetHandlerAnswer implements IAnswer<Object>
+   class PacketHandlerAnswer implements IAnswer<Object>
    {
       PacketHandler handler;
 
       public Object answer() throws Throwable
       {
          handler = (PacketHandler)EasyMock.getCurrentArguments()[0];
-         System.out.println("handler = " + handler);
          return null;
       }
    }
    
+   class IoServiceListenerAnswer implements IAnswer<Object>
+   {
+      IoServiceListener handler;
+
+      public Object answer() throws Throwable
+      {
+         handler = (IoServiceListener)EasyMock.getCurrentArguments()[0];
+         return null;
+      }
+   }
    
+   
    /** Mina is not 100% "interfacable", so I'm mocking this class */
   class ProxySSLFilter extends SslFilter
    {




More information about the jboss-cvs-commits mailing list