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>