You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2007/05/12 03:04:15 UTC

svn commit: r537319 - /webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/async/AsyncService2Test.java

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