axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Samisa Abeysinghe <samisa.abeysin...@gmail.com>
Subject Re: Common code in tests
Date Tue, 26 Jul 2005 08:13:45 GMT
Cool, I could use the "test.list" :-)

On 7/25/05, John Hawkins <HAWKINSJ@uk.ibm.com> wrote:
>  
> Perhaps you can just get away with a few key tests e.g. AxisBench for most
> times and then when you change some substantial function or a particular
> area that you don't know you can run all of them? 
>  
> I really think it's a benefit to have lots of small tests - waaaaay easier
> to debug :-) 
>  
>  
>  
>  
>  
>  Samisa Abeysinghe <samisa.abeysinghe@gmail.com> 
> 
> 25/07/2005 16:09 
>  
>  
> Please respond to
>  "Apache AXIS C Developers List" 
>  
>  
> To Apache AXIS C Developers List <axis-c-dev@ws.apache.org> 
>  
> cc 
>  
> Subject Re: Common code in tests 
>  
>  
>  
>  
>  
> Yes I understood your suggestion to replace common code.
>  
>  My Suggestion to have a combined test was to make life easy specially
>  wehn testing quick changes. With the current test framework, one of
>  the problems that I have is that I have to run the whole test suite to
>  check for side efects. However, if I had few tests then it would have
>  been much easier to test minor/ncremental code changes.
>  
>  
>  
>  On 7/25/05, Craig Stirling <CSTIRL@uk.ibm.com> wrote:
>  >  
>  > Rather than grouping tests together my mail was suggesting that within
> the
>  > current tests there is common code which could be replaced by calling a
>  > central header file. This would reduce duplication of code within the
> tests.
>  >  
>  > Creating more complex tests is a seperate issue. This often makes
> debugging
>  > of failing tests very difficult. Less complicated tests in a specific
> area
>  > are much easier to debug and maintain. 
>  >  
>  > Thanks 
>  > Craig 
>  > 
>  >  <==============================>
>  >      Craig Stirling
>  >      Web Services Cleint for C++ Test Coordinator
>  >      Tel: 249993
>  >       E-mail: craig@hursley.ibm.com
>  >    <==============================>
>  >  
>  >  
>  >  
>  >  
>  >  Samisa Abeysinghe <samisa.abeysinghe@gmail.com> 
>  > 
>  > 25-07-05 15:02 
>  >  
>  > Please respond to
>  >  "Apache AXIS C Developers List" 
>  >  
>  >  
>  > To Apache AXIS C Developers List <axis-c-dev@ws.apache.org> 
>  >  
>  > cc 
>  >  
>  > Subject Re: Common code in tests 
>  >  
>  >  
>  >  
>  >  
>  >  
>  > +1 from me too.
>  >  
>  >  I was infact once wondering of why not we have one large single test
>  >  to test for many scenarios at once rather than having several tests.
>  >  Like testing complex types, simple types and arrays could be combined
>  >  together into one test program and we could use exception model to
>  >  capture errors for different test scenarios within a single test
>  >  program.
>  >  
>  >  It is always easy to have few tests that cover the whole space.
>  >  
>  >  Thanks,
>  >  Samisa...
>  >  
>  >  On 7/25/05, Adrian Dick <adrian.dick@uk.ibm.com> wrote:
>  >  > +1
>  >  > 
>  >  > In addition to signal handling, it would also be good to include the
> MS
>  >  > VC++ 6 patch for cout of 64bit integers
>  >  > #ifdef WIN32
>  >  > #ifdef Q168440_WORKAROUND
>  >  >   // Bug in MS Visual C++ 6.0. Fixed in Visual C++ .Net version.
>  >  >   // Cannot print an __int64 number with cout without this overloading
>  >  >   std::ostream& operator<<(std::ostream& os, __int64 i )
>  >  >   {
>  >  >     char buf[40];
>  >  >     sprintf(buf,"%I64d", i );
>  >  >     os << buf;
>  >  >     return os;
>  >  >   }
>  >  > 
>  >  >   std::ostream& operator<<(std::ostream& os, unsigned __int64
i )
>  >  >   {
>  >  >     char buf[20];
>  >  >     sprintf(buf,"%I64u", i );
>  >  >     os << buf;
>  >  >     return os;
>  >  >   }
>  >  > #endif
>  >  > #endif
>  >  > 
>  >  > 
>  >  > I'm sure there are also other things to consider - perhaps providing a
>  >  > macro to handle (unexpected) exceptions in a consistent manner?
>  >  > 
>  >  > Regards,
>  >  > Adrian
>  >  > _______________________________________
>  >  > Adrian Dick (adrian.dick@uk.ibm.com)
>  >  > 
>  >  > 
>  >  > John Hawkins/UK/IBM@IBMGB wrote on 25/07/2005 14:10:25:
>  >  > 
>  >  > >
>  >  > > +1
>  >  > > Good idea Craig.
>  >  > >
>  >  > >
>  >  > >
>  >  > 
>  >  > >
>  >  > > Craig Stirling/UK/IBM@IBMGB
>  >  > > 25/07/2005 13:40
>  >  > >
>  >  > > Please respond to
>  >  > > "Apache AXIS C Developers List"
>  >  > >
>  >  > > To
>  >  > >
>  >  > > axis-c-dev@ws.apache.org
>  >  > >
>  >  > > cc
>  >  > >
>  >  > > Subject
>  >  > >
>  >  > > Common code in tests
>  >  > >
>  >  > >
>  >  > >
>  >  > >
>  >  > >
>  >  > > Looking through the tests it appears that lots of the code is common
>  >  > > to many tests. Included below is an example from a specific test
>  >  > > case. I have proceeded the common code with //example as well as
>  >  > > making it an alternative colour and bold.
>  >  > >
>  >  > > There will be other bits of function that could be pulled out of
>  >  > > testcases into common test header files as well.
>  >  > >
>  >  > > What do people think about the possibilty of separating common
>  >  > > features within tests into a header file that is used by all the
>  >  > > tests - so code wasn't duplicated and could be changed in one place.
>  >  > >
>  >  > >
> =====================================================
>  >  > >
>  >  > > #include "DataHandlerService.hpp"
>  >  > > #include <axis/AxisException.hpp>
>  >  > > #include <ctype.h>
>  >  > > #include <iostream>
>  >  > > #include <fstream>
>  >  > > #include <string.h>
>  >  > > #include <signal.h>  //example
>  >  > >
>  >  > > void sig_handler(int);   //example
>  >  > >
>  >  > > int main(int argc, char* argv[])
>  >  > > {
>  >  > >        char endpoint[256];
>  >  > >        const char*
>  > url="http://localhost:80/axis/DataHandlerService";
>  >  > 
>  >  > >        char *Result;
>  >  > >        url = argv[1];
>  >  > >        bool bSuccess = false;
>  >  > >        int        iRetryIterationCount = 3;
>  >  > >
>  >  > >        signal(SIGILL, sig_handler);             //example
>  >  > >        signal(SIGABRT, sig_handler);       //example
>  >  > >        signal(SIGSEGV, sig_handler);        //example
>  >  > >        //signal(SIGQUIT, sig_handler);       //example
>  >  > >        //signal(SIGBUS, sig_handler);        //example
>  >  > >        signal(SIGFPE, sig_handler);            //example
>  >  > >
>  >  > >        do
>  >  > >                {
>  >  > >                        try
>  >  > >                        {
>  >  > >                                sprintf(endpoint, "%s", url);
>  >  > >                                DataHandlerService ws(endpoint);
>  >  > >                                ISoapAttachment *att=ws.
>  >  > > createSoapAttachment();
>  >  > >                                char *text="This is a test message
>  >  > > for attachment";
>  >  > >                                //Adding the content type as
> text/plain
>  >  > >
>  >  > att->addHeader(AXIS_CONTENT_TYPE,"text/plain");
>  >  > >                                xsd__base64Binary b64b1;
>  >  > >                                b64b1.__ptr =
> (xsd__unsignedByte*)text;
>  >  > >                                b64b1.__size = strlen(text);
>  >  > 
>  >  > >                                att->addBody(&b64b1);
>  >  > >                                //Calling the dataHandlerService,
>  >  > > service will return content
>  >  > >                                Result=ws.echoContent(att);
>  >  > 
>  >  > >                            cout<<Result<<endl;
>  >  > >                                //Calling the dataHandlerService,
>  >  > > service will return content type
>  >  > >                                Result=ws.getContentType(att);
>  >  > >                                cout<<Result<<endl;
>  >  > >                            bSuccess = true;
>  >  > >                        }
>  >  > >        catch(AxisException& e)
>  >  > >        {
>  >  > >                        bool bSilent = false;
>  >  > >
>  >  > >                        if( e.getExceptionCode() ==
>  >  > > CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED)
>  >  > >                        {
>  >  > >                                if( iRetryIterationCount > 0)
>  >  > >                                {
>  >  > >                                        bSilent = true;
>  >  > >                                }
>  >  > >                        }
>  >  > >                        else
>  >  > >                        {
>  >  > >                                iRetryIterationCount = 0;
>  >  > >                        }
>  >  > >
>  >  > >            if( !bSilent)
>  >  > >                        {
>  >  > >                                cout << "Exception : " <<
e.what() <<
>  >  > endl;
>  >  > >                        }
>  >  > >        }
>  >  > >        catch(exception& e)
>  >  > >        {
>  >  > >            cout << "Unknown exception has occured" << endl;
>  >  > >        }
>  >  > >        catch(...)
>  >  > >        {
>  >  > >            cout << "Unknown exception has occured" << endl;
>  >  > >        }
>  >  > >                iRetryIterationCount--;
>  >  > >                } while( iRetryIterationCount > 0 && !bSuccess);
>  >  > >  cout<< "---------------------- TEST COMPLETE
>  >  > > -----------------------------"<< endl;
>  >  > >
>  >  > >        return 0;
>  >  > > }
>  >  > >
>  >  > > void sig_handler(int sig) {
>  >  > > //example
>  >  > >        signal(sig, sig_handler);
>  >  > //example
>  >  > >    cout << "SIGNAL RECEIVED " << sig << endl;    
    //example
>  >  > >        exit(1);
>  >  > 
>  >  > > //example
>  >  > > }
>  >  > 
>  >  > > //example
>  >  > >
>  >  > >
>  >  > > <==============================>
>  >  > >    Craig Stirling
>  >  > >    Web Services Client for C++ Test Coordinator
>  >  > >    Tel: 249993
>  >  > >     E-mail: craig@hursley.ibm.com
>  >  > >  <==============================>
>  >  > 
>  >  >
>  >  
>  >  
>  >
>  
>

Mime
View raw message