Changeset 3690 for trunk/psLib/test/FullUnitTest
- Timestamp:
- Apr 8, 2005, 2:04:58 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/test/FullUnitTest (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/test/FullUnitTest
r3599 r3690 19 19 # RETURN : integer number of tests which failed 20 20 # 21 # $Revision: 1.2 1$ $Name: not supported by cvs2svn $22 # $Date: 2005-0 3-31 23:37:09$21 # $Revision: 1.22 $ $Name: not supported by cvs2svn $ 22 # $Date: 2005-04-09 00:04:57 $ 23 23 # 24 24 # Copyright 2004 Maui High Performance Computing Center, University of Hawaii 25 25 # 26 26 ############################################################################## 27 28 use FindBin qw($Bin); 29 30 $runTest = "$Bin/runTest"; 27 31 28 32 # Provide functions for determining the pathname of current working directory … … 311 315 $totalTestDrivers++; 312 316 313 # Perform subdirectory checks only the first time a test314 # file is found with the list of enteries315 if ( $initialTest == 0 ) {316 $initialTest++;317 318 # Check for a temp subdirectory already exists and if not319 # then create one320 &checkForTempDirectory();321 322 # Check for the presence of verified directory323 if ( &checkForVerifiedDirectory() ) {324 325 # Display message to user that verified directories do not326 # exist eventhough TST files have been found327 # print("Unable to execute test drivers in $base_dir\n");328 print("No verified subdirectory present.\n") if ($verbose);329 330 # Increment test fail count331 # $testDriverFailCount++;332 # Save the file failed333 # push(@testsFailed, $pwd . "/" . $files[$j]);334 # return;335 }336 }337 338 317 # Display message to user of which test driver is being executed 339 318 print("--- Executing test driver $files[$j]\n") if ( !$silent ); 340 319 341 320 # Execute the test driver 342 system( 343 "./$files[$j] 1> temp/$files[$j].stdout 2> temp/$files[$j].stderr" 344 ); 321 if ($silent) { 322 system("$runTest --quiet ./$files[$j]"); 323 } elsif ($verbose) { 324 system("$runTest --printpassfail ./$files[$j]"); 325 } else { 326 system("$runTest ./$files[$j]"); 327 } 345 328 $retVal = $?; 346 329 … … 357 340 358 341 # Check result of test driver 359 if ( ( ( $retVal != 0 ) && ( $files[$j] =~ /^TST/i ) ) 360 || ( ( $retVal == 0 ) && ( $files[$j] =~ /^ATST/i ) ) ) 342 if ( $retVal != 0 ) 361 343 { 362 344 … … 372 354 push( @testsFailed, $pwd . "/" . $files[$j] ); 373 355 } 374 else {375 376 # Create filter versions of STDOUT and STDERR to replace variable377 # items such as date, time and host378 &filterStdFiles( $files[$j] );379 380 # Perform difference on STDOUT file collected381 # with verified files382 $exitValue = &compareStream("verified/$files[$j].stdout");383 if ( $exitValue & 2 ) {384 385 # STDOUT verified doesn't exist. Search STDOUT capture386 # for strings indicating error or failure387 $exitValue |= &errorStrSearch("$files[$j].stdout");388 }389 if ( ( $exitValue & 8 ) || ( $exitValue & 64 ) ) {390 391 # Increment the total number of test failed392 $testDriverFailCount++;393 394 # Push test on failed list395 print(396 "Test failed ($failPoints out of $totalPoints testpoints failed)\n"397 )398 if ( !$silent );399 push( @testsFailed, $pwd . "/" . $files[$j] );400 }401 else {402 403 # Perform difference on STDERR file collection with verified404 $exitValue = &compareStream("verified/$files[$j].stderr");405 if ( $exitValue & 4 ) {406 407 # STDERR verified doesn't exist. Search STDERR capture408 # for strings indicating error or failure409 $exitValue |= &errorStrSearch("$files[$j].stderr");410 }411 if ( ( $exitValue & 16 ) || ( $exitValue & 128 ) ) {412 413 # Increment the total number of tests failed414 $testDriverFailCount++;415 416 # Push test on failed list417 print(418 "Test failed ($failPoints out of $totalPoints testpoints failed)\n"419 )420 if ( !$silent );421 push( @testsFailed, $pwd . "/" . $files[$j] );422 }423 else {424 print("Test successful ($totalPoints testpoints)\n")425 if ( !$silent );426 }427 }428 }429 356 } 430 357 $j++; … … 432 359 } 433 360 434 ################################################################################435 #436 # SUBROUTINE: errorStrSearch437 #438 # Description: This subroutine will search the file specified in its439 # parameter for error strings and if they do exists440 # the appropriate value will be returned.441 #442 # Parameter(s): fileName - input file to search for strings443 #444 # Return: 0 - No error strings found445 # 64 - Error strings found in STDOUT446 # 128 - Error strings found in STDERR447 #448 ###############################################################################449 450 sub errorStrSearch {451 local ($fileName) = @_;452 local ($returnVal) = 0;453 454 # Open the captured file455 open( CAPT_FILE, "<temp/$fileName" );456 457 # Scan through all the lines of the file searching for error strings458 while (<CAPT_FILE>) {459 if ( m/FAIL/i460 || m/FAULT/i461 || m/ERROR/i462 || m/Not Found/i463 || m/SIGNAL/i464 || m/NO SUCH FILE/i465 || m/\|E\|/i466 || m/\|A\|/i )467 {468 print;469 if ( $fileName =~ m/out/ ) {470 print(471 " Failed - File $fileName contains error strings.\n"472 );473 $returnVal = 64;474 }475 elsif ( $fileName =~ m/err/ ) {476 print(477 " Failed - File $fileName contains error strings.\n"478 );479 $returnVal = 128;480 }481 last;482 }483 }484 485 # Close the capture file486 close(CAPT_FILE);487 488 # Return the return value489 return ($returnVal);490 }491 492 ################################################################################493 #494 # SUBROUTINE: compareStream495 #496 # Description: This subroutine will compare the captured stream file with497 # a file in the verified directory if one exists.498 #499 # Parameter(s): streamFile - input file to compare500 #501 # Return: 0 - Compare successful502 # 2 - STDOUT verified file doesn't exist503 # 4 - STDERR verified file doesn't exist504 # 8 - STDOUT verified file doesn't compare505 # 16 - STDERR verified file doesn't compare506 #507 ###############################################################################508 509 sub compareStream {510 local ($streamFile) = @_;511 local ($returnVal) = 0;512 local ($tempFile) = "";513 514 # Check for existence of verified STD stream files515 if ( !( -e $streamFile ) ) {516 517 # Display message to user that verified STDOUT file doesn't exist518 print(" File $streamFile doesn't exist.\n") if ($verbose);519 520 # Set exit value bit 1 to indicate proper failure521 if ( $streamFile =~ /out$/ ) {522 $returnVal |= 2;523 }524 elsif ( $streamFile =~ /err$/ ) {525 $returnVal |= 4;526 }527 }528 else {529 530 # Verified STD stream file exists531 532 # Create name of the temp file to compare533 $tempFile = $streamFile;534 $tempFile =~ s/verified/temp/;535 $tempFile = $tempFile . ".mod";536 537 # Perform difference on the STD stream files538 $diffstdout = `diff $streamFile $tempFile`;539 540 # Check the return value of the difference541 if ( $? != 0 ) {542 543 # Difference of STD stream files failed544 545 # Check for STDOUT in file name to convey appropirate return value546 if ( $streamFile =~ /out$/ ) {547 548 # Display message of the failure of difference to user549 print(" Failed - STDOUT difference\n$diffstdout\n");550 551 # Exit value to indicate STDOUT did not compare552 $returnVal |= 8;553 }554 elsif ( $streamFile =~ /err$/ ) {555 556 # Display message of the failure of difference to user557 print(" Failed - STDERR difference\n$diffstdout\n");558 559 # Exit value to indicate STDERR did not compare560 $returnVal |= 16;561 }562 }563 }564 565 # Return the result of the compare566 return ($returnVal);567 }568 569 ################################################################################570 #571 # SUBROUTINE: checkForTempDirectory572 #573 # Description: This subroutine will check for the existence of a temp574 # directory to store STDOUT, STDERR files during test. If575 # the subdirectory doesn't exist, it will be created.576 #577 # Parameter(s): None578 #579 # Return: None580 #581 ################################################################################582 583 sub checkForTempDirectory {584 585 # Check if a temp directory already exists in the current work directory586 if ( !( -e "temp" ) ) {587 588 # Create temp directory to store STDOUT, STDERR files during test589 `mkdir temp`;590 591 # Display message of new directory created592 print("Creating temp directory\n") if ($verbose);593 }594 }595 596 ################################################################################597 #598 # SUBROUTINE: checkForVerifiedDirectory599 #600 # Description: This subroutine will check for the existence of a verified601 # directory which stores verified STDOUT, STDERR files for602 # comparison during the test.603 #604 # Parameter(s): None605 #606 # Return: 0 - subdirectory present607 # 1 - subdirectory not present608 #609 ################################################################################610 611 sub checkForVerifiedDirectory {612 $returnValue = 0;613 614 # Check if verified subdirectory exists in the current working directory615 if ( !( -e "verified" ) ) {616 617 # Set return value to 1618 $returnValue = 1;619 }620 return ($returnValue);621 }622 623 ################################################################################624 #625 # SUBROUTINE: filterStdFiles626 #627 # Description: This subroutine will filter variable items in the STDOUT628 # and STDERR files captured. Date, time and host names629 # are variable items in the log messages captured.630 #631 # Parameter(s): test file name632 #633 # Return: None634 #635 ################################################################################636 637 sub filterStdFiles {638 639 local ($fileName) = @_;640 641 # Open the STDOUT file for reading642 open( OUTFILE, "< temp/$fileName.stdout" );643 644 # Open mod file to place filtered STDOUT645 open( MODFILE, "> temp/$fileName.stdout.mod" );646 647 # Replace the variable data, time and host information with constants648 $hostname = `hostname`;649 chop $hostname;650 while (<OUTFILE>) {651 s/\s+\d+:\d+:\d+\w/<TIME>/g;652 s/\d+:\d+:\d+/<DATE>/g;653 s/$hostname\s*/<HOST>/g;654 s/: Line \d+/: Line <LINENO>/g;655 s/\(.*\:\d+\)/\(FILE\:LINENO\)/g;656 s/\s+[\_\-\/\.\w]+\:\d+/ FILE\:LINENO/g;657 s/allocate \d+ bytes at/allocate <N> bytes at/g;658 s/v\d+.\d+.\d+/vX.X.X/g;659 660 # Filter lines with *** malloc. This is an artifact of Mac testing of661 # memory functions662 if ( !m/\*\*\*\smalloc/ ) {663 print MODFILE ($_);664 }665 }666 667 # Close mod file668 close(MODFILE);669 670 # Close STDERR file671 close(OUTFILE);672 673 # Open the STDERR file for reading674 open( OUTFILE, "< temp/$fileName.stderr" );675 676 # Open mod file to place filtered STDERR677 open( MODFILE, "> temp/$fileName.stderr.mod" );678 679 # Replace the variable date, time and host information with constants680 while (<OUTFILE>) {681 s/\s+\d+:\d+:\d+\w/<TIME>/g;682 s/\d+:\d+:\d+/<DATE>/g;683 s/$hostname\s*/<HOST>/g;684 s/: Line \d+/: Line <LINENO>/g;685 s/\(.*\:\d+\)/\(FILE\:LINENO\)/g;686 s/\s+[\_\-\/\.\w]+\:\d+/ FILE\:LINENO/g;687 s/allocate \d+ bytes at/allocate <N> bytes at/g;688 s/v\d+.\d+.\d+/vX.X.X/g;689 690 # Filter lines with *** malloc. This is an artifact of Mac testing of691 # memory functions692 if ( !m/\*\*\*\smalloc/ ) {693 print MODFILE ($_);694 }695 }696 697 # Close mod file698 close(MODFILE);699 700 # Close STDERR file701 close(OUTFILE);702 }703
Note:
See TracChangeset
for help on using the changeset viewer.
