Home | History | Annotate | Download | only in Scripts
      1 #!/usr/bin/perl
      2 # Copyright (C) 2009 Google Inc. All rights reserved.
      3 #
      4 # Redistribution and use in source and binary forms, with or without
      5 # modification, are permitted provided that the following conditions are
      6 # met:
      7 #
      8 #     * Redistributions of source code must retain the above copyright
      9 # notice, this list of conditions and the following disclaimer.
     10 #     * Redistributions in binary form must reproduce the above
     11 # copyright notice, this list of conditions and the following disclaimer
     12 # in the documentation and/or other materials provided with the
     13 # distribution.
     14 #     * Neither the name of Google Inc. nor the names of its
     15 # contributors may be used to endorse or promote products derived from
     16 # this software without specific prior written permission.
     17 #
     18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29 
     30 # Script to run Web Socket server.
     31 
     32 use strict;
     33 use warnings;
     34 
     35 use File::Spec;
     36 use FindBin;
     37 use IPC::Open2;
     38 
     39 use lib $FindBin::Bin;
     40 use webkitdirs;
     41 
     42 sub closeWebSocketServer();
     43 sub openWebSocketServer();
     44 
     45 my $webSocketPort = 8880;
     46 
     47 my $srcDir = sourceDir();
     48 my $layoutTestsName = "$srcDir/LayoutTests";
     49 my $testDirectory = File::Spec->rel2abs($layoutTestsName);
     50 my $webSocketServerPidFile = "$testDirectory/websocket.pid";
     51 
     52 
     53 print "Starting Web Socket server...\n";
     54 openWebSocketServer();
     55 print "Started.\n";
     56 print "Hit [ENTER] to stop it.";
     57 <STDIN>;
     58 print "Stopping Web Socket server...\n";
     59 closeWebSocketServer();
     60 print "Stopped.\n";
     61 exit 0;
     62 
     63 sub openWebSocketServer()
     64 {
     65     my $webSocketHandlerDir = "$testDirectory";
     66 
     67     my @args = (
     68         "$srcDir/Tools/Scripts/new-run-webkit-websocketserver",
     69         "--server", "start",
     70         "--port", "$webSocketPort",
     71         "--root", "$webSocketHandlerDir",
     72         "--pidfile", "$webSocketServerPidFile"
     73     );
     74     system "/usr/bin/python", @args;
     75 }
     76 
     77 sub closeWebSocketServer()
     78 {
     79     my @args = (
     80         "$srcDir/Tools/Scripts/new-run-webkit-websocketserver",
     81         "--server", "stop",
     82         "--pidfile", "$webSocketServerPidFile"
     83     );
     84     system "/usr/bin/python", @args;
     85     unlink "$webSocketServerPidFile";
     86 }
     87 
     88 
     89