diff options
Diffstat (limited to 'WebKitTools/Scripts/run-webkit-websocketserver')
-rwxr-xr-x | WebKitTools/Scripts/run-webkit-websocketserver | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/WebKitTools/Scripts/run-webkit-websocketserver b/WebKitTools/Scripts/run-webkit-websocketserver new file mode 100755 index 0000000..e05303a --- /dev/null +++ b/WebKitTools/Scripts/run-webkit-websocketserver @@ -0,0 +1,96 @@ +#!/usr/bin/perl +# Copyright (C) 2009 Google Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Script to run Web Socket server. + +use strict; +use warnings; + +use File::Spec; +use FindBin; +use IPC::Open2; + +use lib $FindBin::Bin; +use webkitdirs; + +sub closeWebSocketServer(); +sub openWebSocketServer(); + +my $webSocketPort = 8880; + +my $srcDir = sourceDir(); +my $layoutTestsName = "$srcDir/LayoutTests"; +my $testDirectory = File::Spec->rel2abs($layoutTestsName); +my $webSocketServerPID = 0; + + +print "Starting Web Socket server...\n"; +openWebSocketServer(); +print "Started.\n"; +print "Hit [ENTER] to stop it."; +<STDIN>; +print "Stopping Web Socket server...\n"; +closeWebSocketServer(); +print "Stopped.\n"; +exit 0; + + +sub openWebSocketServer() +{ + my $webSocketServerPath = "/usr/bin/python"; + my $webSocketPythonPath = "$srcDir/WebKitTools/pywebsocket"; + my $webSocketHandlerDir = "$testDirectory"; + my $webSocketHandlerScanDir = "$testDirectory/websocket/tests"; + + my @args = ( + "$srcDir/WebKitTools/pywebsocket/mod_pywebsocket/standalone.py", + "-p", "$webSocketPort", + "-d", "$webSocketHandlerDir", + "-s", "$webSocketHandlerScanDir", + ); + + $ENV{"PYTHONPATH"} = $webSocketPythonPath; + $webSocketServerPID = open2(\*WEBSOCKETSERVER_IN, \*WEBSOCKETSERVER_OUT, $webSocketServerPath, @args); + + my $listen = "http://127.0.0.1:$webSocketPort"; + my $retryCount = 10; + while (system("/usr/bin/curl -k -q --silent --stderr - --output /dev/null $listen") && $retryCount) { + sleep 1; + --$retryCount; + } + die "Timed out waiting for WebSocketServer to start" unless $retryCount; +} + +sub closeWebSocketServer() +{ + close WEBSOCKETSERVER_IN; + close WEBSOCKETSERVER_OUT; + kill 15, $webSocketServerPID; +} + |