Home | History | Annotate | Download | only in BuildSlaveSupport
      1 #!/usr/bin/perl -w
      2 
      3 # Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
      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 used by WebKit build slave to kick off performance tests.
     30 
     31 use strict;
     32 
     33 use FindBin;
     34 use lib "$FindBin::Bin/../Scripts";
     35 use webkitdirs;
     36 
     37 use Getopt::Long;
     38 use IO::Socket;
     39 my $shouldPrebuild = 1;
     40 
     41 my $perfMaster = "webkit-build-1.local";
     42 my $perfSlave = "webkit-build-2.local";
     43 my $slaveUser = "buildbot";
     44 my $reportPort = 54481; # Something that looks sorta like SAFARI
     45 my $slaveDirectory = "/ToTest";
     46 
     47 my $buildDirectory = determineConfigurationProductDir();
     48 
     49 my $userAndHost = $slaveUser . "@" . $perfSlave;
     50 my $resultsUploadDestination;
     51 
     52 GetOptions('upload-results=s' => \$resultsUploadDestination);
     53 
     54 print "Copying built frameworks to PLT slave...\n";
     55 my @frameworks = ("$buildDirectory/JavaScriptCore.framework", "$buildDirectory/WebCore.framework", "$buildDirectory/WebKit.framework");
     56 die "Failed to copy to slave\n" unless (system("rsync", "-avz", @frameworks, "$userAndHost:$slaveDirectory") == 0);
     57 
     58 print "Opening reponse port for PLT slave...\n";
     59 my $sock = new IO::Socket::INET(LocalHost => $perfMaster,
     60                                 LocalPort => $reportPort,
     61                                 Proto => 'tcp',
     62                                 Listen => 1,
     63                                 Reuse => 1);
     64 die "Could not create socket for port $reportPort: $!\n" unless $sock;
     65 
     66 print "Starting performance tests on PLT slave...\n";
     67 die "Failed to start slave!\n" unless (system("ssh", $userAndHost, "autovicki", $slaveDirectory, "--safari", "$slaveDirectory/Safari.app", "--count", 5, "--clean-exit", "--webkit-revision", currentSVNRevision(), "--show-results", "send-completed-results.command") == 0);
     68 
     69 print "Waiting for PLT slave to respond...\n";
     70 my $new_sock = $sock->accept();
     71 while(<$new_sock>) {
     72    print $_;
     73 }
     74 close($sock);
     75 
     76 if ($resultsUploadDestination) {
     77     print "Uploading results to $resultsUploadDestination\n";
     78     die "Failed to upload xml results file." unless (system("scp", "$userAndHost:/Results/PerformanceReportSummary.xml", $resultsUploadDestination) == 0);
     79     die "Failed to upload svg results file." unless (system("scp", "$userAndHost:/Results/PerformanceGraph.svg", $resultsUploadDestination) == 0);
     80 }
     81