[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