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

Unified Diff: build/android/pylib/host_driven/test_server.py

Issue 23726004: Add test_server_setup.py and add support for additional flags. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed permissions Created 7 years, 3 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 | « build/android/pylib/host_driven/test_case.py ('k') | build/android/pylib/instrumentation/test_runner.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/pylib/host_driven/test_server.py
diff --git a/build/android/pylib/host_driven/test_server.py b/build/android/pylib/host_driven/test_server.py
new file mode 100644
index 0000000000000000000000000000000000000000..23d6820c5610516138916139bd3b6986405dfec5
--- /dev/null
+++ b/build/android/pylib/host_driven/test_server.py
@@ -0,0 +1,92 @@
+# Copyright 2013 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.
+
+"""Host driven test server controller.
+
+This class controls the startup and shutdown of a python driven test server that
+runs in a separate process.
+
+The server starts up automatically when the object is created.
+
+After it starts up, it is possible to retreive the hostname it started on
+through accessing the member field |host| and the port name through |port|.
+
+For shutting down the server, call TearDown().
+"""
+
+import subprocess
+import os
+import os.path
+
+from pylib import constants
+
+# NOTE: when adding or modifying these lines, omit any leading slashes!
+# Otherwise os.path.join() will (correctly) treat them as absolute paths
+# instead of relative paths, and will do nothing.
+_PYTHONPATH_DIRS = [
+ 'net/tools/testserver/',
+ 'third_party/',
+ 'third_party/pyftpdlib/src/',
+ 'third_party/pywebsocket/src',
+ 'third_party/tlslite/',
+]
+
+# Python files in these directories are generated as part of the build.
+# These dirs are located in out/(Debug|Release) directory.
+# The correct path is determined based on the build type. E.g. out/Debug for
+# debug builds and out/Release for release builds.
+_GENERATED_PYTHONPATH_DIRS = [
+ 'pyproto/sync/protocol/',
+ 'pyproto/'
+]
+
+_TEST_SERVER_HOST = '127.0.0.1'
+# Paths for supported test server executables.
+TEST_NET_SERVER_PATH = 'net/tools/testserver/testserver.py'
+TEST_SYNC_SERVER_PATH = 'sync/tools/testserver/sync_testserver.py'
+
+
+class TestServer(object):
+ """Sets up a host driven test server on the host machine.
+
+ For shutting down the server, call TearDown().
+ """
+
+ def __init__(self, shard_index, test_server_port, test_server_path):
+ """Sets up a Python driven test server on the host machine.
+
+ Args:
+ shard_index: Index of the current shard.
+ test_server_port: Port to run the test server on. This is multiplexed with
+ the shard index. To retrieve the real port access the
+ member variable |port|.
+ test_server_path: The path (relative to the root src dir) of the server
+ """
+ self.host = _TEST_SERVER_HOST
+ self.port = test_server_port + shard_index
+
+ src_dir = constants.DIR_SOURCE_ROOT
+ # Make dirs into a list of absolute paths.
+ abs_dirs = [os.path.join(src_dir, d) for d in _PYTHONPATH_DIRS]
+ # Add the generated python files to the path
+ abs_dirs.extend([os.path.join(src_dir, 'out', constants.GetBuildType(), d)
+ for d in _GENERATED_PYTHONPATH_DIRS])
+ current_python_path = os.environ.get('PYTHONPATH')
+ extra_python_path = ':'.join(abs_dirs)
+ if current_python_path:
+ python_path = current_python_path + ':' + extra_python_path
+ else:
+ python_path = extra_python_path
+
+ # NOTE: A separate python process is used to simplify getting the right
+ # system path for finding includes.
+ cmd = ['python', os.path.join(src_dir, test_server_path),
+ '--log-to-console',
+ ('--host=%s' % self.host),
+ ('--port=%d' % self.port)]
+ self._test_server_process = subprocess.Popen(
+ cmd, env={'PYTHONPATH': python_path})
+
+ def TearDown(self):
+ self._test_server_process.kill()
« no previous file with comments | « build/android/pylib/host_driven/test_case.py ('k') | build/android/pylib/instrumentation/test_runner.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698