Index: tools/telemetry/telemetry/core/temporary_http_server.py |
diff --git a/tools/telemetry/telemetry/core/temporary_http_server.py b/tools/telemetry/telemetry/core/temporary_http_server.py |
index 798eca172724fb77cf9c38f065d3a9c03c1421e4..72615d4ed7397860b1ba232f1433089d5daaa194 100644 |
--- a/tools/telemetry/telemetry/core/temporary_http_server.py |
+++ b/tools/telemetry/telemetry/core/temporary_http_server.py |
@@ -10,23 +10,28 @@ import urlparse |
from telemetry.core import util |
class TemporaryHTTPServer(object): |
- def __init__(self, browser_backend, path): |
+ def __init__(self, browser_backend, paths): |
self._server = None |
self._devnull = None |
- self._path = path |
+ self._paths = [] |
self._forwarder = None |
- |
self._host_port = util.GetAvailableLocalPort() |
- assert os.path.exists(path), path |
- assert os.path.isdir(path), path |
+ if not isinstance(paths, list): |
+ paths = [paths] |
+ for path in paths: |
+ assert os.path.exists(path), path |
+ assert os.path.isdir(path), path |
+ self._paths.append(os.path.abspath(path)) |
self._devnull = open(os.devnull, 'w') |
- self._WarmDiskCache() |
- self._server = subprocess.Popen( |
- [sys.executable, '-m', 'SimpleHTTPServer', str(self._host_port)], |
- cwd=self._path, |
- stdout=self._devnull, stderr=self._devnull) |
+ cmd = [sys.executable, '-m', 'memory_cache_http_server', |
+ str(self._host_port)] |
+ cmd.extend(self._paths) |
+ self._server = subprocess.Popen(cmd, cwd=os.path.commonprefix(self._paths), |
+ env={'PYTHONPATH': |
+ os.path.abspath(os.path.join(os.path.dirname(__file__)))}, |
+ stdout=self._devnull, stderr=self._devnull) |
self._forwarder = browser_backend.CreateForwarder( |
util.PortPair(self._host_port, |
@@ -37,8 +42,8 @@ class TemporaryHTTPServer(object): |
util.WaitFor(IsServerUp, 5) |
@property |
- def path(self): |
- return self._path |
+ def paths(self): |
+ return self._paths |
def __enter__(self): |
return self |
@@ -49,18 +54,6 @@ class TemporaryHTTPServer(object): |
def __del__(self): |
self.Close() |
- def _WarmDiskCache(self): |
- """Warm the disk cache for all files in self._path. This decreases the |
- likelyhood of disk paging at serving time. |
- """ |
- for root, _, files in os.walk(self._path): |
- for f in files: |
- file_path = os.path.join(root, f) |
- if not os.path.exists(file_path): # Allow for '.#' files |
- continue |
- with open(file_path, 'r') as fd: |
- self._devnull.write(fd.read()) |
- |
def Close(self): |
if self._forwarder: |
self._forwarder.Close() |