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 <[EMAIL PROTECTED]>
25/07/2005 16:09
|
|
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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
> <==============================>
>
>
>
>
> Samisa Abeysinghe <[EMAIL PROTECTED]>
>
> 25-07-05 15:02
>
> Please respond to
> "Apache AXIS C Developers List"
>
>
> To Apache AXIS C Developers List <[email protected]>
>
> 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 <[EMAIL PROTECTED]> 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 ([EMAIL PROTECTED])
> >
> >
> > John Hawkins/UK/[EMAIL PROTECTED] wrote on 25/07/2005 14:10:25:
> >
> > >
> > > +1
> > > Good idea Craig.
> > >
> > >
> > >
> >
> > >
> > > Craig Stirling/UK/[EMAIL PROTECTED]
> > > 25/07/2005 13:40
> > >
> > > Please respond to
> > > "Apache AXIS C Developers List"
> > >
> > > To
> > >
> > > [email protected]
> > >
> > > 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=""> > >
> > > char *Result;
> > > url = ""> > > > 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: [EMAIL PROTECTED]
> > > <==============================>
> >
> >
>
>
>
