(file) Return to Tracer.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common / tests / Tracer

  1 mike  1.2 //%/////////////////////////////////////////////////////////////////////////////
  2           //
  3 kumpf 1.9 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,
  4 mike  1.2 // The Open Group, Tivoli Systems
  5           //
  6           // Permission is hereby granted, free of charge, to any person obtaining a copy
  7           // of this software and associated documentation files (the "Software"), to
  8           // deal in the Software without restriction, including without limitation the
  9           // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 10           // sell copies of the Software, and to permit persons to whom the Software is
 11           // furnished to do so, subject to the following conditions:
 12 kumpf 1.9 // 
 13 mike  1.2 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 14           // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 15           // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 16           // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 17           // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 18           // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 19           // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 20           // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 21           //
 22           //==============================================================================
 23           //
 24           // Author: Sushma Fernandes (sushma_fernandes@hp.com)
 25           //
 26 kumpf 1.4 // Modified By: Jenny Yu (jenny_yu@hp.com)
 27 kumpf 1.11 //              Carol Ann Krug Graves, Hewlett-Packard Company
 28            //                (carolann_graves@hp.com)
 29 mike  1.2  //
 30            //%/////////////////////////////////////////////////////////////////////////////
 31            
 32            #include <fstream>
 33            #include <cstring>
 34 kumpf 1.11 #include <Pegasus/Common/Destroyer.h>
 35 mike  1.2  #include <Pegasus/Common/System.h>
 36            #include <Pegasus/Common/Tracer.h>
 37            
 38            PEGASUS_USING_STD;
 39            PEGASUS_USING_PEGASUS;
 40            
 41            // If Windows platform then set the EOF_CHAR to 2
 42            #if defined(PEGASUS_OS_TYPE_WINDOWS)
 43                #define EOF_CHAR 2
 44            #else
 45                #define EOF_CHAR 1
 46            #endif
 47            
 48            // Trace files for test purposes
 49 kumpf 1.11 // Will be created in the $(PEGASUS_TMP) directory, or if not set,
 50            // in the current directory
 51            const char* FILE1;
 52            const char* FILE2;
 53            const char* FILE3;
 54            const char* FILE4;
 55 mike  1.2  
 56            // 
 57            // Reads the last trace message from a given trace file and compares the 
 58            // given string with the string read from file
 59            //
 60            // return 0 if the strings match
 61            // return 1 if the strings do not match
 62            //
 63            Uint32 compare(const char* fileName, const char* compareStr)
 64            {
 65                Uint32 count=0;
 66                Uint32 retCode=0;
 67                fstream file;
 68                Uint32 size=strlen(compareStr);
 69                char* readStr= new char[size+EOF_CHAR+1];
 70            
 71                file.open(fileName,fstream::in);
 72                if (!file.good())
 73                {
 74                    delete []readStr;
 75            	return 1;
 76 mike  1.2      }
 77 kumpf 1.5      file.seekg((Sint32) -(size+EOF_CHAR),fstream::end);
 78 kumpf 1.8      memset(readStr, 0, (size+EOF_CHAR+1)*sizeof(char));
 79 mike  1.2      file.read(readStr,size+EOF_CHAR);
 80                readStr[size]='\0';
 81                retCode=strcmp(compareStr,readStr);
 82                delete []readStr;
 83                file.close();
 84                return retCode;
 85            }
 86            
 87            //
 88            // Description:
 89            // Trace properties file, level and component are not set
 90            // Should not log a trace message
 91            //
 92            // Type:
 93            // Negative 
 94            //
 95            // return 0 if the test passed
 96            // return 1 if the test failed
 97            //
 98            Uint32 test1()
 99            {
100 mike  1.2      const char* METHOD_NAME = "test1";
101 kumpf 1.10     PEG_METHOD_ENTER(TRC_CONFIG,METHOD_NAME);
102 mike  1.2      Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL2,"%s %d",
103            	"This message should not appear value=",123);
104 kumpf 1.10     PEG_METHOD_EXIT();
105 mike  1.2      return(compare(FILE1,""));
106            }
107            
108            //
109            // Description:
110            // Trace properties level and component are not set
111            // Should not log a trace message
112            //
113            // Type:
114            // Negative 
115            //
116            // return 0 if the test passed
117            // return 1 if the test failed
118            //
119            Uint32 test2()
120            {
121                const char* METHOD_NAME = "test2";
122                Tracer::setTraceFile(FILE1);
123 kumpf 1.10     PEG_METHOD_ENTER(TRC_CONFIG,METHOD_NAME);
124 mike  1.2      Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL2,"%s %d",
125            	"This message should not appear value=",123);
126                return(compare(FILE1,"This message should not appear value=123"));
127            }
128            
129            //
130            // Description:
131            // Trace properties component is not set
132            // Should not log a trace message
133            //
134            // Type:
135            // Negative 
136            //
137            // return 0 if the test passed
138            // return 1 if the test failed
139            //
140            Uint32 test3()
141            {
142                const char* METHOD_NAME = "test3";
143                Tracer::setTraceLevel(Tracer::LEVEL1);
144 kumpf 1.10     PEG_METHOD_ENTER(TRC_CONFIG,METHOD_NAME);
145 mike  1.2      Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL2,"%s",
146            	"This message should not appear");
147                return(compare(FILE1,"This message should not appear"));
148            }
149            
150            //
151            // Description:
152            // Trace properties file, level and component are set
153            // should log a trace message
154            //
155            // Type:
156            // Positive 
157            //
158            // return 0 if the test passed
159            // return 1 if the test failed
160            //
161            Uint32 test4()
162            {
163                const char* METHOD_NAME = "test4";
164                Tracer::setTraceComponents("Config");
165 kumpf 1.10     PEG_METHOD_ENTER(TRC_CONFIG,METHOD_NAME);
166 mike  1.2      return(compare(FILE1,"Entering method test4"));
167            }
168            
169            //
170            // Description:
171            // Trace component is set to an invalid component
172            // should not log a trace message
173            //
174            // Type:
175            // Negative 
176            //
177            // return 0 if the test passed
178            // return 1 if the test failed
179            //
180            Uint32 test5()
181            {
182                const char* METHOD_NAME = "test5";
183                Tracer::setTraceComponents("Wrong Component Name");
184 kumpf 1.10     Tracer::traceExit(__FILE__,__LINE__,TRC_CONFIG,METHOD_NAME);
185 mike  1.2      return(compare(FILE1,"Entering method test4"));
186            }
187            
188            //
189            // Description:
190            // Trace level is set to LEVEL 2 and logs a LEVEL 4 message 
191            // should not log a trace message
192            //
193            // Type:
194            // Negative 
195            //
196            // return 0 if the test passed
197            // return 1 if the test failed
198            //
199            
200            Uint32 test6()
201            {
202                const char* METHOD_NAME = "test6";
203                Tracer::setTraceComponents("Config");
204                Tracer::setTraceLevel(Tracer::LEVEL2);
205                Tracer::trace(TRC_CONFIG,Tracer::LEVEL2,"%s %s",
206 mike  1.2  	"Test Message for Level2 in",METHOD_NAME);
207                Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL2,"%s %s",
208            	"Test Message for Level2 in",METHOD_NAME);
209                Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL4,"%s",
210            	"This Message should not appear");
211                return(compare(FILE1,"Test Message for Level2 in test6"));
212            }
213            
214            //
215            // Description:
216            // Trace level is set to an invalid level
217            // should not log a trace message
218            //
219            // Type:
220            // Negative 
221            //
222            // return 0 if the test passed
223            // return 1 if the test failed
224            //
225            Uint32 test7()
226            {
227 mike  1.2      const char* METHOD_NAME = "test7";
228                Tracer::setTraceLevel(100);
229 kumpf 1.10     Tracer::traceExit(__FILE__,__LINE__,TRC_CONFIG,METHOD_NAME);
230 mike  1.2      return(compare(FILE1,"Test Message for Level2 in test6"));
231            }
232            
233            //
234            // Description:
235            // Trace level is set to LEVEL1 for a non entry/exit message
236            // should not log a trace message, should log an error
237            //
238            // Type:
239            // Negative 
240            //
241            // return 0 if the test passed
242            // return 1 if the test failed
243            //
244            Uint32 test8()
245            {
246                const char* METHOD_NAME = "test8";
247                Tracer::setTraceLevel(Tracer::LEVEL1);
248                Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL1,"%s",
249            	"Test Message for Level4");
250                return(compare(FILE1,"Test Message for Level2 in test6"));
251 mike  1.2  }
252            
253            //
254            // Description:
255            // Changes the trace file to FILE2 
256            //
257            // Type:
258            // Positive 
259            //
260            // return 0 if the test passed
261            // return 1 if the test failed
262            //
263            Uint32 test9()
264            {
265                const char* METHOD_NAME = "test9";
266                Tracer::setTraceLevel(Tracer::LEVEL3);
267                Tracer::setTraceFile(FILE2);
268            
269 kumpf 1.10     PEG_METHOD_ENTER(TRC_CONFIG,METHOD_NAME);
270 mike  1.2      Tracer::trace(TRC_CONFIG,Tracer::LEVEL3,"%s %s",
271            	"Test Message for Level3 in",METHOD_NAME);
272                return(compare(FILE2,"Test Message for Level3 in test9"));
273            }
274            
275            //
276            // Description:
277            // Passes invalid component in the trace call
278            // should not log a trace message
279            //
280            // Type:
281            // Negative 
282            //
283            // return 0 if the test passed
284            // return 1 if the test failed
285            //
286            
287            Uint32 test10()
288            {
289                const char* METHOD_NAME = "test10";
290                Tracer::setTraceComponents("ALL");
291 kumpf 1.10     Tracer::traceExit(__FILE__,__LINE__,Uint32(-1),METHOD_NAME);
292 mike  1.2      return(compare(FILE2,"Test Message for Level3 in test9"));
293            }
294            
295            //
296            // Description:
297            // Implements trace call for Tracer::Level1
298            // should log a trace message
299            //
300            // Type:
301            // Positive 
302            //
303            // return 0 if the test passed
304            // return 1 if the test failed
305            //
306            
307            Uint32 test11()
308            {
309                const char* METHOD_NAME = "test11";
310                Tracer::setTraceComponents("ALL");
311                Tracer::setTraceLevel(Tracer::LEVEL4);
312 kumpf 1.10     PEG_METHOD_ENTER(TRC_CONFIG,METHOD_NAME);
313 mike  1.2      return(compare(FILE2,"Entering method test11"));
314            }
315            
316            //
317            // Description:
318            // Implements trace call for Tracer::Level1
319            // should log a trace message
320            //
321            // Type:
322            // Positive 
323            //
324            // return 0 if the test passed
325            // return 1 if the test failed
326            //
327            
328            Uint32 test12()
329            {
330                const char* METHOD_NAME = "test12";
331                Tracer::setTraceComponents("ALL");
332                Tracer::setTraceLevel(Tracer::LEVEL4);
333 kumpf 1.10     Tracer::traceExit(__FILE__,__LINE__,TRC_CONFIG,METHOD_NAME);
334 mike  1.2      return(compare(FILE2,"Exiting method test12"));
335            }
336            
337            //
338            // Description:
339            // Implements trace call for Tracer::Level2
340            // should log a trace message
341            //
342            // Type:
343            // Positive 
344            //
345            // return 0 if the test passed
346            // return 1 if the test failed
347            //
348            
349            Uint32 test13()
350            {
351                const char* METHOD_NAME = "test13";
352                Tracer::setTraceComponents("ALL");
353                Tracer::setTraceLevel(Tracer::LEVEL4);
354                Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL2,"%s %s",
355 mike  1.2  	"Test Message for Level2 in",METHOD_NAME);
356                return(compare(FILE2,"Test Message for Level2 in test13"));
357            }
358            
359            //
360            // Description:
361            // Implements trace call for Tracer::Level3
362            // should log a trace message
363            //
364            // Type:
365            // Positive 
366            //
367            // return 0 if the test passed
368            // return 1 if the test failed
369            //
370            
371            Uint32 test14()
372            {
373                const char* METHOD_NAME = "test14";
374                Tracer::setTraceComponents("ALL");
375                Tracer::setTraceLevel(Tracer::LEVEL4);
376 mike  1.2      Tracer::setTraceFile(FILE3);
377                Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL3,"%s %s",
378            	"Test Message for Level3 in",METHOD_NAME);
379                return(compare(FILE3,"Test Message for Level3 in test14"));
380            }
381            
382            //
383            // Description:
384            // Implements trace call for Tracer::Level4
385            // should log a trace message
386            //
387            // Type:
388            // Positive 
389            //
390            // return 0 if the test passed
391            // return 1 if the test failed
392            //
393            
394            Uint32 test15()
395            {
396                const char* METHOD_NAME = "test15";
397 mike  1.2      Tracer::setTraceComponents("ALL");
398                Tracer::setTraceLevel(Tracer::LEVEL4);
399                Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL4,"%s %s",
400            	"Test Message for Level4 in",METHOD_NAME);
401                return(compare(FILE3,"Test Message for Level4 in test15"));
402            }
403            
404            //
405            // Description:
406            // calls the setTraceComponents with null string
407            // should log a trace message
408            //
409            // Type:
410            // Negative 
411            //
412            // return 0 if the test passed
413            // return 1 if the test failed
414            //
415            
416            Uint32 test16()
417            {
418 mike  1.2      const char* METHOD_NAME = "test16";
419                Tracer::setTraceComponents("");
420                Tracer::setTraceLevel(Tracer::LEVEL4);
421                Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL4,"%s %s",
422            	"This Message should not appear in",METHOD_NAME);
423                return(compare(FILE3,"Test Message for Level4 in test15"));
424            }
425            
426            //
427            // Description:
428            // calls the setTraceComponents with one valid and another invalid component
429            // should log a trace message
430            //
431            // Type:
432            // Negative 
433            //
434            // return 0 if the test passed
435            // return 1 if the test failed
436            //
437            
438            Uint32 test17()
439 mike  1.2  {
440                const char* METHOD_NAME = "test17";
441 kumpf 1.3      Tracer::setTraceComponents("InvalidComp");
442 mike  1.2      Tracer::setTraceLevel(Tracer::LEVEL4);
443                Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL4,"%s %s",
444            	"This Message should not appear in",METHOD_NAME);
445                return(compare(FILE3,"Test Message for Level4 in test15"));
446            }
447 kumpf 1.3  //
448            // Description:
449            // calls the _traceBuffer call
450            // should log a trace message
451            //
452            // Type:
453            // Positive
454            //
455            // return 0 if the test passed
456            // return 1 if the test failed
457            //
458            
459            Uint32 test18()
460            {
461                const char* METHOD_NAME = "test18";
462                Tracer::setTraceComponents("Config,InvalidComp");
463                Tracer::setTraceLevel(Tracer::LEVEL4);
464                Tracer::traceBuffer(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL4,
465                    "This Message should appear in",4);
466                Tracer::traceBuffer(TRC_CONFIG,Tracer::LEVEL4,
467                    "This Message should appear in",4);
468 kumpf 1.3      return(compare(FILE3,"This"));
469            }
470            
471            //
472            // Description:
473            // calls the isValid call 
474            // should not log a trace message
475            //
476            // Type:
477            // Positive
478            //
479            // return 0 if the test passed
480            // return 1 if the test failed
481            //
482            
483            Uint32 test19()
484            {
485 kumpf 1.4      const char* METHOD_NAME = "test18";
486                Tracer::setTraceComponents("Config,InvalidComp");
487 kumpf 1.3      Tracer::setTraceLevel(Tracer::LEVEL4);
488 kumpf 1.4      Tracer::traceBuffer(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL4,
489                    "This Message should appear in",4);
490                Tracer::traceBuffer(TRC_CONFIG,Tracer::LEVEL4,
491                    "This Message should appear in",4);
492 kumpf 1.3      return(compare(FILE3,"This"));
493            }
494 mike  1.2  
495 kumpf 1.4  //
496            // Description:
497            // Trace a string.
498            // Calls the _traceString() method
499            // should log a trace message
500            //
501            // Type:
502            // Positive
503            //
504            // return 0 if the test passed
505            // return 1 if the test failed
506            //
507            
508            Uint32 test20()
509            {
510                const char* METHOD_NAME = "test20";
511                Tracer::setTraceFile(FILE4);
512                Tracer::setTraceComponents("ALL");
513                Tracer::setTraceLevel(Tracer::LEVEL4);
514            
515                PEG_METHOD_ENTER(TRC_CONFIG, METHOD_NAME);
516 kumpf 1.4      Tracer::trace(__FILE__,__LINE__,TRC_CONFIG,Tracer::LEVEL4,
517            	"Test Message for Level4 in test20");
518                return(compare(FILE4,"Test Message for Level4 in test20"));
519            }
520            
521            //
522            // Description:
523            // Trace a CIMException.
524            // Calls the traceCIMException() method
525            // should log a trace message
526            //
527            // Type:
528            // Positive
529            //
530            // return 0 if the test passed
531            // return 1 if the test failed
532            //
533            
534            Uint32 test21()
535            {
536                const char* METHOD_NAME = "test21";
537 kumpf 1.4      Tracer::setTraceFile(FILE4);
538                Tracer::setTraceComponents("ALL");
539                Tracer::setTraceLevel(Tracer::LEVEL4);
540            
541                PEG_METHOD_ENTER(TRC_CONFIG, METHOD_NAME);
542            
543                // test tracing CIMException
544                try
545                {
546                    throw PEGASUS_CIM_EXCEPTION(
547                        CIM_ERR_NOT_SUPPORTED, 
548                        "CIM Exception Message for Level4 in test21.");
549                }
550 kumpf 1.12     catch (CIMException& e)
551 kumpf 1.4      {
552                    Tracer::traceCIMException(TRC_CONFIG,Tracer::LEVEL4, e);
553                }
554            
555                return 0;
556            }
557            
558            //
559            // Description:
560            // Trace a string using macro.
561            // should log a trace message
562            //
563            // Type:
564            // Positive
565            //
566            // return 0 if the test passed
567            // return 1 if the test failed
568            //
569            Uint32 test22()
570            {
571                const char* METHOD_NAME = "test22";
572 kumpf 1.4      Tracer::setTraceFile(FILE4);
573                Tracer::setTraceComponents("ALL");
574                Tracer::setTraceLevel(Tracer::LEVEL4);
575            
576                PEG_METHOD_ENTER(TRC_CONFIG, METHOD_NAME);
577            
578                PEG_TRACE_STRING(TRC_CONFIG,Tracer::LEVEL4,"Test message for Level4 in test22.");
579            
580                return(compare(FILE4,"Test message for Level4 in test22."));
581            }
582            
583 karl  1.7  int main(int argc, char** argv)
584 mike  1.2  {
585            
586            // Execute the tests only if trace calls are included
587            
588            #ifdef PEGASUS_REMOVE_TRACE
589 karl  1.7      cout << argv[0] << " +++++ passed all tests" << endl;
590 mike  1.2      return 0;
591            #else
592 kumpf 1.11 
593                const char* tmpDir = getenv ("PEGASUS_TMP");
594                if (tmpDir == NULL)
595                {
596                    tmpDir = ".";
597                }
598                String f1 (tmpDir);
599 kumpf 1.13     f1.append("/testtracer1.trace");
600 kumpf 1.11     ArrayDestroyer <char> f1d (f1.allocateCString ());
601                FILE1 = f1d.getPointer ();
602                String f2 (tmpDir);
603 kumpf 1.13     f2.append("/testtracer2.trace");
604 kumpf 1.11     ArrayDestroyer <char> f2d (f2.allocateCString ());
605                FILE2 = f2d.getPointer ();
606                String f3 (tmpDir);
607 kumpf 1.13     f3.append("/testtracer3.trace");
608 kumpf 1.11     ArrayDestroyer <char> f3d (f3.allocateCString ());
609                FILE3 = f3d.getPointer ();
610                String f4 (tmpDir);
611 kumpf 1.13     f4.append("/testtracer4.trace");
612 kumpf 1.11     ArrayDestroyer <char> f4d (f4.allocateCString ());
613                FILE4 = f4d.getPointer ();
614            
615 mike  1.2      System::removeFile(FILE1);
616                System::removeFile(FILE2);
617                System::removeFile(FILE3);
618 kumpf 1.4      System::removeFile(FILE4);
619 mike  1.2      if (test1() == 0)
620                {
621                   cout << "Tracer test (test1) failed" << endl;
622                   exit(1);
623                }
624                if (test2() == 0)
625                {
626                   cout << "Tracer test (test2) failed" << endl;
627                   exit(1);
628                }
629                if (test3() == 0)
630                {
631                   cout << "Tracer test (test3) failed" << endl;
632                   exit(1);
633                }
634                if (test4() != 0)
635                {
636                   cout << "Tracer test (test4) failed" << endl;
637                   exit(1);
638                }
639                if (test5() != 0)
640 mike  1.2      {
641                   cout << "Tracer test (test5) failed" << endl;
642                   exit(1);
643                }
644                if (test6() != 0)
645                {
646                   cout << "Tracer test (test6) failed" << endl;
647                   exit(1);
648                }
649                if (test7() != 0)
650                {
651                   cout << "Tracer test (test7) failed" << endl;
652                   exit(1);
653                }
654                if (test8() != 0)
655                {
656                   cout << "Tracer test (test8) failed" << endl;
657                   exit(1);
658                }
659                if (test9() != 0)
660                {
661 mike  1.2         cout << "Tracer test (test9) failed" << endl;
662                   exit(1);
663                }
664                if (test10() != 0)
665                {
666                   cout << "Tracer test (test10) failed" << endl;
667                   exit(1);
668                }
669                if (test11() != 0)
670                {
671                   cout << "Tracer test (test11) failed" << endl;
672                   exit(1);
673                }
674                if (test12() != 0)
675                {
676                   cout << "Tracer test (test12) failed" << endl;
677                   exit(1);
678                }
679                if (test13() != 0)
680                {
681                   cout << "Tracer test (test13) failed" << endl;
682 mike  1.2         exit(1);
683                }
684                if (test14() != 0)
685                {
686                   cout << "Tracer test (test14) failed" << endl;
687                   exit(1);
688                }
689                if (test15() != 0)
690                {
691                   cout << "Tracer test (test15) failed" << endl;
692                   exit(1);
693                }
694                if (test16() != 0)
695                {
696                   cout << "Tracer test (test16) failed" << endl;
697 kumpf 1.3         exit(1);
698                }
699                if (test17() != 0)
700                {
701                   cout << "Tracer test (test17) failed" << endl;
702                   exit(1);
703                }
704                if (test18() != 0)
705                {
706                   cout << "Tracer test (test18) failed" << endl;
707                   exit(1);
708                }
709                if (test19() != 0)
710                {
711                   cout << "Tracer test (test19) failed" << endl;
712 mike  1.2         exit(1);
713                }
714 kumpf 1.4      if (test20() != 0)
715                {
716                   cout << "Tracer test (test20) failed" << endl;
717                   exit(1);
718                }
719                if (test21() != 0)
720                {
721                   cout << "Tracer test (test21) failed" << endl;
722                   exit(1);
723                }
724                if (test22() != 0)
725                {
726                   cout << "Tracer test (test22) failed" << endl;
727                   exit(1);
728                }
729 karl  1.7      cout << argv[0] << " +++++ passed all tests" << endl;
730 mike  1.2      System::removeFile(FILE1);
731                System::removeFile(FILE2);
732                System::removeFile(FILE3);
733 kumpf 1.4      System::removeFile(FILE4);
734 mike  1.2      return 0;
735            #endif
736            }
737            

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2