run-pageloadtest 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/usr/bin/perl
  2. # Copyright (C) 2006 Eric Seidel (eric@webkit.org)
  3. #
  4. # Redistribution and use in source and binary forms, with or without
  5. # modification, are permitted provided that the following conditions
  6. # are met:
  7. #
  8. # 1. Redistributions of source code must retain the above copyright
  9. # notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. # notice, this list of conditions and the following disclaimer in the
  12. # documentation and/or other materials provided with the distribution.
  13. # 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
  14. # its contributors may be used to endorse or promote products derived
  15. # from this software without specific prior written permission.
  16. #
  17. # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
  18. # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  19. # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  20. # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
  21. # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  22. # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  23. # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  24. # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  25. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  26. # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27. # Script to run the WebKit Open Source Project page load tests (PLTs).
  28. # Run all the tests passed in on the command line.
  29. use strict;
  30. use warnings;
  31. use File::Basename;
  32. use File::Spec;
  33. use FindBin;
  34. use Getopt::Long;
  35. use lib $FindBin::Bin;
  36. use webkitdirs;
  37. # Argument handling
  38. my $testName = 'svg';
  39. my $showHelp = 0;
  40. my $usage =
  41. "Usage: " . basename($0) . "[options] testName\n" .
  42. " --help Show this help message\n";
  43. my $getOptionsResult = GetOptions('help' => \$showHelp);
  44. if (!$getOptionsResult || $showHelp) {
  45. print STDERR $usage;
  46. exit 1;
  47. }
  48. $testName = shift @ARGV if (@ARGV);
  49. my $safariExecutablePath = safariPath();
  50. my $safariResourcePath = File::Spec->catdir(dirname(dirname($safariExecutablePath)), "Resources");
  51. # Check to see that all the frameworks are built.
  52. checkFrameworks();
  53. chdirWebKit();
  54. if ($testName eq 'svg') {
  55. my $suiteFile = "PerformanceTests/PageLoad/$testName/$testName.pltsuite";
  56. my $webkitPath = sourceDir();
  57. `cat "$suiteFile" | perl -pe 's|WEBKIT_PATH|$webkitPath|' > $safariResourcePath/$testName.pltsuite`
  58. }
  59. die "Please copy ${testName}.pltsuite to ${safariResourcePath}/${testName}.pltsuite"
  60. if (! -f "${safariResourcePath}/${testName}.pltsuite");
  61. setConfiguration();
  62. my $productDir = productDir();
  63. # Set up DYLD_FRAMEWORK_PATH to point to the product directory.
  64. print "Starting Safari with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
  65. $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
  66. $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
  67. my @testCommands = ('activate');
  68. # Autovicki would clear history, we skip that here as this is likely an active user account
  69. @testCommands = (@testCommands, ("run $testName", 'emptyCache', 'wait 30'));
  70. @testCommands = (@testCommands, (("run $testName", 'wait 10') x 3));
  71. my $testCommandsString = join('; ', @testCommands);
  72. exec $safariExecutablePath, '--test-commands', $testCommandsString or die;