[llvm-commits] CVS: llvm/utils/NightlyTest.pl

LLVM llvm at cs.uiuc.edu
Tue Jun 22 10:47:01 PDT 2004


Changes in directory llvm/utils:

NightlyTest.pl updated: 1.55 -> 1.56

---
Log message:

- Added the -nice option for nicing the build processes.
- Added the -gnuplotscript option to specify the GnuPlot script to use.
- Added the -templatefile option to specify the HTML template to use.
- Moved subroutines to top of file.
- Used variables for file names in case we want to change to directories.
- Made program track its directory changes in $VERBOSE mode (for debugging)
- Added variables to support tracking start time, finish time, and platform
  details about each nightly test.


---
Diffs of the changes:  (+201 -152)

Index: llvm/utils/NightlyTest.pl
diff -u llvm/utils/NightlyTest.pl:1.55 llvm/utils/NightlyTest.pl:1.56
--- llvm/utils/NightlyTest.pl:1.55	Fri Jun 11 14:55:30 2004
+++ llvm/utils/NightlyTest.pl	Tue Jun 22 10:38:37 2004
@@ -26,6 +26,10 @@
 #  -disable-codegen Disable LLC and JIT tests in the nightly tester.
 #  -verbose         Turn on some debug output
 #  -debug           Print information useful only to maintainers of this script.
+#  -nice            Checkout/Configure/Build with "nice" to reduce impact 
+#                   on busy servers.
+#  -gnuplotscript   Next argument specifies gnuplot script to use
+#  -templatefile    Next argument specifies template file to use
 #
 # CVSROOT is the CVS repository from which the tree will be checked out,
 #  specified either in the full :method:user at host:/dir syntax, or
@@ -37,6 +41,8 @@
 # WEBDIR is the directory into which the test results web page will be written,
 #  AND in which the "index.html" is assumed to be a symlink to the most recent
 #  copy of the results. This directory MUST exist before the script is run.
+# LLVMGCCDIR is the directory in which the LLVM GCC Front End is installed
+#  to. This is the same as you would have for a normal LLVM build.
 #
 use POSIX qw(strftime);
 
@@ -55,12 +61,28 @@
 @TIME = localtime;
 my $DATE = sprintf "%4d-%02d-%02d", $TIME[5]+1900, $TIME[4]+1, $TIME[3];
 my $DateString = strftime "%B %d, %Y", localtime;
