[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