summaryrefslogtreecommitdiffstats
path: root/tests/DumpRenderTree2/assets/run_apache2.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/DumpRenderTree2/assets/run_apache2.py')
-rwxr-xr-xtests/DumpRenderTree2/assets/run_apache2.py107
1 files changed, 107 insertions, 0 deletions
diff --git a/tests/DumpRenderTree2/assets/run_apache2.py b/tests/DumpRenderTree2/assets/run_apache2.py
new file mode 100755
index 0000000..f404090
--- /dev/null
+++ b/tests/DumpRenderTree2/assets/run_apache2.py
@@ -0,0 +1,107 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2010 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+"""Start, stop, or restart apache2 server.
+
+ Apache2 must be installed with mod_php!
+
+ Usage:
+ run_apache2.py start|stop|restart
+"""
+
+import sys
+import os
+import subprocess
+import logging
+
+def main():
+ if len(sys.argv) < 2:
+ run_cmd = ""
+ else:
+ run_cmd = sys.argv[1]
+
+ #Setup logging class
+ logging.basicConfig(level=logging.INFO, format='%(message)s')
+
+ if not run_cmd in ("start", "stop", "restart"):
+ logging.info("illegal argument: " + run_cmd)
+ logging.info("Usage: python run_apache2.py start|stop|restart")
+ return
+
+ #Create /tmp/WebKit if it doesn't exist. This is needed for various files used by apache2
+ tmp_WebKit = os.path.join("/tmp", "WebKit")
+ if not os.path.exists(tmp_WebKit):
+ os.mkdir(tmp_WebKit)
+
+ #Get the path to android tree root based on the script location.
+ #Basically we go 5 levels up
+ parent = os.pardir
+ script_location = os.path.abspath(os.path.dirname(sys.argv[0]))
+ android_tree_root = os.path.join(script_location, parent, parent, parent, parent, parent)
+ android_tree_root = os.path.normpath(android_tree_root)
+
+ #Prepare the command to set ${APACHE_RUN_USER} and ${APACHE_RUN_GROUP}
+ envvars_path = os.path.join("/etc", "apache2", "envvars")
+ export_envvars_cmd = "source " + envvars_path
+
+ error_log_path = os.path.join(tmp_WebKit, "apache2-error.log")
+
+ #Prepare the command to (re)start/stop the server with specified settings
+ apache2_restart_cmd = "apache2 -k " + run_cmd
+ directives = " -c \"ServerRoot " + android_tree_root + "\""
+ directives += " -c \"DocumentRoot " + os.path.join("external", "webkit") + "\""
+
+ #This directive is commented out in apache2-debian-httpd.conf for some reason
+ #However, it is useful to browse through tests in the browser, so it's added here.
+ #One thing to note is that because of problems with mod_dir and port numbers, mod_dir
+ #is turned off. That means that there _must_ be a trailing slash at the end of URL
+ #for auto indexes to work correctly.
+ directives += " -c \"LoadModule autoindex_module /usr/lib/apache2/modules/mod_autoindex.so\""
+
+ directives += " -c \"ErrorLog " + error_log_path +"\""
+ directives += " -c \"SSLCertificateFile " + os.path.join ("external", "webkit", "LayoutTests",
+ "http", "conf", "webkit-httpd.pem") + "\""
+ directives += " -c \"User ${APACHE_RUN_USER}\""
+ directives += " -c \"Group ${APACHE_RUN_GROUP}\""
+ directives += " -C \"TypesConfig " + os.path.join("/etc", "mime.types") + "\""
+ conf_file_cmd = " -f " + os.path.join(android_tree_root, "external", "webkit", "LayoutTests",
+ "http", "conf", "apache2-debian-httpd.conf")
+
+ #Try to execute the commands
+ logging.info("Will " + run_cmd + " apache2 server.")
+ cmd = export_envvars_cmd + " && " + apache2_restart_cmd + directives + conf_file_cmd
+ p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ (out, err) = p.communicate()
+
+ #Output the stdout from the command to console
+ logging.info(out)
+
+ #Report any errors
+ if p.returncode != 0:
+ logging.info("!! ERRORS:")
+
+ if err.find(envvars_path) != -1:
+ logging.info(err)
+ elif err.find('command not found') != -1:
+ logging.info("apache2 is probably not installed")
+ else:
+ logging.info(err)
+ logging.info("Try looking in " + error_log_path + " for details")
+ else:
+ logging.info("OK")
+
+if __name__ == "__main__":
+ main();