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