+my $TestStartTime = gmtime;
+
+# Command line argument settings...
+my $NOCHECKOUT = 0;
+my $NOREMOVE   = 0;
+my $NOFEATURES = 0;
+my $NOREGRESSIONS = 0;
+my $NOTEST     = 0;
+my $NORUNNINGTESTS = 0;
+my $MAKEOPTS   = "";
+my $PROGTESTOPTS = "";
+my $VERBOSE  = 0;
+my $DEBUG = 0;
+my $CONFIGUREARGS = "--enable-jit";
+my $NICE = "";
 
 sub ReadFile {
-  undef $/;
   if (open (FILE, $_[0])) {
+    undef $/;
     my $Ret = <FILE>;
     close FILE;
+    $/ = '\n';
     return $Ret;
   } else {
     print "Could not open file '$_[0]' for reading!";
@@ -82,11 +104,30 @@
   return "?";
 }
 
+sub AddRecord {
+  my ($Val, $Filename) = @_;
+  my @Records;
+  if (open FILE, "$WebDir/$Filename") {
+    @Records = grep !/$DATE/, split "\n", <FILE>;
+    close FILE;
+  }
+  push @Records, "$DATE: $Val";
+  WriteFile "$WebDir/$Filename", (join "\n", @Records) . "\n";
+  return @Records;
+}
+
 sub AddPreTag {  # Add pre tags around nonempty list, or convert to "none"
   $_ = shift;
   if (length) { return "<ul><pre>$_</pre></ul>"; } else { "<b>none</b><br>"; }
 }
 
+sub ChangeDir { # directory, logical name
+  my ($dir,$name) = @_;
+  chomp($dir);
+  if ( $VERBOSE ) { print "Changing To: $name ($dir)\n"; }
+  chdir($dir) || die "Cannot change directory to: $name ($dir) ";
+}
+
 sub GetDir {
   my $Suffix = shift;
   opendir DH, $WebDir;
@@ -123,19 +164,80 @@
   return $Time;
 }
 
+sub GetRegexNum {
+  my ($Regex, $Num, $Regex2, $File) = @_;
+  my @Items = split "\n", `grep '$Regex' $File`;
+  return GetRegex $Regex2, $Items[$Num];
+}
 
-# Command line argument settings...
-my $NOCHECKOUT = 0;
-my $NOREMOVE   = 0;
-my $NOFEATURES = 0;
-my $NOREGRESSIONS = 0;
-my $NOTEST     = 0;
-my $NORUNNINGTESTS = 0;
-my $MAKEOPTS   = "";
-my $PROGTESTOPTS = "";
-my $VERBOSE  = 0;
-my $DEBUG = 0;
-my $CONFIGUREARGS = "--enable-jit";
+sub GetQMTestResults { # (filename)
+  my ($filename) = @_;
+  my @lines;
+  my $firstline;
+  $/ = "\n"; #Make sure we're going line at a time.
+  if (open SRCHFILE, $filename) {
+    # Skip stuff before ---TEST RESULTS
+    while ( <SRCHFILE> ) {
+      if ( m/^--- TEST RESULTS/ ) { last; }
+    }
+    # Process test results
+    push(@lines,"<h3>TEST RESULTS</h3><ol><li>\n");
+    my $first_list = 1;
+    my $should_break = 1;
+    my $nocopy = 0;
+    while ( <SRCHFILE> ) {
+      if ( length($_) > 1 ) { 
+        chomp($_);
+        if ( ! m/: PASS[ ]*$/ &&
+             ! m/^    qmtest.target:/ && 
+             ! m/^      local/ &&
+             ! m/^gmake:/ ) {
+          if ( m/: XFAIL/ ) {
+            $nocopy = 1;
+          } elsif ( m/: XPASS/ || m/: FAIL/ ) {
+            $nocopy = 0;
+            if ( $first_list ) {
+              $first_list = 0;
+              $should_break = 1;
+              push(@lines,"<b>$_</b><br/>\n");
+            } else {
+              push(@lines,"</li><li><b>$_</b><br/>\n");
+            }
+          } elsif ( m/^--- STATISTICS/ ) {
+            if ( $first_list ) { push(@lines,"<b>PERFECT!</b>"); }
+            push(@lines,"</li></ol><h3>STATISTICS</h3><pre>\n");
+            $should_break = 0;
+            $nocopy = 0;
+          } elsif ( m/^--- TESTS WITH/ ) {
+            $should_break = 1;
+            $first_list = 1;
+            $nocopy = 0;
+            push(@lines,"</pre><h3>TESTS WITH UNEXPECTED RESULTS</h3><ol><li>\n");
+          } elsif ( m/^real / ) {
+            last;
+          } elsif (!$nocopy) {
+            if ( $should_break ) {
+              push(@lines,"$_<br/>\n");
+            } else {
+              push(@lines,"$_\n");
+            }
+          }
+        }
+      }
+    }
+    close SRCHFILE;
+  }
+  my $content = join("", at lines);
+  return "$content</li></ol>\n";
+} 
+
+
+#####################################################################
+## MAIN PROGRAM
+#####################################################################
+
+my $Template = "";
+my $PlotScriptFilename = "";
 
 # Parse arguments... 
 while (scalar(@ARGV) and ($_ = $ARGV[0], /^[-+]/)) {
@@ -152,7 +254,7 @@
   if (/^-parallel$/)       { $MAKEOPTS   = "$MAKEOPTS -j2 -l3.0"; next; }
   if (/^-release$/)        { $MAKEOPTS   = "$MAKEOPTS ENABLE_OPTIMIZED=1"; next; }
   if (/^-pedantic$/)       { 
-      $MAKEOPTS   = "$MAKEOPTS CompileOptimizeOpts='-O3 -DNDEBUG -finline-functions -Wpointer-arith -Wcast-align -Wno-deprecated -Wold-style-cast -Wabi -Woverloaded-virtual -Weffc++ -ffor-scope'"; 
+      $MAKEOPTS   = "$MAKEOPTS CompileOptimizeOpts='-O3 -DNDEBUG -finline-functions -Wpointer-arith -Wcast-align -Wno-deprecated -Wold-style-cast -Wabi -Woverloaded-virtual -ffor-scope'"; 
       next; 
   }
   if (/^-enable-linscan$/) { $PROGTESTOPTS .= " ENABLE_LINEARSCAN=1"; next; }
@@ -161,6 +263,9 @@
                              next; }
   if (/^-verbose$/)        { $VERBOSE  = 1; next; }
   if (/^-debug$/)          { $DEBUG  = 1; next; }
+  if (/^-nice$/)           { $NICE  = "nice "; next; }
+  if (/^-gnuplotscript$/)  { $PlotScriptFilename = $ARGV[0]; shift; next; }
+  if (/^-templatefile$/)   { $Template = $ARGV[0]; shift;; next; }
 
   print "Unknown option: $_ : ignoring!\n";
 }
