[jboss-cvs] JBoss Messaging SVN: r3968 - in branches/Branch_JBossMessaging_1_4_0_SP3_CP: src/main/org/jboss/jms/server/connectionmanager and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Mar 27 18:11:14 EDT 2008
Author: clebert.suconic at jboss.com
Date: 2008-03-27 18:11:14 -0400 (Thu, 27 Mar 2008)
New Revision: 3968
Modified:
branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/ConnectionManager.java
branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/connectionmanager/SimpleConnectionManager.java
branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java
branches/Branch_JBossMessaging_1_4_0_SP3_CP/tests/src/org/jboss/test/messaging/jms/server/connectionmanager/SimpleConnectionManagerTest.java
Log:
Adding some testing for SimpleConnectionManager, after changes on JBMESSAGING-1262..
(Also... changed some abstraction on the API, to simplify writing a mockTest for this)
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/ConnectionManager.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/ConnectionManager.java 2008-03-27 19:35:23 UTC (rev 3967)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/ConnectionManager.java 2008-03-27 22:11:14 UTC (rev 3968)
@@ -26,6 +26,7 @@
import org.jboss.jms.delegate.ConnectionEndpoint;
import org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint;
import org.jboss.messaging.core.contract.MessagingComponent;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
@@ -61,7 +62,7 @@
*/
List getActiveConnections();
- void registerConnectionFactoryCallback(String JVMID, String remotingSessionID, ServerInvokerCallbackHandler handler);
+ void registerConnectionFactoryCallback(String JVMID, String remotingSessionID, InvokerCallbackHandler handler);
void unregisterConnectionFactoryCallback(String JVMID, String remotingSessionID);
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/connectionmanager/SimpleConnectionManager.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/connectionmanager/SimpleConnectionManager.java 2008-03-27 19:35:23 UTC (rev 3967)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/connectionmanager/SimpleConnectionManager.java 2008-03-27 22:11:14 UTC (rev 3968)
@@ -44,6 +44,7 @@
import org.jboss.remoting.Client;
import org.jboss.remoting.ClientDisconnectedException;
import org.jboss.remoting.ConnectionListener;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
/**
@@ -67,7 +68,7 @@
private Map</** VMID */String, Map</** RemoteSessionID */String, ConnectionEndpoint>> jmsClients;
- private Map</* VMID */String, Map</* remoting session id */String, ServerInvokerCallbackHandler>> cfHandlers;
+ private Map</* VMID */String, Map</* remoting session id */String, InvokerCallbackHandler>> cfHandlers;
// Map<remotingClientSessionID<String> - jmsClientVMID<String>
private Map<String, String> remotingSessions;
@@ -88,7 +89,7 @@
remotingSessions = new HashMap<String, String>();
- cfHandlers = new HashMap<String, Map<String, ServerInvokerCallbackHandler>>();
+ cfHandlers = new HashMap<String, Map<String, InvokerCallbackHandler>>();
activeConnectionEndpoints = new HashSet<ConnectionEndpoint>();
}
@@ -121,13 +122,13 @@
public synchronized void registerConnectionFactoryCallback(String JVMID,
String remotingSessionID,
- ServerInvokerCallbackHandler handler)
+ InvokerCallbackHandler handler)
{
- Map<String, ServerInvokerCallbackHandler> handlers = cfHandlers.get(JVMID);
+ Map<String, InvokerCallbackHandler> handlers = cfHandlers.get(JVMID);
if (handlers == null)
{
- handlers = new HashMap<String, ServerInvokerCallbackHandler>();
+ handlers = new HashMap<String, InvokerCallbackHandler>();
cfHandlers.put(JVMID, handlers);
}
@@ -171,7 +172,7 @@
public synchronized void unregisterConnectionFactoryCallback(String JVMID, String remotingSessionID)
{
- Map<String, ServerInvokerCallbackHandler> handlers = cfHandlers.get(JVMID);
+ Map<String, InvokerCallbackHandler> handlers = cfHandlers.get(JVMID);
if (handlers != null)
{
@@ -382,17 +383,17 @@
}
}
- Map<String, ServerInvokerCallbackHandler> handlers = cfHandlers.remove(jmsClientID);
+ Map<String, InvokerCallbackHandler> handlers = cfHandlers.remove(jmsClientID);
if (handlers != null)
{
- Map<String, ServerInvokerCallbackHandler> handlersClone = new HashMap<String, ServerInvokerCallbackHandler>(handlers);
+ Map<String, InvokerCallbackHandler> handlersClone = new HashMap<String, InvokerCallbackHandler>(handlers);
- for (Map.Entry<String, ServerInvokerCallbackHandler> entry: handlersClone.entrySet())
+ for (Map.Entry<String, InvokerCallbackHandler> entry: handlersClone.entrySet())
{
try
{
- entry.getValue().getCallbackClient().disconnect();
+ ((ServerInvokerCallbackHandler)entry.getValue()).getCallbackClient().disconnect();
}
catch (Throwable ignore)
{
@@ -400,7 +401,7 @@
try
{
- entry.getValue().destroy();
+ ((ServerInvokerCallbackHandler)entry.getValue()).destroy();
}
catch (Throwable ignore)
{
@@ -408,7 +409,7 @@
for (ServerConnectionFactoryEndpoint ep: connectionFactories)
{
- ep.removeCallbackhandler(entry.getValue());
+ ep.removeCallbackhandler((ServerInvokerCallbackHandler)entry.getValue());
}
unregisterConnectionFactoryCallback(jmsClientID, entry.getKey());
@@ -472,19 +473,19 @@
}
}
- Map<String, ServerInvokerCallbackHandler> handlers = cfHandlers.get(jmsClientID);
+ Map<String, InvokerCallbackHandler> handlers = cfHandlers.get(jmsClientID);
if (handlers != null)
{
boolean found = false;
- for (Map.Entry<String, ServerInvokerCallbackHandler> entry: handlers.entrySet())
+ for (Map.Entry<String, InvokerCallbackHandler> entry: handlers.entrySet())
{
if (entry.getKey().equals(jmsSessionID))
{
try
{
- entry.getValue().getCallbackClient().disconnect();
+ ((ServerInvokerCallbackHandler)entry.getValue()).getCallbackClient().disconnect();
}
catch (Throwable ignore)
{
@@ -492,7 +493,7 @@
try
{
- entry.getValue().destroy();
+ ((ServerInvokerCallbackHandler)entry.getValue()).destroy();
}
catch (Throwable ignore)
{
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java 2008-03-27 19:35:23 UTC (rev 3967)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java 2008-03-27 22:11:14 UTC (rev 3968)
@@ -42,6 +42,7 @@
import org.jboss.messaging.util.ConcurrentHashSet;
import org.jboss.messaging.util.ExceptionUtil;
import org.jboss.remoting.callback.Callback;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
/**
@@ -95,7 +96,7 @@
Information to failover to other connections on clients **/
private Map failoverMap;
- private Set<ServerInvokerCallbackHandler> handlers = new ConcurrentHashSet<ServerInvokerCallbackHandler>();
+ private Set<InvokerCallbackHandler> handlers = new ConcurrentHashSet<InvokerCallbackHandler>();
// Constructors ---------------------------------------------------------------------------------
@@ -287,7 +288,7 @@
}
public void addCallback(String VMID, String remotingSessionID,
- ServerInvokerCallbackHandler callbackHandler) throws JMSException
+ InvokerCallbackHandler callbackHandler) throws JMSException
{
log.debug("Adding callbackHandler on ConnectionFactory");
@@ -311,7 +312,7 @@
return new TopologyResult(uniqueName, delegates, failoverMap);
}
- public void removeCallbackhandler(ServerInvokerCallbackHandler handler)
+ public void removeCallbackhandler(InvokerCallbackHandler handler)
{
handlers.remove(handler);
}
@@ -351,10 +352,10 @@
Callback callback = new Callback(message);
- for (ServerInvokerCallbackHandler o: handlers)
+ for (InvokerCallbackHandler o: handlers)
{
log.debug("Updating CF on callback " + o);
- o.handleCallbackOneway(callback);
+ ((ServerInvokerCallbackHandler)o).handleCallbackOneway(callback);
}
}
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP/tests/src/org/jboss/test/messaging/jms/server/connectionmanager/SimpleConnectionManagerTest.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP/tests/src/org/jboss/test/messaging/jms/server/connectionmanager/SimpleConnectionManagerTest.java 2008-03-27 19:35:23 UTC (rev 3967)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP/tests/src/org/jboss/test/messaging/jms/server/connectionmanager/SimpleConnectionManagerTest.java 2008-03-27 22:11:14 UTC (rev 3968)
@@ -21,6 +21,7 @@
*/
package org.jboss.test.messaging.jms.server.connectionmanager;
+import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.Map;
@@ -35,9 +36,14 @@
import org.jboss.jms.delegate.SessionDelegate;
import org.jboss.jms.server.ConnectionManager;
import org.jboss.jms.server.ServerPeer;
+import org.jboss.jms.server.connectionfactory.JNDIBindings;
import org.jboss.jms.server.connectionmanager.SimpleConnectionManager;
+import org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint;
import org.jboss.jms.tx.MessagingXid;
import org.jboss.jms.tx.TransactionRequest;
+import org.jboss.remoting.callback.Callback;
+import org.jboss.remoting.callback.HandleCallbackException;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
import org.jboss.test.messaging.jms.JMSTestCase;
import org.jboss.test.messaging.tools.ServerManagement;
@@ -134,6 +140,80 @@
}
+ public void testCFWithMock() throws Exception
+ {
+ ServerPeer mockPeer = new ServerPeer();
+ SimpleConnectionManager cm = new SimpleConnectionManager();
+
+ // Instead of exposing setConnectionManager just for this test, we are doing this hack
+ // to set the ConnectionManager
+ Field field = ServerPeer.class.getDeclaredField("connectionManager");
+ field.setAccessible(true);
+ field.set(mockPeer, cm);
+
+
+ ServerConnectionFactoryEndpoint cfEnd1 = new ServerConnectionFactoryEndpoint("UName","UName",mockPeer,
+ null,
+ null,
+ 0,
+ false,
+ 0,
+ 0,
+ 0,
+ 0,
+ true);
+ cm.registerConnectionFactory(cfEnd1);
+
+ ServerConnectionFactoryEndpoint cfEnd2 = new ServerConnectionFactoryEndpoint("UName2","UName2",mockPeer,
+ null,
+ null,
+ 0,
+ false,
+ 0,
+ 0,
+ 0,
+ 0,
+ true);
+ cm.registerConnectionFactory(cfEnd2);
+
+ MockRemotingCallbackHandler session1Handler = new MockRemotingCallbackHandler();
+ MockRemotingCallbackHandler session2Handler = new MockRemotingCallbackHandler();
+ MockRemotingCallbackHandler session3Handler = new MockRemotingCallbackHandler();
+ MockRemotingCallbackHandler session4Handler = new MockRemotingCallbackHandler();
+
+ cm.registerConnectionFactoryCallback("VM1", "Session1", session1Handler);
+ cm.registerConnectionFactoryCallback("VM1", "Session2", session2Handler);
+ cm.registerConnectionFactoryCallback("VM2", "Session3", session3Handler);
+ cm.registerConnectionFactoryCallback("VM4", "Session3", session3Handler);
+
+ cfEnd1.addCallback("VM1", "Session1", session1Handler);
+ cfEnd1.addCallback("VM1", "Session2", session2Handler);
+ cfEnd2.addCallback("VM2", "Session3", session3Handler);
+ cfEnd2.addCallback("VM2", "Session4", session4Handler);
+
+
+ assertEquals(2, cfEnd1.getCallbackHandlers().size());
+ assertEquals(2, cfEnd2.getCallbackHandlers().size());
+
+ cm.handleClientFailure("Session1");
+
+ assertEquals(1, cfEnd1.getCallbackHandlers().size());
+ assertEquals(2, cfEnd2.getCallbackHandlers().size());
+
+ cm.handleClientFailure("Session3");
+ assertEquals(1, cfEnd1.getCallbackHandlers().size());
+ assertEquals(1, cfEnd2.getCallbackHandlers().size());
+
+ cm.handleClientFailure("Session2");
+ assertEquals(0, cfEnd1.getCallbackHandlers().size());
+ assertEquals(1, cfEnd2.getCallbackHandlers().size());
+
+ cm.handleClientFailure("Session4");
+ assertEquals(0, cfEnd1.getCallbackHandlers().size());
+ assertEquals(0, cfEnd2.getCallbackHandlers().size());
+ }
+
+
public void testWithMock() throws Exception
{
SimpleConnectionManager cm = new SimpleConnectionManager();
@@ -213,6 +293,16 @@
// Inner classes -------------------------------------------------
+ class MockRemotingCallbackHandler implements InvokerCallbackHandler
+ {
+
+ public void handleCallback(Callback callback)
+ throws HandleCallbackException
+ {
+ }
+
+ }
+
class SimpleConnectionEndpoint implements ConnectionEndpoint
{
public boolean closed;
More information about the jboss-cvs-commits
mailing list