[jboss-cvs] JBossRemoting/src/tests/org/jboss/test/remoting/transport/socket/timeout ...
Ron Sigal
ron_sigal at yahoo.com
Thu Jan 25 00:24:40 EST 2007
User: rsigal
Date: 07/01/25 00:24:40
Added: src/tests/org/jboss/test/remoting/transport/socket/timeout
Tag: remoting_2_x CallbackTimeoutTestCase.java
Log:
JBREM-690: Unit test to verify that callback client invoker using socket transport can create new connections to handle callbacks if old connections time out.
Revision Changes Path
No revision
No revision
1.1.2.1 +193 -0 JBossRemoting/src/tests/org/jboss/test/remoting/transport/socket/timeout/Attic/CallbackTimeoutTestCase.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: CallbackTimeoutTestCase.java
===================================================================
RCS file: CallbackTimeoutTestCase.java
diff -N CallbackTimeoutTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ CallbackTimeoutTestCase.java 25 Jan 2007 05:24:40 -0000 1.1.2.1
@@ -0,0 +1,193 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.remoting.transport.socket.timeout;
+
+import java.net.InetAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.MBeanServer;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.jboss.remoting.Client;
+import org.jboss.remoting.InvocationRequest;
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.ServerInvocationHandler;
+import org.jboss.remoting.ServerInvoker;
+import org.jboss.remoting.callback.Callback;
+import org.jboss.remoting.callback.HandleCallbackException;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
+import org.jboss.remoting.transport.Connector;
+import org.jboss.remoting.transport.PortUtil;
+
+/**
+ * Unit test written for JBREM-690: http://jira.jboss.com/jira/browse/JBREM-690.
+ *
+ * @author <a href="ron.sigal at jboss.com">Ron Sigal</a>
+ * @version $Revision: 1.1.2.1 $
+ * <p>
+ * Copyright Jan 10, 2007
+ * </p>
+ */
+public class CallbackTimeoutTestCase extends TestCase
+{
+ protected static Logger log = Logger.getLogger(CallbackTimeoutTestCase.class);
+ protected static boolean firstTime = true;
+
+ protected static final String INVOKE = "invoke";
+ protected static final String CALLBACK = "callback";
+
+
+ public void setUp() throws Exception
+ {
+ if (firstTime)
+ {
+ firstTime = false;
+ Logger.getLogger("org.jboss.remoting").setLevel(Level.DEBUG);
+ Logger.getLogger("org.jboss.test.remoting").setLevel(Level.DEBUG);
+ String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
+ PatternLayout layout = new PatternLayout(pattern);
+ ConsoleAppender consoleAppender = new ConsoleAppender(layout);
+ Logger.getRootLogger().addAppender(consoleAppender);
+ }
+ }
+
+
+ public void testCallbackTimeout() throws Throwable
+ {
+ log.info("entering " + getName());
+ String host = InetAddress.getLocalHost().getHostAddress();
+ int port = PortUtil.findFreePort(host);
+ String locatorURI = getTransport() + "://" + host + ":" + port;
+ InvokerLocator locator = new InvokerLocator(locatorURI);
+ HashMap serverConfig = new HashMap();
+ serverConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ addExtraServerConfig(serverConfig);
+ Connector connector = new Connector(locator, serverConfig);
+ connector.create();
+ connector.addInvocationHandler("test", new TestHandler());
+ connector.start();
+
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ addExtraClientConfig(clientConfig);
+ Client client = new Client(locator, clientConfig);
+ client.connect();
+ TestCallbackHandler callbackHandler = new TestCallbackHandler();
+ client.addListener(callbackHandler, null, null, true);
+
+ Object response = client.invoke(INVOKE);
+ assertEquals(INVOKE, response);
+ log.info("invocation succeeded");
+
+ client.invoke(CALLBACK);
+ assertTrue(callbackHandler.receivedCallback);
+ log.info("received first callback");
+
+ Thread.sleep(ServerInvoker.DEFAULT_TIMEOUT_PERIOD + 5000);
+
+ callbackHandler.receivedCallback = false;
+ client.invoke(CALLBACK);
+ assertTrue(callbackHandler.receivedCallback);
+ log.info("received second callback");
+
+ client.disconnect();
+ connector.stop();
+ log.info(getName() + " PASSES");
+ }
+
+
+ protected String getTransport()
+ {
+ return "socket";
+ }
+
+
+ protected void addExtraClientConfig(Map config)
+ {
+ }
+
+
+ protected void addExtraServerConfig(Map config)
+ {
+ }
+
+
+ public class TestHandler implements ServerInvocationHandler
+ {
+ private InvokerCallbackHandler callbackHandler;
+
+ public void setMBeanServer(MBeanServer server) {}
+ public void setInvoker(ServerInvoker invoker) {}
+
+ public Object invoke(InvocationRequest invocation) throws Throwable
+ {
+ String command = (String) invocation.getParameter();
+ if (INVOKE.equals(command))
+ {
+ return INVOKE;
+ }
+ else if (CALLBACK.equals(command))
+ {
+ try
+ {
+ callbackHandler.handleCallback(new Callback("callback"));
+ return null;
+ }
+ catch (HandleCallbackException e)
+ {
+ log.error("error handling callback");
+ throw e;
+ }
+ }
+ else
+ {
+ log.error("unrecognized command: " + command);
+ throw new Exception("unrecognized command: " + command);
+ }
+ }
+
+ public void addListener(InvokerCallbackHandler callbackHandler)
+ {
+ this.callbackHandler = callbackHandler;
+ }
+
+ public void removeListener(InvokerCallbackHandler callbackHandler) {}
+ }
+
+
+ public class TestCallbackHandler implements InvokerCallbackHandler
+ {
+ public boolean receivedCallback;
+
+ public void handleCallback(Callback callback) throws HandleCallbackException
+ {
+ receivedCallback = true;
+ log.info("received callback: " + callback);
+ }
+ }
+}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list