Author: prestonf
Date: Fri Nov 11 09:46:43 2005
New Revision: 332619

URL: http://svn.apache.org/viewcvs?rev=332619&view=rev
Log:
Part of the fix for AXISCPP-868

Added:
    
webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/CalculatorDocManyClient.cpp
    
webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany.cpp.out
    
webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany_ServerResponse.expected
    
webservices/axis/trunk/c/tests/auto_build/testcases/tests/CalculatorDocMany.xml
Modified:
    webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp

Modified: webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp
URL: 
http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp?rev=332619&r1=332618&r2=332619&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp (original)
+++ webservices/axis/trunk/c/src/transport/axis3/HTTPTransport.cpp Fri Nov 11 
09:46:43 2005
@@ -1094,13 +1094,13 @@
                // if HTTP/1.1 we have to assume persistant connection by 
default
 
                // We need to close the connection and open a new one if we 
have 'Connection: close'
-                       if( key == "Connection" && value == " close")
+                       if( key == "Connection" && (value == " close" || value 
== " Close"))
                        {
                                m_bReopenConnection = true;
                        }
 
             // We need to close the connection and open a new one if we have 
'Proxy-Connection: close'
-            if (key == "Proxy-Connection" && value == " close")
+            if (key == "Proxy-Connection" && (value == " close" || value == " 
Close"))
                 m_bReopenConnection = true;
 
                // For both HTTP/1.0 and HTTP/1.1,

Added: 
webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/CalculatorDocManyClient.cpp
URL: 
http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/CalculatorDocManyClient.cpp?rev=332619&view=auto
==============================================================================
--- 
webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/CalculatorDocManyClient.cpp
 (added)
+++ 
webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/CalculatorDocManyClient.cpp
 Fri Nov 11 09:46:43 2005
@@ -0,0 +1,189 @@
+// Copyright 2003-2004 The Apache Software Foundation.

+// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved

+// 

+// Licensed under the Apache License, Version 2.0 (the "License");

+// you may not use this file except in compliance with the License.

+// You may obtain a copy of the License at

+// 

+//        http://www.apache.org/licenses/LICENSE-2.0

+// 

+// Unless required by applicable law or agreed to in writing, software

+// distributed under the License is distributed on an "AS IS" BASIS,

+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+// See the License for the specific language governing permissions and

+// limitations under the License.

+

+#include "Calculator.hpp"

+#include <axis/AxisException.hpp>

+#include <ctype.h>

+#include <iostream>

+#include <signal.h>

+

+void sig_handler(int);

+void PrintUsage();

+bool IsNumber( const char * p);

+

+typedef enum

+{

+       eAdd,

+       eSub,

+       eMul,

+       eDiv

+} EOPERATION;

+

+int main( int argc, char * argv[])

+{

+       char *          pURL = "http://localhost:80/axis/Calculator";;

+       char *          pOpList[] = {"add", "sub", "mul", "div", "*"};

+       int                     iValue1List[] = {2,  5,  23, 5879, 123,  76, 
94, 3987, 432, 65, 0};

+       int                     iValue2List[] = {3, 99, 243,    8, 987, 987, 
45,  908, -45,  0};

+       int                     iResult;

+       int                     iIndex_Value1List = 0;

+       int                     iIndex_Value2List = 0;

+       EOPERATION      eOperation = eAdd;

+       bool            bSuccess = false;

+       int                     iRetryIterationCount = 3;

+       char            cSign;

+       int                     iIterationCount = 20000;

+       int                     iIteration;

+

+       signal( SIGILL, sig_handler);

+       signal( SIGABRT, sig_handler);

+       signal( SIGSEGV, sig_handler);

+       signal( SIGFPE, sig_handler);

+

+       if( argc > 0)

+       {

+               pURL = argv[1];

+       }

+

+       do

+       {

+               try

+               {

+                       Calculator      ws( pURL);

+

+                       cout << "Invoke the same web service method " << 
iIterationCount << " times without closing the connection." << endl;

+

+                       for( iIteration = 0; iIteration < iIterationCount; 
iIteration++)

+                       {

+                               switch( eOperation)

+                               {

+                                       case eAdd:

+                                       {

+                                               iResult = ws.add( 
iValue1List[iIndex_Value1List],

+                                                                               
  iValue2List[iIndex_Value2List]);

+                                               cSign = '+';

+                                               eOperation = eSub;

+                                               break;

+                                       }

+

+                                       case eSub:

+                                       {

+                                               iResult = ws.sub( 
iValue1List[iIndex_Value1List],

+                                                                               
  iValue2List[iIndex_Value2List]);

+                                               cSign = '-';

+                                               eOperation = eMul;

+                                               break;

+                                       }

+

+                                       case eMul:

+                                       {

+                                               iResult = ws.mul( 
iValue1List[iIndex_Value1List],

+                                                                               
  iValue2List[iIndex_Value2List]);

+                                               cSign = '*';

+                                               eOperation = eDiv;

+                                               break;

+                                       }

+

+                                       case eDiv:

+                                       {

+                                               iResult = ws.div( 
iValue1List[iIndex_Value1List],

+                                                                               
  iValue2List[iIndex_Value2List]);

+                                               cSign = '/';

+                                               eOperation = eAdd;

+                                               break;

+                                       }

+                               }

+

+                               if( iIteration == iIterationCount / 4)

+                               {

+                                       cout << "Quarter of the way there!" << 
endl;

+                               }

+                               else if( iIteration == iIterationCount / 2)

+                               {

+                                       cout << "Half of the way there!" << 
endl;

+                               }

+                               else if( iIteration == (3 * iIterationCount) / 
4)

+                               {

+                                       cout << "Three quarters of the way 
there!" << endl;

+                               }

+                               else if( iIteration == iIterationCount - 1)

+                               {

+                                       cout << "All the way there!" << endl;

+

+                                       bSuccess = true;

+                               }

+

+                               if( iValue1List[++iIndex_Value1List] == 0)

+                               {

+                                       iIndex_Value1List = 0;

+                               }

+

+                               if( iValue2List[++iIndex_Value2List] == 0)

+                               {

+                                       iIndex_Value2List = 0;

+                               }

+                       }

+               }

+               catch( AxisException& e)

+               {

+                       bool bSilent = false;

+

+                       if( e.getExceptionCode() == 
CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED)

+                       {

+                               if( iRetryIterationCount > 1)

+                               {

+                                       bSilent = true;

+                               }

+                       }

+                       else

+                       {

+                               iRetryIterationCount = 0;

+                       }

+

+            if( !bSilent)

+                       {

+                               cout << "Exception : " << e.what() << endl;

+                       }

+               }

+               catch( exception& e)

+               {

+                       cout << "Exception has occured:" << e.what() << endl;

+               }

+               catch(...)

+               {

+                       cout << "Unknown exception has occured" << endl;

+               }

+

+               if( !bSuccess)

+               {

+                       iRetryIterationCount--;

+

+                       cout << "Iteration: " << iIteration << " " << 
iValue1List[iIndex_Value1List] << cSign << iValue2List[iIndex_Value2List] << 
"=" << iResult << endl;

+               }

+

+       } while( iRetryIterationCount > 0 && !bSuccess);

+

+       cout << "---------------------- TEST COMPLETE 
-----------------------------"<< endl;

+       

+       return 0;

+}

+

+void sig_handler( int sig)

+{

+       signal( sig, sig_handler);

+    cout << "SIGNAL RECEIVED " << sig << endl;

+       exit( 1);

+}

+


Added: 
webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany.cpp.out
URL: 
http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany.cpp.out?rev=332619&view=auto
==============================================================================
--- 
webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany.cpp.out
 (added)
+++ 
webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany.cpp.out
 Fri Nov 11 09:46:43 2005
@@ -0,0 +1,6 @@
+Invoke the same web service method 20000 times without closing the connection.

+Quarter of the way there!

+Half of the way there!

+Three quarters of the way there!

+All of the way there!

+---------------------- TEST COMPLETE -----------------------------


Added: 
webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany_ServerResponse.expected
URL: 
http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany_ServerResponse.expected?rev=332619&view=auto
==============================================================================
--- 
webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany_ServerResponse.expected
 (added)
+++ 
webservices/axis/trunk/c/tests/auto_build/testcases/output/CalculatorDocMany_ServerResponse.expected
 Fri Nov 11 09:46:43 2005
@@ -0,0 +1,11 @@
+HTTP/1.1 200 OK

+Server: WebSphere Application Server/5.1

+Content-Type: text/xml; charset=utf-8

+Content-Language: en-GB

+Transfer-Encoding: chunked

+

+1ad

+<?xml version="1.0" encoding="utf-8"?>
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soapenv:Header/><soapenv:Body><addResponse
 
xmlns="http://localhost/axis/Calculator";><addReturn>5</addReturn></addResponse></soapenv:Body></soapenv:Envelope>

+0

+


Added: 
webservices/axis/trunk/c/tests/auto_build/testcases/tests/CalculatorDocMany.xml
URL: 
http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/tests/CalculatorDocMany.xml?rev=332619&view=auto
==============================================================================
--- 
webservices/axis/trunk/c/tests/auto_build/testcases/tests/CalculatorDocMany.xml 
(added)
+++ 
webservices/axis/trunk/c/tests/auto_build/testcases/tests/CalculatorDocMany.xml 
Fri Nov 11 09:46:43 2005
@@ -0,0 +1,13 @@
+<test>

+    <name>CalculatorDocMany</name>

+    <description>CalculatorDocMany</description>

+    <clientLang>cpp</clientLang>

+    <clientCode>CalculatorDocManyClient.cpp</clientCode>

+    <wsdl>CalculatorDoc.wsdl</wsdl>

+    <expected>

+        <output>

+            CalculatorDocMany.cpp.out

+        </output>

+    </expected>

+       <endpoint>http://localhost:80/axis/CalculatorDoc</endpoint>

+</test>



Reply via email to