@@ -177,16 +282,36 @@
   $WebDir     = $ARGV[2];
 }
 
+if ( $Template eq "" ) {
+  $Template = "$BuildDir/llvm/utils/NightlyTestTemplate.html";
+}
+die "Template file $Template is not readable" if ( ! -r "$Template" );
+
+if ( $PlotScriptFilename eq "" ) {
+  $PlotScriptFilename = "$BuildDir/llvm/utils/NightlyTest.gnuplot";
+}
+die "GNUPlot Script $PlotScriptFilename is not readable" if ( ! -r "$PlotScriptFilename" );
 
-my $Template = "$BuildDir/llvm/utils/NightlyTestTemplate.html";
 my $Prefix = "$WebDir/$DATE";
 
+#define the file names we'll use
+my $BuildLog = "$Prefix-Build-Log.txt";
+my $CVSLog = "$Prefix-CVS-Log.txt";
+my $FeatureTestsLog = "$Prefix-FeatureTests-Log.txt";
+my $RegressionTestsLog = "$Prefix-RegressionTests-Log.txt";
+my $OldenTestsLog = "$Prefix-Olden-tests.txt";
+my $SingleSourceLog = "$Prefix-SingleSource-ProgramTest.txt.gz";
+my $MultiSourceLog = "$Prefix-MultiSource-ProgramTest.txt.gz";
+my $ExternalLog = "$Prefix-External-ProgramTest.txt.gz";
+
 if ($VERBOSE) {
   print "INITIALIZED\n";
   print "CVS Root = $CVSRootDir\n";
   print "BuildDir = $BuildDir\n";
   print "WebDir   = $WebDir\n";
   print "Prefix   = $Prefix\n";
+  print "CVSLog   = $CVSLog\n";
+  print "BuildLog = $BuildLog\n";
 }
 
 
@@ -203,7 +328,8 @@
   }
   mkdir $BuildDir or die "Could not create CVS checkout directory $BuildDir!";
 }
-chdir $BuildDir or die "Could not change to CVS checkout directory $BuildDir!";
+
+ChangeDir( $BuildDir, "CVS checkout directory" );
 
 
 #
@@ -213,26 +339,26 @@
 $CVSOPT = "-z3" if $CVSRootDir =~ /^:ext:/; # Use compression if going over ssh.
 if (!$NOCHECKOUT) {
   if ( $VERBOSE ) { print "CHECKOUT STAGE\n"; }
-  system "(time -p cvs $CVSOPT -d $CVSRootDir co llvm) > $Prefix-CVS-Log.txt 2>&1";
+  system "(time -p $NICE cvs $CVSOPT -d $CVSRootDir co llvm) > $CVSLog 2>&1";
 }
 
-chdir "llvm" or die "Could not change into llvm directory!";
+ChangeDir( "llvm" , "llvm source directory") ;
 
 if (!$NOCHECKOUT) {
   if ( $VERBOSE ) { print "UPDATE STAGE\n"; }
-  system "cvs update -P -d > /dev/null 2>&1" ;
+  system "$NICE cvs update -P -d >> $CVSLog 2>&1" ;
 }
 
 # Read in the HTML template file...
+if ( $VERBOSE ) { print "READING TEMPLATE\n"; }
 my $TemplateContents = ReadFile $Template;
 
-
 #
 # Get some static statistics about the current state of CVS
 #
