[jboss-cvs] JBossRemoting/src/tests/org/jboss/test/remoting/transport/bisocket ...

Ron Sigal ron_sigal at yahoo.com
Sat Feb 17 02:56:16 EST 2007


  User: rsigal  
  Date: 07/02/17 02:56:16

  Modified:    src/tests/org/jboss/test/remoting/transport/bisocket 
                        BisocketTestCase.java
  Log:
  JBREM-650:  Synched with remotting_2_x branch.
  
  Revision  Changes    Path
  1.7       +85 -26    JBossRemoting/src/tests/org/jboss/test/remoting/transport/bisocket/BisocketTestCase.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: BisocketTestCase.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/tests/org/jboss/test/remoting/transport/bisocket/BisocketTestCase.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -b -r1.6 -r1.7
  --- BisocketTestCase.java	31 Jan 2007 05:07:26 -0000	1.6
  +++ BisocketTestCase.java	17 Feb 2007 07:56:16 -0000	1.7
  @@ -36,12 +36,11 @@
   
   import junit.framework.TestCase;
   
  -import org.apache.log4j.BasicConfigurator;
  -import org.apache.log4j.Category;
   import org.apache.log4j.ConsoleAppender;
   import org.apache.log4j.Level;
  -import org.apache.log4j.PatternLayout;
   import org.apache.log4j.Logger;
  +import org.apache.log4j.PatternLayout;
  +import org.jboss.logging.XLevel;
   import org.jboss.remoting.Client;
   import org.jboss.remoting.InvocationRequest;
   import org.jboss.remoting.InvokerLocator;
  @@ -53,14 +52,19 @@
   import org.jboss.remoting.callback.ServerInvokerCallbackHandler;
   import org.jboss.remoting.transport.ClientInvoker;
   import org.jboss.remoting.transport.Connector;
  +import org.jboss.remoting.transport.PortUtil;
   import org.jboss.remoting.transport.bisocket.Bisocket;
   import org.jboss.remoting.transport.bisocket.BisocketClientInvoker;
   import org.jboss.remoting.transport.bisocket.BisocketServerInvoker;
  +import org.jboss.remoting.transport.socket.LRUPool;
   import org.jboss.remoting.transport.socket.MicroSocketClientInvoker;
  +import org.jboss.remoting.transport.socket.ServerThread;
  +import org.jboss.remoting.transport.socket.SocketServerInvoker;
  +import org.jboss.remoting.transport.socket.SocketWrapper;
   
   /** 
    * @author <a href="ron.sigal at jboss.com">Ron Sigal</a>
  - * @version $Revision: 1.6 $
  + * @version $Revision: 1.7 $
    * <p>
    * Copyright Nov 25, 2006
    * </p>
  @@ -96,15 +100,24 @@
         if (firstTime)
         {
            firstTime = false;
  -         Logger.getLogger("org.jboss.remoting").setLevel(Level.DEBUG);
  -         Logger.getLogger("org.jboss.test.remoting").setLevel(Level.DEBUG);
  +         Logger.getLogger("org.jboss.remoting").setLevel(Level.INFO);
  +         Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO);
            String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
            PatternLayout layout = new PatternLayout(pattern);
            ConsoleAppender consoleAppender = new ConsoleAppender(layout);
            Logger.getRootLogger().addAppender(consoleAppender);  
         }
         
  -      String locatorURI = getTransport() + "://" + InetAddress.getLocalHost().getHostAddress() + ":" + port; 
  +      String host = InetAddress.getLocalHost().getHostAddress();
  +      port = PortUtil.findFreePort(host);
  +      internalSetUp(port);
  +   }
  +   
  +   
  +   protected void internalSetUp(int port) throws Exception
  +   {
  +      String host = InetAddress.getLocalHost().getHostAddress();
  +      String locatorURI = getTransport() + "://" + host + ":" + port; 
         InvokerLocator serverLocator = new InvokerLocator(locatorURI);
         System.out.println("Starting remoting server with locator uri of: " + locatorURI);
         HashMap config = new HashMap();
  @@ -424,17 +437,17 @@
         
         Field field = MicroSocketClientInvoker.class.getDeclaredField("pool");
         field.setAccessible(true);
  -      List pool = (List) field.get(clientInvoker1);
  +      List pool1 = (List) field.get(clientInvoker1);
         List pool2 = (List) field.get(clientInvoker2);
  -      // Same pool because same address
  -      assertSame(pool, pool2);
  +      assertNotSame(pool1, pool2);
         
         field = MicroSocketClientInvoker.class.getDeclaredField("usedPooled");
         field.setAccessible(true);
         
         assertEquals(0, callbackHandler1.callbackCounter);
         assertEquals(0, callbackHandler2.callbackCounter);
  -      assertEquals(0, pool.size());
  +      assertEquals(0, pool1.size());
  +      assertEquals(0, pool2.size());
         Long usedPooled1 = (Long) field.get(clientInvoker1);
         Long usedPooled2 = (Long) field.get(clientInvoker2);
         assertEquals(0, usedPooled1.longValue());
  @@ -456,7 +469,8 @@
         
         assertEquals(2, callbackHandler1.callbackCounter);
         assertEquals(0, callbackHandler2.callbackCounter);
  -      assertEquals(0, pool.size());
  +      assertEquals(0, pool1.size());
  +      assertEquals(0, pool2.size());
         usedPooled1 = (Long) field.get(clientInvoker1);
         usedPooled2 = (Long) field.get(clientInvoker2);
         assertEquals(2, usedPooled1.longValue());
  @@ -465,7 +479,8 @@
         Thread.sleep(2000);
         assertEquals(2, callbackHandler1.callbackCounter);
         assertEquals(2, callbackHandler2.callbackCounter);
  -      assertEquals(0, pool.size());
  +      assertEquals(2, pool1.size());
  +      assertEquals(0, pool2.size());
         usedPooled1 = (Long) field.get(clientInvoker1);
         usedPooled2 = (Long) field.get(clientInvoker2);
         assertEquals(0, usedPooled1.intValue());
  @@ -474,7 +489,8 @@
         Thread.sleep(2000);
         assertEquals(2, callbackHandler1.callbackCounter);
         assertEquals(2, callbackHandler2.callbackCounter);
  -      assertEquals(2, pool.size());
  +      assertEquals(2, pool1.size());
  +      assertEquals(2, pool2.size());
         usedPooled1 = (Long) field.get(clientInvoker1);
         usedPooled2 = (Long) field.get(clientInvoker2);
         assertEquals(0, usedPooled1.intValue());
  @@ -790,17 +806,16 @@
         
         Field field = MicroSocketClientInvoker.class.getDeclaredField("pool");
         field.setAccessible(true);
  -      List pool = (List) field.get(clientInvoker1);
  +      List pool1 = (List) field.get(clientInvoker1);
         List pool2 = (List) field.get(clientInvoker2);
  -      // Same pool because same address
  -      assertSame(pool, pool2);
  +      assertNotSame(pool1, pool2);
         
         field = MicroSocketClientInvoker.class.getDeclaredField("usedPooled");
         field.setAccessible(true);
         
         assertEquals(0, callbackHandler1.callbackCounter);
         assertEquals(0, callbackHandler2.callbackCounter);
  -      assertEquals(0, pool.size());
  +      assertEquals(0, pool1.size());
         Long usedPooled1 = (Long) field.get(clientInvoker1);
         Long usedPooled2 = (Long) field.get(clientInvoker2);
         assertEquals(0, usedPooled1.longValue());
  @@ -822,7 +837,8 @@
         
         assertEquals(2, callbackHandler1.callbackCounter);
         assertEquals(0, callbackHandler2.callbackCounter);
  -      assertEquals(0, pool.size());
  +      assertEquals(0, pool1.size());
  +      assertEquals(0, pool2.size());
         usedPooled1 = (Long) field.get(clientInvoker1);
         usedPooled2 = (Long) field.get(clientInvoker2);
         assertEquals(2, usedPooled1.longValue());
  @@ -831,7 +847,8 @@
         Thread.sleep(2000);
         assertEquals(2, callbackHandler1.callbackCounter);
         assertEquals(2, callbackHandler2.callbackCounter);
  -      assertEquals(0, pool.size());
  +      assertEquals(2, pool1.size());
  +      assertEquals(0, pool2.size());
         usedPooled1 = (Long) field.get(clientInvoker1);
         usedPooled2 = (Long) field.get(clientInvoker2);
         assertEquals(0, usedPooled1.intValue());
  @@ -840,7 +857,8 @@
         Thread.sleep(2000);
         assertEquals(2, callbackHandler1.callbackCounter);
         assertEquals(2, callbackHandler2.callbackCounter);
  -      assertEquals(2, pool.size());
  +      assertEquals(2, pool1.size());
  +      assertEquals(2, pool2.size());
         usedPooled1 = (Long) field.get(clientInvoker1);
         usedPooled2 = (Long) field.get(clientInvoker2);
         assertEquals(0, usedPooled1.intValue());
  @@ -1167,7 +1185,20 @@
         controlSocket.close();
         log.info("CLOSED CONTROL SOCKET");
         
  -      Thread.sleep(TEST_PING_FREQUENCY * 2);
  +      // Shut down the only existing ServerThread on the server side, and therefore
  +      // the only existing pooled connection on the client side, forcing the
  +      // next invocation to depend on the creation of a new control connection.
  +      field = SocketServerInvoker.class.getDeclaredField("clientpool");
  +      field.setAccessible(true);
  +      LRUPool clientpool = (LRUPool) field.get(serverInvoker);
  +      Set serverThreads = clientpool.getContents();
  +      assertEquals(1, serverThreads.size());
  +      ((ServerThread)serverThreads.iterator().next()).shutdown();
  +      HashMap metadata = new HashMap();
  +      metadata.put(COUNTER, new Integer(0));
  +      client.invoke(INVOCATION_TEST, metadata);
  +      
  +      Thread.sleep(TEST_PING_FREQUENCY * 4);
         client.invoke(CALLBACK_TEST);
         assertEquals(2, callbackHandler.callbackCounter);
         
  @@ -1247,7 +1278,20 @@
         clientSideControlSocket.close();
         log.info("CLOSED CONTROL SOCKET");
         
  -      Thread.sleep(TEST_PING_FREQUENCY * 2);
  +      // Shut down the only existing ServerThread on the server side, and therefore
  +      // the only existing pooled connection on the client side, forcing the
  +      // next invocation to depend on the creation of a new control connection.
  +      field = SocketServerInvoker.class.getDeclaredField("clientpool");
  +      field.setAccessible(true);
  +      LRUPool clientpool = (LRUPool) field.get(connector.getServerInvoker());
  +      Set serverThreads = clientpool.getContents();
  +      assertEquals(1, serverThreads.size());
  +      ((ServerThread)serverThreads.iterator().next()).shutdown();
  +      HashMap metadata = new HashMap();
  +      metadata.put(COUNTER, new Integer(0));
  +      client.invoke(INVOCATION_TEST, metadata);
  +      
  +      Thread.sleep(TEST_PING_FREQUENCY * 4);
         client.invoke(CALLBACK_TEST);
         assertEquals(2, callbackHandler.callbackCounter);
         Thread newControlConnectionThread = (Thread) controlConnectionThreads.iterator().next();
  @@ -1326,16 +1370,31 @@
         assertEquals(1, callbackHandler.callbackCounter);
         
         Connector oldConnector = connector;
  +      SocketServerInvoker invoker = (SocketServerInvoker) connector.getServerInvoker();
  +      Field field = SocketServerInvoker.class.getDeclaredField("clientpool");
  +      field.setAccessible(true);
  +      LRUPool clientpool = (LRUPool) field.get(invoker);
  +      Set threads = clientpool.getContents();
  +      for (Iterator it = threads.iterator(); it.hasNext(); )
  +      {
  +         ServerThread t = (ServerThread) it.next();
  +         field = ServerThread.class.getDeclaredField("socketWrapper");
  +         field.setAccessible(true);
  +         SocketWrapper socketWrapper = (SocketWrapper) field.get(t);
  +         socketWrapper.close();
  +      }
         connector.stop();
         log.info("STOPPED CONNECTOR");
  -      setUp();
  +      
  +      internalSetUp(port);
         log.info("RESTARTED CONNECTOR");
  -      assertTrue(!connector.equals(oldConnector));
  +      assertNotSame(connector, oldConnector);
         
         Thread.sleep(TEST_PING_FREQUENCY * 5);
         
         // It is beyond the scope of Remoting to fail over to a new server,
         // complete with registered callback handlers.
  +      log.info("adding callback handler");
         client.addListener(callbackHandler, new HashMap());
         log.info("client added callback handler");
         
  
  
  



More information about the jboss-cvs-commits mailing list