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;
   }