Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Unified Diff: tools/python/google/platform_utils_mac.py

Issue 79017: Port page_cycler_http to Mac (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/python/google/platform_utils.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/python/google/platform_utils_mac.py
===================================================================
--- tools/python/google/platform_utils_mac.py (revision 13921)
+++ tools/python/google/platform_utils_mac.py (working copy)
@@ -1,74 +1,44 @@
-# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+#!/usr/bin/python
+# Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+
"""Platform-specific utility methods shared by several scripts."""
import os
-import re
import subprocess
-import sys
import google.path_utils
-# Cache a single cygpath process for use throughout, even across instances of
-# the PlatformUtility class.
-_cygpath_proc = None
class PlatformUtility(object):
def __init__(self, base_dir):
"""Args:
- base_dir: a directory above which third_party/cygwin can be found,
- used to locate the cygpath executable for path conversions.
+ base_dir: the base dir for running tests.
"""
- self._cygwin_root = None
self._base_dir = base_dir
+ self._httpd_cmd_string = None # used for starting/stopping httpd
+ self._bash = "/bin/bash"
- def _CygwinRoot(self):
- """Returns the full path to third_party/cygwin/."""
- if not self._cygwin_root:
- self._cygwin_root = google.path_utils.FindUpward(self._base_dir,
- 'third_party', 'cygwin')
- return self._cygwin_root
+ def _UnixRoot(self):
+ """Returns the path to root."""
+ return "/"
- def _PathToExecutable(self, executable):
- """Returns the full path to an executable in Cygwin's bin dir."""
- return os.path.join(self._CygwinRoot(), 'bin', executable)
-
- def GetAbsolutePath(self, path, force=False):
- """Returns an absolute windows path. If platform is cygwin, converts it to
- windows style using cygpath.
-
- For performance reasons, we use a single cygpath process, shared among all
- instances of this class. Otherwise Python can run out of file handles.
- """
- if not force and sys.platform != "cygwin":
- return os.path.abspath(path)
- global _cygpath_proc
- if not _cygpath_proc:
- cygpath_command = [self._PathToExecutable("cygpath.exe"),
- "-a", "-m", "-f", "-"]
- _cygpath_proc = subprocess.Popen(cygpath_command,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE)
- _cygpath_proc.stdin.write(path + "\n")
- return _cygpath_proc.stdout.readline().rstrip()
-
def GetFilesystemRoot(self):
"""Returns the root directory of the file system."""
- return os.environ['SYSTEMDRIVE'] + '\\'
+ return self._UnixRoot()
def GetTempDirectory(self):
- """Returns the file system's base temp directory, or the filesystem root
- if the standard temp directory can't be determined.
+ """Returns the file system temp directory
Note that this does not use a random subdirectory, so it's not
intrinsically secure. If you need a secure subdir, use the tempfile
package.
"""
- return os.environ.get('TEMP', self.GetFilesystemRoot())
+ return os.getenv("TMPDIR", "/tmp")
def FilenameToUri(self, path, use_http=False, use_ssl=False, port=8000):
- """Convert a Windows style path to a URI.
+ """Convert a filesystem path to a URI.
Args:
path: For an http URI, the path relative to the httpd server's
@@ -83,9 +53,8 @@
protocol = 'http'
if use_ssl:
protocol = 'https'
- path = path.replace("\\", "/")
- return "%s://127.0.0.1:%s/%s" % (protocol, str(port), path)
- return "file:///" + self.GetAbsolutePath(path)
+ return "%s://127.0.0.1:%d/%s" % (protocol, port, path)
+ return "file://" + path
def GetStartHttpdCommand(self, output_dir,
httpd_conf_path, mime_types_path,
@@ -103,51 +72,37 @@
file alongside this script does not specify any DocumentRoot, so if
you're using that one, be sure to specify a document_root here.
apache2: boolean if true will cause this function to return start
- command for Apache 2.x as opposed to Apache 1.3.x
+ command for Apache 2.x as opposed to Apache 1.3.x. This flag
+ is ignored on Mac (but preserved here for compatibility in
+ function signature with win), where httpd2 is used always
"""
- if document_root:
- document_root = GetCygwinPath(document_root)
exe_name = "httpd"
- cert_file = ""
- if apache2:
- exe_name = "httpd2"
- cert_file = google.path_utils.FindUpward(self._base_dir, 'tools',
- 'python', 'google',
- 'httpd_config', 'httpd2.pem')
+ cert_file = google.path_utils.FindUpward(self._base_dir, 'tools',
+ 'python', 'google',
+ 'httpd_config', 'httpd2.pem')
httpd_vars = {
- "httpd_executable_path": GetCygwinPath(
- os.path.join(self._CygwinRoot(), "usr", "sbin", exe_name)),
- "httpd_conf_path": GetCygwinPath(httpd_conf_path),
- "ssl_certificate_file": GetCygwinPath(cert_file),
+ "httpd_executable_path":
+ os.path.join(self._UnixRoot(), "usr", "sbin", exe_name),
+ "httpd_conf_path": httpd_conf_path,
+ "ssl_certificate_file": cert_file,
"document_root" : document_root,
- "server_root": GetCygwinPath(os.path.join(self._CygwinRoot(), "usr")),
- "mime_types_path": GetCygwinPath(mime_types_path),
- "output_dir": GetCygwinPath(output_dir),
- "bindir": GetCygwinPath(os.path.join(self._CygwinRoot(), "bin")),
- "user": os.environ.get("USERNAME", os.environ.get("USER", "")),
+ "server_root": os.path.join(self._UnixRoot(), "usr"),
+ "mime_types_path": mime_types_path,
+ "output_dir": output_dir,
+ "user": os.environ.get("USER", "#%d" % os.geteuid()),
+ "lock_file": os.path.join(output_dir, "accept.lock"),
}
- if not httpd_vars["user"]:
- # Failed to get the username from the environment; use whoami.exe
- # instead.
- proc = subprocess.Popen(self._PathToExecutable("whoami.exe"),
- stdout=subprocess.PIPE)
- httpd_vars["user"] = proc.stdout.read().strip()
- if not httpd_vars["user"]:
- raise Exception("Failed to get username.")
-
google.path_utils.MaybeMakeDirectory(output_dir)
- # We have to wrap the command in bash because the cygwin environment
- # is required for httpd to run.
+ # We have to wrap the command in bash
# -C: process directive before reading config files
# -c: process directive after reading config files
# Apache wouldn't run CGIs with permissions==700 unless we add
# -c User "<username>"
- bash = self._PathToExecutable("bash.exe")
httpd_cmd_string = (
- ' PATH=%(bindir)s %(httpd_executable_path)s'
+ '%(httpd_executable_path)s'
' -f %(httpd_conf_path)s'
' -c \'TypesConfig "%(mime_types_path)s"\''
' -c \'CustomLog "%(output_dir)s/access_log.txt" common\''
@@ -155,41 +110,26 @@
' -c \'PidFile "%(output_dir)s/httpd.pid"\''
' -C \'User "%(user)s"\''
' -C \'ServerRoot "%(server_root)s"\''
+ ' -c \'LockFile "%(lock_file)s"\''
+ ' -c \'SSLCertificateFile "%(ssl_certificate_file)s"\''
)
- if apache2:
- httpd_cmd_string = ('export CYGWIN=server;' + httpd_cmd_string +
- ' -c \'SSLCertificateFile "%(ssl_certificate_file)s"\'')
+
if document_root:
httpd_cmd_string += ' -C \'DocumentRoot "%(document_root)s"\''
+ # Save a copy of httpd_cmd_string to use for stopping httpd
+ self._httpd_cmd_string = httpd_cmd_string % httpd_vars
- httpd_cmd = [bash, "-c", httpd_cmd_string % httpd_vars]
+ httpd_cmd = [self._bash, "-c", self._httpd_cmd_string]
return httpd_cmd
def GetStopHttpdCommand(self):
"""Returns a list of strings that contains the command line+args needed to
stop the http server used in the http tests.
+
+ This tries to fetch the pid of httpd (if available) and returns the
+ command to kill it. If pid is not available, kill all httpd processes
"""
- # Force kill (/f) *all* httpd processes. This has the side effect of
- # killing httpd processes that we didn't start.
- return ["taskkill.exe", "/f", "/im", "httpd*"]
-###########################################################################
-# This method is specific to windows, expected to be used only by *_win.py
-# files.
-
-def GetCygwinPath(path):
- """Convert a Windows path to a cygwin path.
-
- The cygpath utility insists on converting paths that it thinks are Cygwin
- root paths to what it thinks the correct roots are. So paths such as
- "C:\b\slave\webkit-release-kjs\build\third_party\cygwin\bin" are converted to
- plain "/usr/bin". To avoid this, we do the conversion manually.
-
- The path is expected to be an absolute path, on any drive.
- """
- drive_regexp = re.compile(r'([a-z]):[/\\]', re.IGNORECASE)
- def LowerDrive(matchobj):
- return '/cygdrive/%s/' % matchobj.group(1).lower()
- path = drive_regexp.sub(LowerDrive, path)
- return path.replace('\\', '/')
-
+ if not self._httpd_cmd_string:
+ return ["true"] # Haven't been asked for the start cmd yet. Just pass.
+ return [self._bash, "-c", self._httpd_cmd_string + ' -k stop']
« no previous file with comments | « tools/python/google/platform_utils.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698