Reviewed by Geoff.
[WebKit-https.git] / SunSpider / sunspider
index da8634f..3fd8f27 100755 (executable)
@@ -170,6 +170,33 @@ sub newestFile($$)
     return "$dir/$newestFile";
 }
 
+sub isDarwin()
+{
+    return ($^O eq "darwin");
+}
+
+my $updateSuspended = 0;
+
+sub suspendUpdate()
+{
+    print "Suspending update daemon...\n";
+    $SIG{INT} = sub { resumeUpdate(); exit; };
+    $updateSuspended = !(system "sudo -p 'Please provide your password for sudo: ' killall -STOP update");
+    if (!$updateSuspended) {
+        print "Could not suspend update.\n";
+    }
+}
+
+sub resumeUpdate()
+{
+    if ($updateSuspended) {
+        print "Resuming update daemon...\n";
+        system "sudo killall -CONT update";
+    }
+    $SIG{INT} = 'DEFAULT';
+}
+
+
 loadTestsList();
 if ($testsPattern) {
     print STDERR "Found " . scalar(@tests) . " tests matching '" . $testsPattern . "'\n";
@@ -177,6 +204,9 @@ if ($testsPattern) {
     print STDERR "Found " . scalar(@tests) . " tests\n";
 }
 die "No tests to run"  unless scalar(@tests);
+
+suspendUpdate() if isDarwin(); # workaround for <rdar://problem/5811127>
+
 print STDERR "Running SunSpider once for warmup, then " . ($runShark ? "under Shark" : "$testRuns time" . ($testRuns == 1 ? "" : "s")) . "\n";
 writePrefixFile();
 
@@ -198,6 +228,8 @@ while ($count++ < $testRuns) {
 }
 print "]\n";
 
+resumeUpdate() if isDarwin(); # workaround for <rdar://problem/5811127>
+
 my $output = "var output = [\n" . join(",\n", @results) . "\n];\n";
 dumpToFile($output, $resultsFile);
 dumpToFile(File::Spec->rel2abs($resultsFile), "tmp/baseline-filename.txt") if $setBaseline;