Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 82181 invoked from network); 12 May 2007 01:04:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 May 2007 01:04:39 -0000 Received: (qmail 15956 invoked by uid 500); 12 May 2007 01:04:44 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 15703 invoked by uid 500); 12 May 2007 01:04:43 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 15692 invoked by uid 500); 12 May 2007 01:04:43 -0000 Delivered-To: apmail-ws-axis2-cvs@ws.apache.org Received: (qmail 15546 invoked by uid 99); 12 May 2007 01:04:43 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 May 2007 18:04:43 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 May 2007 18:04:35 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 2C6551A9838; Fri, 11 May 2007 18:04:15 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r537319 - /webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/async/AsyncService2Test.java Date: Sat, 12 May 2007 01:04:15 -0000 To: axis2-cvs@ws.apache.org From: dims@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070512010415.2C6551A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dims Date: Fri May 11 18:04:14 2007 New Revision: 537319 URL: http://svn.apache.org/viewvc?view=rev&rev=537319 Log: add a test case for AXIS2-2593 and AXIS2-935 Added: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/async/AsyncService2Test.java Added: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/async/AsyncService2Test.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/async/AsyncService2Test.java?view=auto&rev=537319 ============================================================================== --- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/async/AsyncService2Test.java (added) +++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/async/AsyncService2Test.java Fri May 11 18:04:14 2007 @@ -0,0 +1,167 @@ +package org.apache.axis2.async; + +import org.apache.axis2.integration.UtilServerBasedTestCase; +import org.apache.axis2.integration.UtilServer; +import org.apache.axis2.integration.TestingUtils; +import org.apache.axis2.engine.util.TestConstants; +import org.apache.axis2.engine.AxisConfiguration; +import org.apache.axis2.engine.Echo; +import org.apache.axis2.addressing.EndpointReference; +import org.apache.axis2.context.MessageContext; +import org.apache.axis2.context.ServiceContext; +import org.apache.axis2.context.ConfigurationContext; +import org.apache.axis2.description.AxisService; +import org.apache.axis2.util.Utils; +import org.apache.axis2.util.threadpool.ThreadPool; +import org.apache.axis2.client.ServiceClient; +import org.apache.axis2.client.Options; +import org.apache.axis2.client.async.Callback; +import org.apache.axis2.client.async.AsyncResult; +import org.apache.axis2.Constants; +import org.apache.axis2.AxisFault; +import org.apache.axis2.transport.http.HTTPConstants; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.params.HttpConnectionManagerParams; +import org.apache.axiom.om.OMFactory; +import org.apache.axiom.om.OMAbstractFactory; +import org.apache.axiom.om.OMNamespace; +import org.apache.axiom.om.OMElement; + +import javax.xml.namespace.QName; + +import junit.framework.Test; +import junit.framework.TestSuite; + +public class AsyncService2Test extends UtilServerBasedTestCase implements TestConstants { + + private static final Log log = LogFactory.getLog(AsyncService2Test.class); + protected QName transportName = new QName("http://localhost/my", + "NullTransport"); + EndpointReference targetEPR = new EndpointReference( + "http://127.0.0.1:" + (UtilServer.TESTING_PORT) +// "http://127.0.0.1:" + 5556 + + "/axis2/services/EchoXMLService/echoOMElement"); + + protected AxisConfiguration engineRegistry; + protected MessageContext mc; + protected ServiceContext serviceContext; + protected AxisService service; + private boolean finish = false; + + public static Test suite() { + return getTestSetup(new TestSuite(AsyncService2Test.class)); + } + + protected void setUp() throws Exception { + service = Utils.createSimpleService(serviceName, + new AsyncMessageReceiver(), + Echo.class.getName(), + operationName); + UtilServer.deployService(service); + } + + protected void tearDown() throws Exception { + UtilServer.unDeployService(serviceName); + UtilServer.unDeployClientService(); + } + + private static final int MILLISECONDS = 1000; + private static final Integer TIMEOUT = new Integer( + 200 * MILLISECONDS); + private int counter = 0; + private static final int MAX_REQUESTS = 10; + + public void testEchoXMLCompleteASyncWithLimitedNumberOfConnections() throws Exception { + AxisService service = + Utils.createSimpleServiceforClient(serviceName, + Echo.class.getName(), + operationName); + + MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager(); + HttpConnectionManagerParams connectionManagerParams = new HttpConnectionManagerParams(); + // Maximum one socket connection to a specific host + connectionManagerParams.setDefaultMaxConnectionsPerHost(1); + connectionManagerParams.setTcpNoDelay(true); + connectionManagerParams.setStaleCheckingEnabled(true); + connectionManagerParams.setLinger(0); + connectionManager.setParams(connectionManagerParams); + + HttpClient httpClient = new HttpClient(connectionManager); + + ConfigurationContext configcontext = UtilServer.createClientConfigurationContext(); + + // Use max of 3 threads for the async thread pool + configcontext.setThreadPool(new ThreadPool(1, 3)); + configcontext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, + Boolean.TRUE); + configcontext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, + httpClient); + + + OMFactory fac = OMAbstractFactory.getOMFactory(); + ServiceClient sender = null; + try { + Options options = new Options(); + options.setTo(targetEPR); + options.setTransportInProtocol(Constants.TRANSPORT_HTTP); + options.setUseSeparateListener(true); + options.setAction(operationName.getLocalPart()); + + options.setTimeOutInMilliSeconds(200 * MILLISECONDS); + options.setProperty(HTTPConstants.CHUNKED, Boolean.TRUE); + options.setProperty(HTTPConstants.SO_TIMEOUT, TIMEOUT); + options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, TIMEOUT); + options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, + Boolean.TRUE); + options.setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION, + Boolean.TRUE); + + + Callback callback = new Callback() { + public void onComplete(AsyncResult result) { + TestingUtils.compareWithCreatedOMElement( + result.getResponseEnvelope().getBody() + .getFirstElement()); + System.out.println("result = " + result.getResponseEnvelope().getBody() + .getFirstElement()); + counter++; + } + + public void onError(Exception e) { + log.info(e.getMessage()); + counter++; + } + }; + + sender = new ServiceClient(configcontext, service); + sender.setOptions(options); + for (int i = 0; i < MAX_REQUESTS; i++) { + OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my"); + OMElement method = fac.createOMElement("echoOMElement", omNs); + OMElement value = fac.createOMElement("myValue", omNs); + value.setText("Isaac Asimov, The Foundation Trilogy"); + method.addChild(value); + sender.sendReceiveNonBlocking(operationName, method, callback); + System.out.println("sent the request # : " + i); + } + System.out.print("waiting"); + int index = 0; + while (counter < MAX_REQUESTS) { + System.out.print('.'); + Thread.sleep(1000); + index++; + if (index > 60) { + throw new AxisFault( + "Server was shutdown as the async response take too long to complete"); + } + } + } finally { + if (sender != null) + sender.cleanup(); + } + + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org For additional commands, e-mail: axis-cvs-help@ws.apache.org