You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by pr...@apache.org on 2005/06/07 11:42:01 UTC
cvs commit: ws-axis/c/tests/auto_build/testcases/client/cpp CalculatorDoc_TTestClient.cpp
prestonf 2005/06/07 02:42:01
Modified: c/tests/auto_build/testcases/client/cpp
CalculatorDoc_TTestClient.cpp
Log:
Hi All,
This is another attempt to cure the threading test problem that this test produces (fails on AIX with 'Catastrophe in realloc: invalid storage pointer' and on Win2000 with an 'Unknown exception occured').
Revision Changes Path
1.5 +123 -95 ws-axis/c/tests/auto_build/testcases/client/cpp/CalculatorDoc_TTestClient.cpp
Index: CalculatorDoc_TTestClient.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/tests/auto_build/testcases/client/cpp/CalculatorDoc_TTestClient.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- CalculatorDoc_TTestClient.cpp 25 May 2005 21:46:39 -0000 1.4
+++ CalculatorDoc_TTestClient.cpp 7 Jun 2005 09:42:01 -0000 1.5
@@ -47,29 +47,36 @@
In linux it is void * */
RETTYPE ThreadFunc(ARGTYPE Param)
{
- /*Type casting the url to char * */
- char *p=(char *)Param;
- char endpoint[256];
- const char* url="http://puppet.in.ibm.com:9060/Calculator/services/Calculator";
- if(p!=NULL)
- url=p;
- int iResult;
- bool bSuccess = false;
- int iRetryIterationCount = 3;
-
- do
- {
- try
- {
- sprintf(endpoint, "%s", url);
- Calculator ws(endpoint);
- iResult = ws.add(3,2);
- cout << iResult;
- bSuccess = true;
-
- }
- catch(AxisException& e)
- {
+ /*Type casting the url to char * */
+ char * p = (char *) Param;
+ char endpoint[256];
+ char * url="http://puppet.in.ibm.com:9060/Calculator/services/Calculator";
+
+ if( p != NULL)
+ {
+ url = p;
+ }
+
+ int iResult;
+ bool bSuccess = false;
+ int iRetryIterationCount = 3;
+
+ do
+ {
+ try
+ {
+ sprintf( endpoint, "%s", url);
+
+ Calculator ws( endpoint);
+
+ iResult = ws.add( 3, 2);
+
+ cout << iResult;
+
+ bSuccess = true;
+ }
+ catch( AxisException& e)
+ {
bool bSilent = false;
if( e.getExceptionCode() == CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED)
@@ -84,90 +91,111 @@
iRetryIterationCount = 0;
}
- if( !bSilent)
+ if( !bSilent)
{
cout << "Exception : " << e.what() << endl;
}
- }
- catch(exception& e)
- {
- cout << "Unknown exception has occured" << endl;
- }
- catch(...)
- {
- cout << "Unknown exception has occured" << endl;
- }
+ }
+ catch( exception& e)
+ {
+ cout << "Unknown exception has occured" << endl;
+ }
+ catch( ...)
+ {
+ cout << "Unknown exception has occured" << endl;
+ }
+
iRetryIterationCount--;
+
} while( iRetryIterationCount > 0 && !bSuccess);
- #ifndef WIN32
- pthread_exit(0);
- #endif
- return 0;
-}
+ #ifndef WIN32
+ pthread_exit( 0);
+ #endif
+ return 0;
+}
+//-----------------------------------------------------------------------------
-int main(int argc, char *argv[])
+int main( int argc, char * argv[])
{
- Axis::initialize(false);
- try{
- int i;
- #ifdef WIN32
- /*Windows specific code comes here */
- HANDLE hThread[NUM_THREADS];
- for(i=0;i<NUM_THREADS;i++){
- DWORD dwThreadId;
- //LPVOID dwThrdParam = LPVOID(argv[1]);
- hThread[i] = CreateThread(
- NULL, // no security attributes
- 0, // use default stack size
- ThreadFunc, // thread function
- LPVOID(argv[1]), // argument to thread function
- 0,
- &dwThreadId); // returns the thread identifier
-
- if (hThread[i] == NULL)
- {
- cout<<"Thread creation Failed";
- }
- }
- /* Waiting for threads to terminate */
- WaitForMultipleObjects(NUM_THREADS,hThread,true, INFINITE);
- for(i=0;i<NUM_THREADS;i++)
- CloseHandle( hThread[i] );
-
- #else
- pthread_t thread[NUM_THREADS];
- pthread_attr_t attr;
- int rc, t;
- void *status;
- // Initialize and set thread detached attribute
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
- for (t = 0; t < NUM_THREADS; t++)
- {
- /*Creating threads */
- rc = pthread_create(&thread[t], &attr, ThreadFunc,(void *)argv[1]);
- if (rc)
- {
- cout<<"Thread Creation Failed";
- }
+ Axis::initialize( false);
+
+ try
+ {
+ int i;
+
+#ifdef WIN32
+ // Windows specific code comes here
+ HANDLE hThread[NUM_THREADS];
+
+ for( i = 0; i < NUM_THREADS; i++)
+ {
+ DWORD dwThreadId;
+ //LPVOID dwThrdParam = LPVOID(argv[1]);
+
+ hThread[i] = CreateThread( NULL, // no security attributes
+ 0, // use default stack size
+ ThreadFunc, // thread function
+ LPVOID(argv[1]), // argument to thread function
+ 0,
+ &dwThreadId); // returns the thread identifier
+
+ if( hThread[i] == NULL)
+ {
+ cout << "Thread creation Failed";
+ }
+ }
+ // Waiting for threads to terminate
+ WaitForMultipleObjects( NUM_THREADS, hThread, true, INFINITE);
+
+ for( i = 0; i < NUM_THREADS; i++)
+ {
+ CloseHandle( hThread[i]);
+ }
+#else
+ pthread_t thread[NUM_THREADS];
+ pthread_attr_t attr;
+ int rc;
+ int t;
+ void * status;
+
+ // Initialize and set thread detached attribute
+ pthread_attr_init( &attr);
+ pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_JOINABLE);
+
+ for( t = 0; t < NUM_THREADS; t++)
+ {
+ //Creating threads
+ rc = pthread_create( &thread[t], &attr, ThreadFunc, (void *) argv[1]);
+
+ if( rc)
+ {
+ cout << "Thread Creation Failed";
}
+ }
+
//Free attribute and wait for the other threads
- pthread_attr_destroy(&attr);
- /* Wait for the threads to terminate */
- for(t=0;t<NUM_THREADS;t++){
- rc = pthread_join(thread[t], &status);
- if (rc)
- {
- cout<<"ERROR from pthread_join()"<<endl;
- }
+ pthread_attr_destroy( &attr);
+
+ // Wait for the threads to terminate
+ for( t = 0; t < NUM_THREADS; t++)
+ {
+ rc = pthread_join( thread[t], &status);
+
+ if( rc)
+ {
+ cout << "ERROR from pthread_join()" << endl;
+ }
}
- #endif
- }catch(exception &e){
- cout<< e.what();
- }
- cout<<endl <<"----------------------------------TEST COMPLETE--------------------------------"<<endl;
+#endif
+ }
+ catch( exception &e)
+ {
+ cout << e.what();
+ }
+
+ cout << endl << "----------------------------------TEST COMPLETE--------------------------------" << endl;
}