Changeset 1490
- Timestamp:
- Aug 11, 2004, 1:42:49 PM (22 years ago)
- Location:
- trunk/psLib/test
- Files:
-
- 2 edited
-
FullUnitTest (modified) (24 diffs)
-
runTest (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/test/FullUnitTest
r1404 r1490 19 19 # RETURN : integer number of tests which failed 20 20 # 21 # $Revision: 1.1 1$ $Name: not supported by cvs2svn $22 # $Date: 2004-08- 06 21:50:13$21 # $Revision: 1.12 $ $Name: not supported by cvs2svn $ 22 # $Date: 2004-08-11 23:42:49 $ 23 23 # 24 24 # Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 35 35 # The ! option allows for --nooption to be set to zero 36 36 # (e.g. --noverbose --recursive causes $verbose=0 and $recursive=1) 37 GetOptions("verbose!"=>\$verbose, 38 "recursive!"=>\$recursive, 39 "silent!"=>\$silent, 40 "clean!"=>\$clean); 37 GetOptions( 38 "verbose!" => \$verbose, 39 "recursive!" => \$recursive, 40 "silent!" => \$silent, 41 "clean!" => \$clean 42 ); 41 43 42 44 # Check if both silent and verbose options are set and if so stop the script 43 die "Can't specify both verbose and silent options." if ( $verbose && $silent);45 die "Can't specify both verbose and silent options." if ( $verbose && $silent ); 44 46 45 47 # Set up the PSLIB_ROOT environment variable if the user doesn't have 46 if (! $ENV{'PSLIB_ROOT'}) { 48 if ( !$ENV{'PSLIB_ROOT'} ) { 49 47 50 # Use the directory directly above where FullUnitTest script resides 48 51 $PSLIB_ROOT = `cd ..;pwd`; 52 49 53 # Remove newline for the end of path returned 50 54 chomp($PSLIB_ROOT); 55 51 56 # Set the environment variable 52 57 $ENV{'PSLIB_ROOT'} = $PSLIB_ROOT; … … 56 61 # add PSLIB_ROOT/lib to LD_LIBRARY_PATH and DYLD_LIBRARY_PATH environment 57 62 # variables 58 $ENV{'LD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'LD_LIBRARY_PATH'}";63 $ENV{'LD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'LD_LIBRARY_PATH'}"; 59 64 $ENV{'DYLD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'DYLD_LIBRARY_PATH'}"; 60 65 61 66 # Initialize variables for counting the makes and test failures and the 62 67 # total makes and tests performed 63 $makeFailCount = 0;64 $testpointFailCount = 0;68 $makeFailCount = 0; 69 $testpointFailCount = 0; 65 70 $testDriverFailCount = 0; 66 $totalTestpoints = 0;67 $totalTestDrivers = 0;68 $totalMakes = 0;71 $totalTestpoints = 0; 72 $totalTestDrivers = 0; 73 $totalMakes = 0; 69 74 70 75 # Initialize variable indicating how many arguements were passed … … 73 78 # Loop through all the arguements passed to the script 74 79 foreach (@ARGV) { 80 75 81 # Remove newline if there is one 76 82 chomp; 83 77 84 # Increment number of arguements found 78 85 $args++; 86 79 87 # Set variable to current working directory 80 88 $cwd = cwd; 89 81 90 # Change directory to the directory of the arguement 82 91 chdir($_); 92 83 93 # Check for the recursive option 84 94 if ($recursive) { 95 85 96 # Invoke subroutine to go to the lowest directory in tree 86 97 # starting at the specified directory 87 98 &worm($_); 88 } else { 99 } 100 else { 101 89 102 # Invoke subroutines to run the test at the specified directory 90 103 &makeTestDrivers($_); 91 104 &executeTestDrivers($_); 92 105 } 106 93 107 # Change directory back to the directory where FullUnitTest was invoked 94 108 chdir($cwd); … … 96 110 97 111 # Check if there were no arguements specified 98 if ($args == 0){ 112 if ( $args == 0 ) { 113 99 114 # Display message to user that all directories under the current will be 100 115 # tested 101 116 print("Recursively testing current directory tree.\n") if $verbose; 117 102 118 # Invoke subroutine to go to recursively test each directory in tree 103 &worm( $ENV{"PWD"});119 &worm( $ENV{"PWD"} ); 104 120 } 105 121 106 122 # Check if there were any failures during make or testing 107 if ($makeFailCount>0 || $testDriverFailCount>0) { 123 if ( $makeFailCount > 0 || $testDriverFailCount > 0 ) { 124 108 125 # Display summary of failures 109 126 print("\nMake Failures = $makeFailCount out of $totalMakes"); 110 127 print("\nTest Driver Failures = $testDriverFailCount out of $totalTestDrivers\n"); 111 print("\nMakes that failed:\n ".join("\n ",@makesFailed) . "\n") if $makeFailCount; 112 print("\nTests that failed:\n ".join("\n ",@testsFailed) . "\n") if $testDriverFailCount; 113 } else { 128 print( "\nMakes that failed:\n " . join( "\n ", @makesFailed ) . "\n" ) if $makeFailCount; 129 print( "\nTests that failed:\n " . join( "\n ", @testsFailed ) . "\n" ) if $testDriverFailCount; 130 } 131 else { 132 114 133 # Display message of all makes and tests pass to user if silent option 115 134 # not specified 116 print("\nAll $totalTestDrivers Test Drivers Passed with $totalTestpoints Testpoints.\n") if ( ! $silent);135 print("\nAll $totalTestDrivers Test Drivers Passed with $totalTestpoints Testpoints.\n") if ( !$silent ); 117 136 } 118 137 … … 120 139 exit($testDriverFailCount); 121 140 122 123 141 ################################################################################ 124 142 # … … 127 145 # Description: This subroutine will perform the necessary unit tests be 128 146 # calling makeTestDrivers and executeTestDrivers subroutines 129 # and then check each subdirectory below the base directory 147 # and then check each subdirectory below the base directory 130 148 # recursively. 131 149 # … … 137 155 138 156 sub worm { 157 139 158 # Assign local variable to input parameter 140 local ($base_dir) = @_;141 local (@files, $i);159 local ($base_dir) = @_; 160 local ( @files, $i ); 142 161 143 162 # Invoke subroutine to make test driver in the base directory … … 153 172 # labelled CVS and recursively invoke subroutine worm 154 173 $i = 0; 155 while ($files[$i]) { 174 while ( $files[$i] ) { 175 156 176 # Check for directory and directory not labelled CVS 157 if (-d $files[$i] && ($files[$i] ne "CVS") && ($files[$i] ne "temp") 158 && ($files[$i] ne "verified")) { 177 if ( -d $files[$i] 178 && ( $files[$i] ne "CVS" ) 179 && ( $files[$i] ne "temp" ) 180 && ( $files[$i] ne "verified" ) ) 181 { 182 159 183 # Change current directory to directory found 160 chdir($files[$i]); 184 chdir( $files[$i] ); 185 161 186 # Invoke subroutine worm again 162 &worm($files[$i]); 187 &worm( $files[$i] ); 188 163 189 # Change current directory back to parent 164 190 chdir(".."); 165 191 } 192 166 193 # Increment file list index 167 194 $i++; … … 183 210 ################################################################################ 184 211 185 sub makeTestDrivers {186 local ($base_dir) = @_;187 local ($pwd);212 sub makeTestDrivers { 213 local ($base_dir) = @_; 214 local ($pwd); 188 215 189 216 # Set variable pwd to current working directory … … 192 219 # Display message to user in which directory testing is taken place only 193 220 # if the silent command option was not specified 194 print("---- Entering $pwd ----\n") if ( ! $silent);221 print("---- Entering $pwd ----\n") if ( !$silent ); 195 222 196 223 # Check for the existence of a file name Makefile in current directory 197 if ( -e "Makefile") {224 if ( -e "Makefile" ) { 198 225 199 226 # Increment the total number of makes executed 200 227 $totalMakes++; 201 228 202 if ($clean) { 229 if ($clean) { 230 203 231 # Execute the make clean 204 232 `make clean`; … … 209 237 210 238 # Execute the make and save results 211 $_ = join( "\n|| ",split("\n", "\n" . `make`) );239 $_ = join( "\n|| ", split( "\n", "\n" . `make` ) ); 212 240 213 241 # Check the output of make for return value != 0 or any of the 214 242 # following words: FAILED, FAULT, ERROR, Not found, SIGNAL 215 if (($? != 0) || m/FAILED/i || m/FAULT/i || m/\bERROR/i 216 || m/Not found/i || m/SIGNAL/i) { 243 if ( ( $? != 0 ) 244 || m/FAILED/i 245 || m/FAULT/i 246 || m/\bERROR/i 247 || m/Not found/i 248 || m/SIGNAL/i ) 249 { 250 217 251 # Display the errored output of make if silent option not enabled 218 print("$_\n") if ( ! $silent ); 252 print("$_\n") if ( !$silent ); 253 219 254 # Display the make failed in the current directory 220 255 print("\nMake for $pwd Failed\n"); 256 221 257 # Increment the number of makes that have failed 222 258 $makeFailCount++; 259 223 260 # Push the current working directory onto the list of failed 224 261 # make directories list 225 push(@makesFailed, $pwd); 226 } else { 262 push( @makesFailed, $pwd ); 263 } 264 else { 265 227 266 # Display the results of the successful make if verbose option set 228 267 print("$_\n") if $verbose; 268 229 269 # Display the make was successful if silent option not set 230 print("\nMake successful.\n") if ( ! $silent);270 print("\nMake successful.\n") if ( !$silent ); 231 271 if ($clean) { 232 272 `make install`; … … 248 288 ################################################################################ 249 289 250 sub executeTestDrivers {251 local ($base_dir) = @_;252 local (@files,$j);253 local ($pwd);254 local ($exitValue) = 0;290 sub executeTestDrivers { 291 local ($base_dir) = @_; 292 local ( @files, $j ); 293 local ($pwd); 294 local ($exitValue) = 0; 255 295 256 296 # Set variable to pwd to current test directory … … 262 302 # Loop through all the items in the files array 263 303 $initialTest = 0; 264 $j = 0; 265 while ( $files[$j]) { 304 $j = 0; 305 while ( $files[$j] ) { 306 266 307 # Check that the item is not a directory and is executable and 267 308 # conforms to the test driver naming convention TST 268 if ( ! (-d $files[$j]) && (-x $files[$j]) && 269 ( $files[$j] =~ /^TST/i || $files[$j] =~ /^ATST/i ) ) { 309 if ( !( -d $files[$j] ) 310 && ( -x $files[$j] ) 311 && ( $files[$j] =~ /^TST/i || $files[$j] =~ /^ATST/i ) ) 312 { 270 313 271 314 # Increment total number of test drivers executed … … 283 326 # Check for the presence of verified directory 284 327 if ( &checkForVerifiedDirectory() ) { 285 286 # Display message to user that verified directories do not 328 329 # Display message to user that verified directories do not 287 330 # exist eventhough TST files have been found 288 # print("Unable to execute test drivers in $base_dir\n");331 # print("Unable to execute test drivers in $base_dir\n"); 289 332 print("No verified subdirectory present.\n") if ($verbose); 333 290 334 # Increment test fail count 291 # $testDriverFailCount++;335 # $testDriverFailCount++; 292 336 # Save the file failed 293 # push(@testsFailed, $pwd . "/" . $files[$j]);294 # return;337 # push(@testsFailed, $pwd . "/" . $files[$j]); 338 # return; 295 339 } 296 340 } 297 341 298 342 # Display message to user of which test driver is being executed 299 print("--- Executing test driver $files[$j]\n") if ( ! $silent ); 343 print("--- Executing test driver $files[$j]\n") if ( !$silent ); 344 300 345 # Execute the test driver 301 346 system("./$files[$j] 1> temp/$files[$j].stdout 2> temp/$files[$j].stderr"); 302 347 $retVal = $?; 348 303 349 # Count testpoints 304 $testPattern = "\"\\*\\*\\*\\* TESTPOINT \\*\\*\\*\\*\"";350 $testPattern = "\"\\*\\*\\*\\* TESTPOINT \\*\\*\\*\\*\""; 305 351 $totalPoints = `grep -c $testPattern temp/$files[$j].stdout`; 306 352 $totalPoints += `grep -c $testPattern temp/$files[$j].stderr`; 307 353 $failPoints = `grep "> TESTPOINT FAILED" temp/$files[$j].stdout | wc -l`; 308 $failPoints += `grep "> TESTPOINT FAILED" temp/$files[$j].stderr | wc -l`;354 $failPoints += `grep "> TESTPOINT FAILED" temp/$files[$j].stderr | wc -l`; 309 355 $testpointFailCount += $failPoints; 310 $totalTestpoints += $totalPoints; 356 $totalTestpoints += $totalPoints; 357 311 358 # Check result of test driver 312 if ( ( ($retVal != 0) && ($files[$j] =~ /^TST/i) ) || 313 ( ($retVal == 0) && ($files[$j] =~ /^ATST/i ) ) ) { 359 if ( ( ( $retVal != 0 ) && ( $files[$j] =~ /^TST/i ) ) 360 || ( ( $retVal == 0 ) && ( $files[$j] =~ /^ATST/i ) ) ) 361 { 362 314 363 # Display test driver failed 315 364 $failPoints++; 316 365 print("Test driver: $files[$j] Failed (Return value $retVal).\n"); 366 317 367 # Increment the total number of test failed 318 368 $testDriverFailCount++; 369 319 370 # Push the current working directory on the list of failed 320 push(@testsFailed, $pwd . "/" . $files[$j]); 321 } else { 371 push( @testsFailed, $pwd . "/" . $files[$j] ); 372 } 373 else { 374 322 375 # Create filter versions of STDOUT and STDERR to replace variable 323 376 # items such as date, time and host 324 &filterStdFiles($files[$j]); 377 &filterStdFiles( $files[$j] ); 378 325 379 # Perform difference on STDOUT file collected 326 380 # with verified files 327 381 $exitValue = &compareStream("verified/$files[$j].stdout"); 328 382 if ( $exitValue & 2 ) { 383 329 384 # STDOUT verified doesn't exist. Search STDOUT capture 330 385 # for strings indicating error or failure 331 386 $exitValue |= &errorStrSearch("$files[$j].stdout"); 332 387 } 333 if ( ($exitValue & 8) || ($exitValue & 64) ) { 388 if ( ( $exitValue & 8 ) || ( $exitValue & 64 ) ) { 389 334 390 # Increment the total number of test failed 335 391 $testDriverFailCount++; 392 336 393 # Push test on failed list 337 print("Test failed ($failPoints out of $totalPoints testpoints failed)\n") if ( ! $silent); 338 push(@testsFailed, $pwd . "/" . $files[$j]); 339 } else { 394 print("Test failed ($failPoints out of $totalPoints testpoints failed)\n") 395 if ( !$silent ); 396 push( @testsFailed, $pwd . "/" . $files[$j] ); 397 } 398 else { 399 340 400 # Perform difference on STDERR file collection with verified 341 401 $exitValue = &compareStream("verified/$files[$j].stderr"); 342 402 if ( $exitValue & 4 ) { 403 343 404 # STDERR verified doesn't exist. Search STDERR capture 344 405 # for strings indicating error or failure 345 406 $exitValue |= &errorStrSearch("$files[$j].stderr"); 346 407 } 347 if ( ($exitValue & 16) || ($exitValue & 128) ) { 408 if ( ( $exitValue & 16 ) || ( $exitValue & 128 ) ) { 409 348 410 # Increment the total number of tests failed 349 411 $testDriverFailCount++; 412 350 413 # Push test on failed list 351 print("Test failed ($failPoints out of $totalPoints testpoints failed)\n") if ( ! $silent); 352 push(@testsFailed, $pwd . "/" . $files[$j]); 353 } else { 354 print("Test successful ($totalPoints testpoints)\n") if ( ! $silent); 414 print("Test failed ($failPoints out of $totalPoints testpoints failed)\n") 415 if ( !$silent ); 416 push( @testsFailed, $pwd . "/" . $files[$j] ); 417 } 418 else { 419 print("Test successful ($totalPoints testpoints)\n") if ( !$silent ); 355 420 } 356 421 } … … 378 443 379 444 sub errorStrSearch { 380 local ($fileName)= @_;381 local ($returnVal) = 0;445 local ($fileName) = @_; 446 local ($returnVal) = 0; 382 447 383 448 # Open the captured file 384 open( CAPT_FILE, "<temp/$fileName");449 open( CAPT_FILE, "<temp/$fileName" ); 385 450 386 451 # Scan through all the lines of the file searching for error strings 387 while ( <CAPT_FILE> ) { 388 if ( m/FAIL/i || m/FAULT/i || m/ERROR/i || m/Not Found/i 389 || m/SIGNAL/i || m/NO SUCH FILE/i || m/\|E\|/i 390 || m/\|A\|/i ) { 452 while (<CAPT_FILE>) { 453 if ( m/FAIL/i 454 || m/FAULT/i 455 || m/ERROR/i 456 || m/Not Found/i 457 || m/SIGNAL/i 458 || m/NO SUCH FILE/i 459 || m/\|E\|/i 460 || m/\|A\|/i ) 461 { 391 462 print; 392 463 if ( $fileName =~ m/out/ ) { 393 464 print(" Failed - File $fileName contains error strings.\n"); 394 465 $returnVal = 64; 395 } elsif ( $fileName =~ m/err/ ) { 466 } 467 elsif ( $fileName =~ m/err/ ) { 396 468 print(" Failed - File $fileName contains error strings.\n"); 397 469 $returnVal = 128; … … 400 472 } 401 473 } 474 402 475 # Close the capture file 403 476 close(CAPT_FILE); 477 404 478 # Return the return value 405 return ($returnVal);479 return ($returnVal); 406 480 } 407 481 … … 424 498 425 499 sub compareStream { 426 local ($streamFile) = @_;427 local ($returnVal)= 0;428 local ($tempFile)= "";500 local ($streamFile) = @_; 501 local ($returnVal) = 0; 502 local ($tempFile) = ""; 429 503 430 504 # Check for existence of verified STD stream files 431 if ( !( -e $streamFile ) ) {505 if ( !( -e $streamFile ) ) { 432 506 433 507 # Display message to user that verified STDOUT file doesn't exist … … 437 511 if ( $streamFile =~ /out$/ ) { 438 512 $returnVal |= 2; 439 } elsif ( $streamFile =~ /err$/ ) { 513 } 514 elsif ( $streamFile =~ /err$/ ) { 440 515 $returnVal |= 4; 441 516 } 442 } else { 517 } 518 else { 443 519 444 520 # Verified STD stream file exists … … 459 535 # Check for STDOUT in file name to convey appropirate return value 460 536 if ( $streamFile =~ /out$/ ) { 461 # Display message of the failure of difference to user 462 print(" Failed - STDOUT difference\n$diffstdout\n"); 463 464 # Exit value to indicate STDOUT did not compare 465 $returnVal |= 8; 466 } elsif ( $streamFile =~ /err$/ ) { 467 # Display message of the failure of difference to user 468 print(" Failed - STDERR difference\n$diffstdout\n"); 469 470 # Exit value to indicate STDERR did not compare 471 $returnVal |= 16; 537 538 # Display message of the failure of difference to user 539 print(" Failed - STDOUT difference\n$diffstdout\n"); 540 541 # Exit value to indicate STDOUT did not compare 542 $returnVal |= 8; 543 } 544 elsif ( $streamFile =~ /err$/ ) { 545 546 # Display message of the failure of difference to user 547 print(" Failed - STDERR difference\n$diffstdout\n"); 548 549 # Exit value to indicate STDERR did not compare 550 $returnVal |= 16; 472 551 } 473 552 } … … 475 554 476 555 # Return the result of the compare 477 return($returnVal); 478 } 479 556 return ($returnVal); 557 } 480 558 481 559 ################################################################################ … … 493 571 ################################################################################ 494 572 495 sub checkForTempDirectory {573 sub checkForTempDirectory { 496 574 497 575 # Check if a temp directory already exists in the current work directory 498 if ( !( -e "temp" )) { 576 if ( !( -e "temp" ) ) { 577 499 578 # Create temp directory to store STDOUT, STDERR files during test 500 579 `mkdir temp`; 580 501 581 # Display message of new directory created 502 print("Creating temp directory\n") if ( $verbose);582 print("Creating temp directory\n") if ($verbose); 503 583 } 504 584 } … … 519 599 ################################################################################ 520 600 521 sub checkForVerifiedDirectory {601 sub checkForVerifiedDirectory { 522 602 $returnValue = 0; 603 523 604 # Check if verified subdirectory exists in the current working directory 524 if ( !( -e "verified")) { 525 # Set return value to 1 526 $returnValue = 1; 527 } 528 return($returnValue); 605 if ( !( -e "verified" ) ) { 606 607 # Set return value to 1 608 $returnValue = 1; 609 } 610 return ($returnValue); 529 611 } 530 612 … … 543 625 ################################################################################ 544 626 545 sub filterStdFiles{ 546 547 local($fileName) = @_; 548 549 # Open the STDOUT file for reading 550 open(OUTFILE, "< temp/$fileName.stdout"); 551 # Open mod file to place filtered STDOUT 552 open(MODFILE, "> temp/$fileName.stdout.mod"); 553 # Replace the variable data, time and host information with constants 554 $hostname = `hostname`; 555 chop $hostname; 556 while( <OUTFILE> ) { 557 s/\s+\d+:\d+:\d+\w/<TIME>/g; 558 s/\d+:\d+:\d+/<DATE>/g; 559 s/$hostname/<HOST>/g; 560 s/: Line \d+/: Line <LINENO>/g; 561 s/\:\d+/\:<LINENO>/g; 562 # Filter lines with *** malloc. This is an artifact of Mac testing of 563 # memory functions 564 if ( ! m/\*\*\*\smalloc/ ) { 565 print MODFILE ($_); 566 } 567 } 568 # Close mod file 569 close(MODFILE); 570 # Close STDERR file 571 close(OUTFILE); 572 573 # Open the STDERR file for reading 574 open(OUTFILE, "< temp/$fileName.stderr"); 575 # Open mod file to place filtered STDERR 576 open(MODFILE, "> temp/$fileName.stderr.mod"); 577 # Replace the variable date, time and host information with constants 578 while( <OUTFILE> ) { 579 s/\s+\d+:\d+:\d+\w/<TIME>/g; 580 s/\d+:\d+:\d+/<DATE>/g; 581 s/$hostname/<HOST>/g; 582 s/: Line \d+/: Line <LINENO>/g; 583 s/\:\d+/\:<LINENO>/g; 584 # Filter lines with *** malloc. This is an artifact of Mac testing of 585 # memory functions 586 if ( ! m/\*\*\*\smalloc/ ) { 587 print MODFILE ($_); 588 } 589 } 590 # Close mod file 591 close(MODFILE); 592 # Close STDERR file 593 close(OUTFILE); 594 } 595 627 sub filterStdFiles { 628 629 local ($fileName) = @_; 630 631 # Open the STDOUT file for reading 632 open( OUTFILE, "< temp/$fileName.stdout" ); 633 634 # Open mod file to place filtered STDOUT 635 open( MODFILE, "> temp/$fileName.stdout.mod" ); 636 637 # Replace the variable data, time and host information with constants 638 $hostname = `hostname`; 639 chop $hostname; 640 while (<OUTFILE>) { 641 s/\s+\d+:\d+:\d+\w/<TIME>/g; 642 s/\d+:\d+:\d+/<DATE>/g; 643 s/$hostname/<HOST>/g; 644 s/: Line \d+/: Line <LINENO>/g; 645 s/\:\d+/\:<LINENO>/g; 646 647 # Filter lines with *** malloc. This is an artifact of Mac testing of 648 # memory functions 649 if ( !m/\*\*\*\smalloc/ ) { 650 print MODFILE ($_); 651 } 652 } 653 654 # Close mod file 655 close(MODFILE); 656 657 # Close STDERR file 658 close(OUTFILE); 659 660 # Open the STDERR file for reading 661 open( OUTFILE, "< temp/$fileName.stderr" ); 662 663 # Open mod file to place filtered STDERR 664 open( MODFILE, "> temp/$fileName.stderr.mod" ); 665 666 # Replace the variable date, time and host information with constants 667 while (<OUTFILE>) { 668 s/\s+\d+:\d+:\d+\w/<TIME>/g; 669 s/\d+:\d+:\d+/<DATE>/g; 670 s/$hostname/<HOST>/g; 671 s/: Line \d+/: Line <LINENO>/g; 672 s/\:\d+/\:<LINENO>/g; 673 674 # Filter lines with *** malloc. This is an artifact of Mac testing of 675 # memory functions 676 if ( !m/\*\*\*\smalloc/ ) { 677 print MODFILE ($_); 678 } 679 } 680 681 # Close mod file 682 close(MODFILE); 683 684 # Close STDERR file 685 close(OUTFILE); 686 } 687 -
trunk/psLib/test/runTest
r1404 r1490 6 6 # deemed a failure. STDOUT and STDERR files will be place in a subdirectory 7 7 # named temp and the files will be compared with verified STDOUT, STDERR files 8 # in a subdirectory named verified. If there are no STDOUT, STDERR files in 8 # in a subdirectory named verified. If there are no STDOUT, STDERR files in 9 9 # the verified directory, the captured STDOUT, STDERR files will be scanned 10 10 # for words which indicate a failure. 11 11 # 12 # Assumptions: A verified subdirectory with STDOUT, STDERR files exists for 12 # Assumptions: A verified subdirectory with STDOUT, STDERR files exists for 13 13 # the test driver specified in the arguements if an exact 14 14 # match of the streams STDOUT, STDERR is necessary. … … 30 30 # 31 31 # $Revison: $ $Name: not supported by cvs2svn $ 32 # $Date: 2004-08- 06 21:50:13$32 # $Date: 2004-08-11 23:42:49 $ 33 33 # 34 34 # Copyright 2004 Maui High Performance Computering Center, University of Hawaii … … 40 40 41 41 # Assign variables based on the presence of command line options to the script 42 GetOptions("reset!"=>\$reset, 43 "resetStderr!"=>\$resetStderr, 44 "resetStdout!"=>\$resetStdout, 45 "help!"=>\$help); 42 GetOptions( 43 "reset!" => \$reset, 44 "resetStderr!" => \$resetStderr, 45 "resetStdout!" => \$resetStdout, 46 "help!" => \$help 47 ); 46 48 47 49 if ($help) { … … 54 56 $resetStdout = 1; 55 57 } 56 58 57 59 # Initialize exit value 58 60 $exitValue = 0; 59 61 60 62 # Set up the PSLIB_ROOT environment variable if the user doesn't have it set 61 if ( ! $ENV{'PSLIB_ROOT'}) { 63 if ( !$ENV{'PSLIB_ROOT'} ) { 64 62 65 # Use the directory directly above test 63 66 $PSLIB_ROOT = `cd ..;pwd`; 67 64 68 # Remove newline for the end of path returned 65 69 chomp($PSLIB_ROOT); 70 66 71 # Set the environment variable 67 72 $ENV{'PSLIB_ROOT'} = $PSLIB_ROOT; 68 # Display message that PSLIB_ROOT not found and set to 73 74 # Display message that PSLIB_ROOT not found and set to 69 75 print("PSLIB_ROOT not found: set to $PSLIB_ROOT\n"); 70 76 } 71 77 72 78 # Add PSLIB_ROOT/lib to LD_LIBRARY_PATH and DYLD_LIBRARY_PATH environment vars 73 $ENV{'LD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'LD_LIBRARY_PATH'}";79 $ENV{'LD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'LD_LIBRARY_PATH'}"; 74 80 $ENV{'DYLD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'DYLD_LIBRARY_PATH'}"; 75 81 … … 80 86 81 87 # Check if a temp directory already exists in the current work directory 82 if ( !( -e "temp" )) { 83 # Create temp directory to store STDOUT, STDERR files during test run 84 `mkdir temp`; 85 # Display message of new directory created 86 print("Creating temp directory\n"); 87 } 88 88 if ( !( -e "temp" ) ) { 89 90 # Create temp directory to store STDOUT, STDERR files during test run 91 `mkdir temp`; 92 93 # Display message of new directory created 94 print("Creating temp directory\n"); 95 } 96 89 97 # Check if a verified directory exists in the current work directory 90 if ( !( -e "verified" )) { 98 if ( !( -e "verified" ) ) { 99 91 100 # Display message that verified subdirectory doesn't exist 92 101 print(" Verified directory doesn't exist.\n"); 102 93 103 # Exit script since the test cannot be run with verified files 94 104 $exitValue = 1; 95 105 } 96 106 97 107 # Check if the test driver file exists and is executable 98 if ( ( -e $testFile) && (-x $testFile) ) {99 108 if ( ( -e $testFile ) && ( -x $testFile ) ) { 109 100 110 # Display message the test driver is being executed 101 111 print("--- Executing test driver: $testFile\n"); 102 112 103 113 # Invoke the test driver 104 114 system("./$testFile 1> temp/$testFile.stdout 2> temp/$testFile.stderr"); 105 115 106 116 # Check the return value of the test driver. A value other than 0 107 117 # indicates failure of the test driver unless the test driver is name 108 118 # with a leading 'a' which indicates the test driver is expecting an 109 119 # abort condition to terminate the driver. 110 if ( ( $? != 0 && ( $testFile !~ /^A/i)) || 111 ( $? == 0 && ( $testFile =~ /^A/i)) ) { 112 120 if ( ( $? != 0 && ( $testFile !~ /^A/i ) ) 121 || ( $? == 0 && ( $testFile =~ /^A/i ) ) ) 122 { 123 113 124 # Display failure message with return value to user 114 if ( $? != 0 && ( $testFile !~ /^A/i ) ) {125 if ( $? != 0 && ( $testFile !~ /^A/i ) ) { 115 126 print(" Failed - Test Driver expected 0 return value (Return value $?)\n"); 116 } elsif ( $? == 0 && ( $testFile =~ /^A/i) ) { 127 } 128 elsif ( $? == 0 && ( $testFile =~ /^A/i ) ) { 117 129 print(" Failed - Test Driver expected abort (Return value $?)\n"); 118 130 } 119 131 $exitValue |= 256; 120 } else { 121 132 } 133 else { 134 122 135 # Test driver succeeded. 123 136 124 137 # Create filtered version of stdout and stderr 125 126 # Open the STDOUT file for reading 127 open(OUTFILE, "< temp/$testFile.stdout"); 138 139 # Open the STDOUT file for reading 140 open( OUTFILE, "< temp/$testFile.stdout" ); 141 128 142 # Open mod file to place filtered STDOUT 129 open(MODFILE, "> temp/$testFile.stdout.mod"); 130 open(MODFILE2, "> verified/$testFile.stdout") if $resetStdout; 143 open( MODFILE, "> temp/$testFile.stdout.mod" ); 144 open( MODFILE2, "> verified/$testFile.stdout" ) if $resetStdout; 145 131 146 # Replace the variable date, time and host information with constants 132 147 $hostname = `hostname`; 133 148 chop $hostname; 134 while ( <OUTFILE>) {149 while (<OUTFILE>) { 135 150 s/\s+\d+:\d+:\d+\w/<TIME>/g; 136 151 s/\d+:\d+:\d+/<DATE>/g; … … 138 153 s/: Line \d+/: Line <LINENO>/g; 139 154 s/\:\d+/\:<LINENO>/g; 155 140 156 # Filter lines with malloc. This is an artifact of memory testing 141 157 # with the Mac testbed 142 if ( ! m/\*\*\*\smalloc/ ) {143 print MODFILE ($_);144 print MODFILE2 ($_) if $resetStdout;158 if ( !m/\*\*\*\smalloc/ ) { 159 print MODFILE ($_); 160 print MODFILE2 ($_) if $resetStdout; 145 161 } 146 162 } 163 147 164 # Close mod file 148 165 close(MODFILE); 149 166 close(MODFILE2) if $resetStdout; 167 150 168 # Close STDERR file 151 169 close(OUTFILE); 152 153 # Open the STDERR file for reading 154 open(OUTFILE, "< temp/$testFile.stderr"); 170 171 # Open the STDERR file for reading 172 open( OUTFILE, "< temp/$testFile.stderr" ); 173 155 174 # Open mod file to place filtered STDERR 156 open(MODFILE, "> temp/$testFile.stderr.mod"); 157 open(MODFILE2, "> verified/$testFile.stderr") if $resetStderr; 175 open( MODFILE, "> temp/$testFile.stderr.mod" ); 176 open( MODFILE2, "> verified/$testFile.stderr" ) if $resetStderr; 177 158 178 # Replace the variable date, time and host information with constants 159 while ( <OUTFILE>) {179 while (<OUTFILE>) { 160 180 s/\s+\d+:\d+:\d+\w/<TIME>/g; 161 181 s/\d+:\d+:\d+/<DATE>/g; … … 163 183 s/: Line \d+/: Line <LINENO>/g; 164 184 s/\:\d+/\:<LINENO>/g; 185 165 186 # Filter lines with malloc. This is an artifact of memory testing 166 187 # with the Mac testbed 167 if ( ! m/\*\*\*\smalloc/ ) {168 print MODFILE ($_);169 print MODFILE2 ($_) if $resetStderr;188 if ( !m/\*\*\*\smalloc/ ) { 189 print MODFILE ($_); 190 print MODFILE2 ($_) if $resetStderr; 170 191 } 171 192 } 193 172 194 # Close mod file 173 195 close(MODFILE); 174 196 close(MODFILE2) if $resetStderr; 197 175 198 # Close STDERR file 176 199 close(OUTFILE); 177 200 178 201 # Compare STDOUT capture with verified file 179 202 $exitValue |= &compareStream("verified/$testFile.stdout"); 180 203 181 204 # Check exit value to determine if verified file doesn't exist 182 205 if ( $exitValue & 2 ) { 183 206 184 207 # STDOUT verified doesn't exist. Search STDOUT capture 185 208 # for strings indicating error or failure 186 209 $exitValue |= &errorStrSearch("$testFile.stdout"); 187 210 } 188 211 189 212 # Compare STDERR capture with verified file 190 213 $exitValue |= &compareStream("verified/$testFile.stderr"); 191 214 192 215 # Check exit value to determine if verified file doesn't exist 193 216 if ( $exitValue & 4 ) { 194 217 195 218 # STDERR verified doesn't exist. Search STDERR capture 196 219 # for strings indicating error or failure … … 198 221 } 199 222 } 200 } else { 201 # Since test driver doesn't exist or is not executable then display 223 } 224 else { 225 226 # Since test driver doesn't exist or is not executable then display 202 227 # message to user. 203 228 print(" Need to specify an executable test file within directory.\n"); 204 229 205 230 # Exit value set to indicate test driver doesn't exist or not executable 206 231 $exitValue |= 32; … … 211 236 # Ignore the first three bit flags in exitValue since there are not indicators 212 237 # of a failed test 213 if ( ( $exitValue >> 3) != 0 ) {238 if ( ( $exitValue >> 3 ) != 0 ) { 214 239 print("Test failed - return status = $exitValue\n\n"); 215 } else { 240 } 241 else { 216 242 print("Test successful\n\n"); 217 243 } … … 235 261 236 262 sub errorStrSearch { 237 local ($fileName)= @_;238 local ($returnVal) = 0;263 local ($fileName) = @_; 264 local ($returnVal) = 0; 239 265 240 266 # Open the captured file 241 open( CAPT_FILE, "<temp/$fileName");267 open( CAPT_FILE, "<temp/$fileName" ); 242 268 243 269 # Scan through all the lines of the file searching for error strings 244 while ( <CAPT_FILE> ) { 245 if ( m/FAIL/i || m/FAULT/i || m/ERROR/i || m/Not Found/i 246 || m/SIGNAL/i || m/NO SUCH FILE/i || m/\|E\|/i 247 || m/\|A\|/i ) { 270 while (<CAPT_FILE>) { 271 if ( m/FAIL/i 272 || m/FAULT/i 273 || m/ERROR/i 274 || m/Not Found/i 275 || m/SIGNAL/i 276 || m/NO SUCH FILE/i 277 || m/\|E\|/i 278 || m/\|A\|/i ) 279 { 248 280 if ( $fileName =~ m/out/ ) { 249 281 print(" Failed - File $fileName contains error strings.\n"); 250 282 $returnVal = 64; 251 } elsif ( $fileName =~ m/err/ ) { 283 } 284 elsif ( $fileName =~ m/err/ ) { 252 285 print(" Failed - File $fileName contains error strings.\n"); 253 286 $returnVal = 128; … … 256 289 } 257 290 } 291 258 292 # Close the capture file 259 293 close(CAPT_FILE); 294 260 295 # Return the return value 261 return ($returnVal);296 return ($returnVal); 262 297 } 263 298 … … 280 315 281 316 sub compareStream { 282 local ($streamFile) = @_;283 local ($returnVal)= 0;284 local ($tempFile)= "";317 local ($streamFile) = @_; 318 local ($returnVal) = 0; 319 local ($tempFile) = ""; 285 320 286 321 # Check for existence of verified STD stream files 287 if ( !( -e $streamFile ) ) {288 322 if ( !( -e $streamFile ) ) { 323 289 324 # Display message to user that verified STDOUT file doesn't exist 290 325 print(" File $streamFile doesn't exist.\n"); 291 326 292 327 # Set exit value bit 1 to indicate proper failure 293 328 if ( $streamFile =~ /out$/ ) { 294 329 $returnVal |= 2; 295 } elsif ( $streamFile =~ /err$/ ) { 330 } 331 elsif ( $streamFile =~ /err$/ ) { 296 332 $returnVal |= 4; 297 333 } 298 } else { 334 } 335 else { 299 336 300 337 # Verified STD stream file exists 301 338 302 339 # Create name of the temp file to compare 303 $tempFile = $streamFile; 340 $tempFile = $streamFile; 304 341 $tempFile =~ s/verified/temp/; 305 342 $tempFile = $tempFile . ".mod"; 306 343 307 344 # Perform difference on the STD stream files 308 345 $diffstdout = `diff $streamFile $tempFile`; … … 310 347 # Check the return value of the difference 311 348 if ( $? != 0 ) { 312 349 313 350 # Difference of STD stream files failed 314 351 315 352 # Check for STDOUT in file name to convey appropirate return value 316 353 if ( $streamFile =~ /out$/ ) { 317 # Display message of the failure of difference to user 318 print(" Failed - STDOUT difference\n$diffstdout\n"); 319 320 # Exit value to indicate STDOUT did not compare 321 $returnVal |= 8; 322 } elsif ( $streamFile =~ /err$/ ) { 323 # Display message of the failure of difference to user 324 print(" Failed - STDERR difference\n$diffstdout\n"); 325 326 # Exit value to indicate STDERR did not compare 327 $returnVal |= 16; 328 } 329 } 330 } 331 354 355 # Display message of the failure of difference to user 356 print(" Failed - STDOUT difference\n$diffstdout\n"); 357 358 # Exit value to indicate STDOUT did not compare 359 $returnVal |= 8; 360 } 361 elsif ( $streamFile =~ /err$/ ) { 362 363 # Display message of the failure of difference to user 364 print(" Failed - STDERR difference\n$diffstdout\n"); 365 366 # Exit value to indicate STDERR did not compare 367 $returnVal |= 16; 368 } 369 } 370 } 371 332 372 # Return the result of the compare 333 return ($returnVal);334 } 335 373 return ($returnVal); 374 } 375
Note:
See TracChangeset
for help on using the changeset viewer.
