Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/usr/bin/python | |
|
frankf
2013/08/30 18:22:43
Remove the shebang, this module is only imported.
nyquist
2013/08/30 21:50:59
Done.
| |
| 2 # Copyright 2013 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 """Python driven test server controller. | |
| 7 | |
| 8 This class controls the startup and shutdown of a python driven test server that | |
| 9 runs in a separate process. | |
| 10 | |
| 11 The server starts up automatically when the object is created. | |
| 12 | |
| 13 After it starts up, it is possible to retreive the port it started on through | |
| 14 accessing the member field |port|. | |
| 15 | |
| 16 For shutting down the server, call TearDown(). | |
| 17 """ | |
| 18 | |
| 19 import subprocess | |
| 20 import os | |
| 21 import os.path | |
| 22 | |
| 23 from pylib import constants | |
| 24 | |
| 25 # NOTE: when adding or modifying these lines, omit any leading slashes! | |
| 26 # Otherwise os.path.join() will (correctly) treat them as absolute paths | |
| 27 # instead of relative paths, and will do nothing. | |
| 28 _PYTHONPATH_DIRS = [ | |
| 29 'net/tools/testserver/', | |
| 30 'third_party/', | |
| 31 'third_party/pyftpdlib/src/', | |
| 32 'third_party/pywebsocket/src', | |
| 33 'third_party/tlslite/', | |
| 34 ] | |
| 35 | |
| 36 # Python files in these directories are generated as part of the build. | |
| 37 # These dirs are located in out/(Debug|Release) directory. | |
| 38 # The correct path is determined based on the build type. E.g. out/Debug for | |
| 39 # debug builds and out/Release for release builds. | |
| 40 _GENERATED_PYTHONPATH_DIRS = [ | |
| 41 'pyproto/sync/protocol/', | |
| 42 'pyproto/' | |
| 43 ] | |
| 44 | |
| 45 | |
| 46 class TestServer(object): | |
| 47 """Sets up a Python driven test server on the host machine. | |
|
frankf
2013/08/30 18:22:43
s/python driven/host driven/g
nyquist
2013/08/30 21:50:59
Done.
| |
| 48 | |
| 49 For shutting down the server, call TearDown(). | |
| 50 """ | |
| 51 | |
| 52 def __init__(self, shard_index, test_server_port, test_server_path): | |
| 53 """Sets up a Python driven test server on the host machine. | |
| 54 | |
| 55 Args: | |
| 56 shard_index: Index of the current shard. | |
| 57 test_server_port: Port to run the test server on. This is multiplexed with | |
| 58 the shard index. To retrieve the real port access the | |
| 59 member variable |port|. | |
| 60 test_server_path: The path (relative to the root src dir) of the server | |
| 61 | |
| 62 Returns: | |
|
frankf
2013/08/30 18:22:43
Update this
nyquist
2013/08/30 21:50:59
Done. Removed "Returns" since this is now a constr
| |
| 63 A tuple where the first element is the port used by the server, and the | |
| 64 second is the mock server that was setup. | |
| 65 """ | |
| 66 self.port = test_server_port + shard_index | |
| 67 | |
| 68 src_dir = constants.DIR_SOURCE_ROOT | |
| 69 # Make dirs into a list of absolute paths. | |
| 70 abs_dirs = [os.path.join(src_dir, d) for d in _PYTHONPATH_DIRS] | |
| 71 # Add the generated python files to the path | |
| 72 abs_dirs.extend([os.path.join(src_dir, 'out', constants.GetBuildType(), d) | |
| 73 for d in _GENERATED_PYTHONPATH_DIRS]) | |
| 74 # Note the colon after $PYTHONPATH. This appends the list of | |
|
craigdh
2013/08/30 17:55:50
nit: update comment, or perhaps just remove it?
nyquist
2013/08/30 21:50:59
Done. Removed.
| |
| 75 # _PYTHONPATH_DIRS to the existing PYTHONPATH. | |
| 76 current_python_path = os.environ.get('PYTHONPATH') | |
| 77 extra_python_path = ':'.join(abs_dirs) | |
| 78 if current_python_path: | |
| 79 python_path = current_python_path + ':' + extra_python_path | |
| 80 else: | |
| 81 python_path = extra_python_path | |
| 82 | |
| 83 # NOTE: A separate python process is used to simplify getting the right | |
| 84 # system path for finding includes. | |
| 85 server_flags = ['python', os.path.join(src_dir, test_server_path), | |
|
frankf
2013/08/30 18:22:43
server_flags -> cmd
nyquist
2013/08/30 21:50:59
Done.
| |
| 86 '--log-to-console', | |
| 87 ('--host=%s' % constants.TEST_SERVER_HOST), | |
| 88 ('--port=%d' % self.port)] | |
| 89 self._test_server_process = subprocess.Popen( | |
| 90 server_flags, env={'PYTHONPATH': python_path}) | |
| 91 | |
| 92 def TearDown(self): | |
| 93 self._test_server_process.kill() | |
| OLD | NEW |