[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