-my $CVSCheckoutTime = GetRegex "([0-9.]+)", `grep '^real' $Prefix-CVS-Log.txt`;
-my $NumFilesInCVS = `egrep '^U' $Prefix-CVS-Log.txt | wc -l` + 0;
-my $NumDirsInCVS  = `egrep '^cvs (checkout|server|update):' $Prefix-CVS-Log.txt | wc -l` + 0;
+my $CVSCheckoutTime = GetRegex "([0-9.]+)", `grep '^real' $CVSLog`;
+my $NumFilesInCVS = `egrep '^U' $CVSLog | wc -l` + 0;
+my $NumDirsInCVS  = `egrep '^cvs (checkout|server|update):' $CVSLog | wc -l` + 0;
 $LOC = GetRegex "([0-9]+) +total", `wc -l \`utils/getsrcs.sh\` | grep total`;
 
 #
@@ -240,117 +366,50 @@
 #
 if (!$NOCHECKOUT) {
   if ( $VERBOSE ) { print "CONFIGURE STAGE\n"; }
-  system "(time -p ./configure $CONFIGUREARGS --enable-spec --with-objroot=.) > $Prefix-Build-Log.txt 2>&1";
+  system "(time -p $NICE ./configure $CONFIGUREARGS --enable-spec --with-objroot=.) > $BuildLog 2>&1";
 
   if ( $VERBOSE ) { print "BUILD STAGE\n"; }
-  # Build the entire tree, capturing the output into $Prefix-Build-Log.txt
-  system "(time -p gmake $MAKEOPTS) >> $Prefix-Build-Log.txt 2>&1";
+  # Build the entire tree, capturing the output into $BuildLog
+  system "(time -p $NICE gmake $MAKEOPTS) >> $BuildLog 2>&1";
 }
 
 
-sub GetRegexNum {
-  my ($Regex, $Num, $Regex2, $File) = @_;
-  my @Items = split "\n", `grep '$Regex' $File`;
-  return GetRegex $Regex2, $Items[$Num];
-}
-
 #
 # Get some statistics about the build...
 #
-my @Linked = split '\n', `grep Linking $Prefix-Build-Log.txt`;
+my @Linked = split '\n', `grep Linking $BuildLog`;
 my $NumExecutables = scalar(grep(/executable/, @Linked));
 my $NumLibraries   = scalar(grep(!/executable/, @Linked));
-my $NumObjects     = `grep '^Compiling' $Prefix-Build-Log.txt | wc -l` + 0;
+my $NumObjects     = `grep '^Compiling' $BuildLog | wc -l` + 0;
 
-my $ConfigTimeU = GetRegexNum "^user", 0, "([0-9.]+)", "$Prefix-Build-Log.txt";
-my $ConfigTimeS = GetRegexNum "^sys", 0, "([0-9.]+)", "$Prefix-Build-Log.txt";
+my $ConfigTimeU = GetRegexNum "^user", 0, "([0-9.]+)", "$BuildLog";
+my $ConfigTimeS = GetRegexNum "^sys", 0, "([0-9.]+)", "$BuildLog";
 my $ConfigTime  = $ConfigTimeU+$ConfigTimeS;  # ConfigTime = User+System
-my $ConfigWallTime = GetRegexNum "^real", 0,"([0-9.]+)","$Prefix-Build-Log.txt";
+my $ConfigWallTime = GetRegexNum "^real", 0,"([0-9.]+)","$BuildLog";
 
-my $BuildTimeU = GetRegexNum "^user", 1, "([0-9.]+)", "$Prefix-Build-Log.txt";
-my $BuildTimeS = GetRegexNum "^sys", 1, "([0-9.]+)", "$Prefix-Build-Log.txt";
+my $BuildTimeU = GetRegexNum "^user", 1, "([0-9.]+)", "$BuildLog";
+my $BuildTimeS = GetRegexNum "^sys", 1, "([0-9.]+)", "$BuildLog";
 my $BuildTime  = $BuildTimeU+$BuildTimeS;  # BuildTime = User+System
-my $BuildWallTime = GetRegexNum "^real", 1, "([0-9.]+)","$Prefix-Build-Log.txt";
+my $BuildWallTime = GetRegexNum "^real", 1, "([0-9.]+)","$BuildLog";
 
 my $BuildError = "";
