1 #!/usr/bin/perl 2 3 # Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved. 4 # Copyright (C) 2006 Alexey Proskuryakov (ap (at] nypop.com) 5 # 6 # Redistribution and use in source and binary forms, with or without 7 # modification, are permitted provided that the following conditions 8 # are met: 9 # 10 # 1. Redistributions of source code must retain the above copyright 11 # notice, this list of conditions and the following disclaimer. 12 # 2. Redistributions in binary form must reproduce the above copyright 13 # notice, this list of conditions and the following disclaimer in the 14 # documentation and/or other materials provided with the distribution. 15 # 3. Neither the name of Apple Inc. ("Apple") nor the names of 16 # its contributors may be used to endorse or promote products derived 17 # from this software without specific prior written permission. 18 # 19 # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 20 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 23 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 30 # Script to run Apache with the same configuration as used in http layout tests. 31 32 use strict; 33 use warnings; 34 35 use Cwd; 36 use File::Path; 37 use File::Basename; 38 use Getopt::Long; 39 use FindBin; 40 41 use lib $FindBin::Bin; 42 use webkitperl::httpd; 43 use webkitdirs; 44 45 # Argument handling 46 my $httpdPort = 8000; 47 my $allInterfaces = 0; 48 my $showHelp; 49 50 my $result = GetOptions( 51 'all-interfaces|a' => \$allInterfaces, 52 'help|h' => \$showHelp, 53 'port=i' => \$httpdPort, 54 ); 55 56 if (!$result || @ARGV || $showHelp) { 57 print "Usage: " . basename($0) . " [options]\n"; 58 print " -a|--all-interfaces Bind to all interfaces\n"; 59 print " -h|--help Show this help message\n"; 60 print " -p|--port NNNN Bind to port NNNN\n"; 61 exit 1; 62 } 63 64 setConfiguration(); 65 my $productDir = productDir(); 66 chdirWebKit(); 67 my $testDirectory = File::Spec->catfile(getcwd(), "LayoutTests"); 68 my $listen = "127.0.0.1:$httpdPort"; 69 $listen = "$httpdPort" if ($allInterfaces); 70 71 if ($allInterfaces) { 72 print "Starting httpd on port $httpdPort (all interfaces)...\n"; 73 } else { 74 print "Starting httpd on <http://$listen/>...\n"; 75 } 76 setShouldWaitForUserInterrupt(); 77 print "Press Ctrl+C to stop it.\n\n"; 78 79 my @args = ( 80 "-C", "Listen $listen", 81 "-c", "CustomLog |/usr/bin/tee common", 82 "-c", "ErrorLog |/usr/bin/tee", 83 # Run in single-process mode, do not detach from the controlling terminal. 84 "-X", 85 # Disable Keep-Alive support. Makes testing in multiple browsers easier (no need to wait 86 # for another browser's connection to expire). 87 "-c", "KeepAlive 0" 88 ); 89 90 my @defaultArgs = getDefaultConfigForTestDirectory($testDirectory); 91 @args = (@defaultArgs, @args); 92 openHTTPD(@args); 93