-if (`grep '^gmake[^:]*: .*Error' $Prefix-Build-Log.txt | wc -l` + 0 ||
-    `grep '^gmake: \*\*\*.*Stop.' $Prefix-Build-Log.txt | wc -l`+0) {
+if (`grep '^gmake[^:]*: .*Error' $BuildLog | wc -l` + 0 ||
+    `grep '^gmake: \*\*\*.*Stop.' $BuildLog | wc -l`+0) {
   $BuildError = "<h3><font color='red'>Build error: compilation " .
                 "<a href=\"$DATE-Build-Log.txt\">aborted</a></font></h3>";
-  print "BUILD ERROR\n";
+  if ($VERBOSE) { print "BUILD ERROR\n"; }
 }
 
-sub GetQMTestResults { # (filename)
-  my ($filename) = @_;
-  my @lines;
-  my $firstline;
-  $/ = "\n"; #Make sure we're going line at a time.
-  if (open SRCHFILE, $filename) {
-    # Skip stuff before ---TEST RESULTS
-    while ( <SRCHFILE> ) {
-      if ( m/^--- TEST RESULTS/ ) { last; }
-    }
-    # Process test results
-    push(@lines,"<h3>TEST RESULTS</h3><ol><li>\n");
-    my $first_list = 1;
-    my $should_break = 1;
-    my $nocopy = 0;
-    while ( <SRCHFILE> ) {
-      if ( length($_) > 1 ) { 
-	chomp($_);
-	if ( ! m/: PASS[ ]*$/ &&
-	     ! m/^    qmtest.target:/ && 
-	     ! m/^      local/ &&
-	     ! m/^gmake:/ ) {
-	  if ( m/: XFAIL/ ) {
-	    $nocopy = 1;
-	  } elsif ( m/: XPASS/ || m/: FAIL/ ) {
-	    $nocopy = 0;
-	    if ( $first_list ) {
-	      $first_list = 0;
-	      $should_break = 1;
-	      push(@lines,"<b>$_</b><br/>\n");
-	    } else {
-	      push(@lines,"</li><li><b>$_</b><br/>\n");
-	    }
-	  } elsif ( m/^--- STATISTICS/ ) {
-	    if ( $first_list ) { push(@lines,"<b>PERFECT!</b>"); }
-	    push(@lines,"</li></ol><h3>STATISTICS</h3><pre>\n");
-	    $should_break = 0;
-	    $nocopy = 0;
-	  } elsif ( m/^--- TESTS WITH/ ) {
-	    $should_break = 1;
-	    $first_list = 1;
-	    $nocopy = 0;
-	    push(@lines,"</pre><h3>TESTS WITH UNEXPECTED RESULTS</h3><ol><li>\n");
-	  } elsif ( m/^real / ) {
-	    last;
-	  } elsif (!$nocopy) {
-	    if ( $should_break ) {
-	      push(@lines,"$_<br/>\n");
-	    } else {
-	      push(@lines,"$_\n");
-	    }
-	  }
-	}
-      }
-    }
-    close SRCHFILE;
-  }
-  my $content = join("", at lines);
-  return "$content</li></ol>\n";
-} 
-
 # Get results of feature tests.
 my $FeatureTestResults; # String containing the results of the feature tests
 my $FeatureTime;        # System+CPU Time for feature tests
 my $FeatureWallTime;    # Wall Clock Time for feature tests
 if (!$NOFEATURES) {
   if ( $VERBOSE ) { print "FEATURE TEST STAGE\n"; }
-  my $feature_output = "$Prefix-FeatureTests-Log.txt";
+  my $feature_output = "$FeatureTestsLog";
 
   # Run the feature tests so we can summarize the results
-  system "(time -p gmake -C test Feature.t) > $feature_output 2>&1";
+  system "(time -p gmake $MAKEOPTS -C test Feature.t) > $feature_output 2>&1";
 
   # Extract test results
   $FeatureTestResults = GetQMTestResults("$feature_output");
@@ -369,10 +428,10 @@
 
 if (!$NOREGRESSIONS) {
   if ( $VERBOSE ) { print "REGRESSION TEST STAGE\n"; }
-  my $regression_output = "$Prefix-RegressionTests-Log.txt";
+  my $regression_output = "$RegressionTestsLog";
 
   # Run the regression tests so we can summarize the results
-  system "(time -p gmake -C test Regression.t) > $regression_output 2>&1";
+  system "(time -p gmake $MAKEOPTS -C test Regression.t) > $regression_output 2>&1";
 
   # Extract test results
   $RegressionTestResults = GetQMTestResults("$regression_output");
@@ -397,7 +456,7 @@
 #
 # Get warnings from the build
 #
-my @Warn = split "\n", `egrep 'warning:|Entering dir' $Prefix-Build-Log.txt`;
+my @Warn = split "\n", `egrep 'warning:|Entering dir' $BuildLog`;
 my @Warnings;
 my $CurDir = "";
 
@@ -477,31 +536,32 @@
 my $RemovedFilesList = AddPreTag join "\n", sort keys %RemovedFiles;
 
 my $TestError = 1;
-my $SingleSourceProgramsTable;
-my $MultiSourceProgramsTable;
-my $ExternalProgramsTable;
+my $SingleSourceProgramsTable = "!";
+my $MultiSourceProgramsTable = "!";
+my $ExternalProgramsTable = "!";
 
 
 sub TestDirectory {
   my $SubDir = shift;
 
-  chdir "test/Programs/$SubDir" or
-    die "Could not change into test/Programs/$SubDir testdir!";
+  ChangeDir( "test/Programs/$SubDir", "Programs Test Subdirectory" );
+
+  my $ProgramTestLog = "$Prefix-$SubDir-ProgramTest.txt";
 
   # Run the programs tests... creating a report.nightly.html file
   if (!$NOTEST) {
     system "gmake -k $MAKEOPTS $PROGTESTOPTS report.nightly.html "
-         . "TEST=nightly > $Prefix-$SubDir-ProgramTest.txt 2>&1";
+         . "TEST=nightly > $ProgramTestLog 2>&1";
   } else {
-    system "gunzip $Prefix-$SubDir-ProgramTest.txt.gz";
+    system "gunzip ${ProgramTestLog}.gz";
   }
 
   my $ProgramsTable;
-  if (`grep '^gmake[^:]: .*Error' $Prefix-$SubDir-ProgramTest.txt | wc -l` + 0){
+  if (`grep '^gmake[^:]: .*Error' $ProgramTestLog | wc -l` + 0){
     $TestError = 1;
     $ProgramsTable = "<font color=white><h2>Error running tests!</h2></font>";
     print "ERROR TESTING\n";
-  } elsif (`grep '^gmake[^:]: .*No rule to make target' $Prefix-$SubDir-ProgramTest.txt | wc -l` + 0) {
+  } elsif (`grep '^gmake[^:]: .*No rule to make target' $ProgramTestLog | wc -l` + 0) {
     $TestError = 1;
     $ProgramsTable =
       "<font color=white><h2>Makefile error running tests!</h2></font>";
@@ -513,17 +573,17 @@
     #
     # Create a list of the tests which were run...
     #
-    system "egrep 'TEST-(PASS|FAIL)' < $Prefix-$SubDir-ProgramTest.txt "
+    system "egrep 'TEST-(PASS|FAIL)' < $ProgramTestLog "
          . "| sort > $Prefix-$SubDir-Tests.txt";
   }
 
   # Compress the test output
-  system "gzip -f $Prefix-$SubDir-ProgramTest.txt";
-  chdir "../../.." or die "Cannot return to parent directory!";
+  system "gzip -f $ProgramTestLog";
+  ChangeDir( "../../..", "Programs Test Parent Directory" );
   return $ProgramsTable;
 }
 
-# If we build the tree successfully, run the nightly programs tests...
+# If we built the tree successfully, run the nightly programs tests...
 if ($BuildError eq "") {
   if ( $VERBOSE ) {
     print "SingleSource TEST STAGE\n";
@@ -541,9 +601,7 @@
          " $Prefix-External-Tests.txt | sort > $Prefix-Tests.txt";
 }
 
-if ( $VERBOSE ) {
-  print "TEST INFORMATION COLLECTION STAGE\n";
-}
+if ( $VERBOSE ) { print "TEST INFORMATION COLLECTION STAGE\n"; }
 my ($TestsAdded, $TestsRemoved, $TestsFixed, $TestsBroken) = ("","","","");
 
 if ($TestError) {
@@ -592,25 +650,27 @@
 # If we built the tree successfully, runs of the Olden suite with
 # LARGE_PROBLEM_SIZE on so that we can get some "running" statistics.
 if ($BuildError eq "") {
+  if ( $VERBOSE ) { print "OLDEN TEST SUITE STAGE\n"; }
   my ($NATTime, $CBETime, $LLCTime, $JITTime, $OptTime, $BytecodeSize,
       $MachCodeSize) = ("","","","","","","");
   if (!$NORUNNINGTESTS) {
-    chdir "test/Programs/MultiSource/Benchmarks/Olden" or die "Olden tests moved?";
+    ChangeDir( "$BuildDir/llvm/test/Programs/MultiSource/Benchmarks/Olden",
+      "Olden Test Directory");
 
     # Clean out previous results...
-    system "gmake $MAKEOPTS clean > /dev/null 2>&1";
+    system "$NICE gmake $MAKEOPTS clean > /dev/null 2>&1";
 
     # Run the nightly test in this directory, with LARGE_PROBLEM_SIZE enabled!
     system "gmake -k $MAKEOPTS $PROGTESTOPTS report.nightly.raw.out TEST=nightly " .
            " LARGE_PROBLEM_SIZE=1 > /dev/null 2>&1";
-    system "cp report.nightly.raw.out $Prefix-Olden-tests.txt";
+    system "cp report.nightly.raw.out $OldenTestsLog";
   } else {
-    system "gunzip $Prefix-Olden-tests.txt.gz";
+    system "gunzip ${OldenTestsLog}.gz";
   }
 
-  # Now we know we have $Prefix-Olden-tests.txt as the raw output file.  Split
+  # Now we know we have $OldenTestsLog as the raw output file.  Split
   # it up into records and read the useful information.
-  my @Records = split />>> ========= /, ReadFile "$Prefix-Olden-tests.txt";
+  my @Records = split />>> ========= /, ReadFile "$OldenTestsLog";
   shift @Records;  # Delete the first (garbage) record
 
   # Loop over all of the records, summarizing them into rows for the running
@@ -644,12 +704,10 @@
   AddRecord($BytecodeSize, "running_Olden_bytecode.txt");
   AddRecord($MachCodeSize, "running_Olden_machcode.txt");
 
-  system "gzip -f $Prefix-Olden-tests.txt";
+  system "gzip -f $OldenTestsLog";
 }
 
 
-
-
 #
 # Get a list of the previous days that we can link to...
 #
@@ -659,13 +717,13 @@
   splice @PrevDays, 20;  # Trim down list to something reasonable...
 }
 
-my $PrevDaysList =     # Format list for sidebar
-  join "\n  ", map { "<a href=\"$_.html\">$_</a><br>" } @PrevDays;
+# Format list for sidebar
+my $PrevDaysList = join "\n  ", map { "<a href=\"$_.html\">$_</a><br>" } @PrevDays;
 
 #
 # Start outputing files into the web directory
 #
-chdir $WebDir or die "Could not change into web directory!";
+ChangeDir( $WebDir, "Web Directory" );
 
 # Add information to the files which accumulate information for graphs...
 AddRecord($LOC, "running_loc.txt");
@@ -679,13 +737,12 @@
 #
 $GNUPLOT = "/usr/dcs/software/supported/bin/gnuplot";
 $GNUPLOT = "gnuplot" if ! -x $GNUPLOT;
-$PlotScriptFilename = "$BuildDir/llvm/utils/NightlyTest.gnuplot";
-system ($GNUPLOT, $PlotScriptFilename);
+system ("$GNUPLOT", $PlotScriptFilename);
 
 #
 # Remove the cvs tree...
 #
-system "rm -rf $BuildDir" if (!$NOCHECKOUT and !$NOREMOVE);
+system ( "$NICE rm -rf $BuildDir") if (!$NOCHECKOUT and !$NOREMOVE);
 
 #
 # Print out information...
@@ -719,20 +776,12 @@
 }
 # Main HTML file...
 my $Output;
+my $TestFinishTime = gmtime;
+my $TestPlatform = `uname -a`;
 eval "\$Output = <<ENDOFFILE;$TemplateContents\nENDOFFILE\n";
 WriteFile "$DATE.html", $Output;
+system ( "ln -sf $DATE.html index.html" );
 
 # Change the index.html symlink...
-system "ln -sf $DATE.html index.html";
 
-sub AddRecord {
-  my ($Val, $Filename) = @_;
-  my @Records;
-  if (open FILE, "$WebDir/$Filename") {
-    @Records = grep !/$DATE/, split "\n", <FILE>;
-    close FILE;
-  }
-  push @Records, "$DATE: $Val";
-  WriteFile "$WebDir/$Filename", (join "\n", @Records) . "\n";
-  return @Records;
-}
+# vim: sw=2 ai





More information about the llvm-commits mailing list