OLD | NEW |
1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Setups a local Rietveld instance to test against a live server for | 5 """Setups a local Rietveld instance to test against a live server for |
6 integration tests. | 6 integration tests. |
7 | 7 |
8 It makes sure Google AppEngine SDK is found, download Rietveld and Django code | 8 It makes sure Google AppEngine SDK is found, download Rietveld and Django code |
9 if necessary and starts the server on a free inbound TCP port. | 9 if necessary and starts the server on a free inbound TCP port. |
10 """ | 10 """ |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 ['svn', 'co', '-q', | 89 ['svn', 'co', '-q', |
90 'http://code.djangoproject.com/' | 90 'http://code.djangoproject.com/' |
91 'svn/django/branches/releases/1.0.X/django@13637', | 91 'svn/django/branches/releases/1.0.X/django@13637', |
92 self.django_path]): | 92 self.django_path]): |
93 raise Failure('Failed to checkout django') | 93 raise Failure('Failed to checkout django') |
94 | 94 |
95 def start_server(self, verbose=False): | 95 def start_server(self, verbose=False): |
96 self.install_prerequisites() | 96 self.install_prerequisites() |
97 self.port = find_free_port() | 97 self.port = find_free_port() |
98 if verbose: | 98 if verbose: |
99 stdout = None | 99 self.out = None |
100 stderr = None | 100 self.err = None |
101 else: | 101 else: |
102 stdout = subprocess.PIPE | 102 self.out = open(os.devnull, 'w') |
103 stderr = subprocess.PIPE | 103 self.err = open(os.devnull, 'w') |
104 output = [] | 104 output = [] |
105 self.test_server = subprocess.Popen( | 105 self.test_server = subprocess.Popen( |
106 [self.dev_app, self.rietveld, '--port=%d' % self.port, | 106 [self.dev_app, self.rietveld, '--port=%d' % self.port, |
107 '--datastore_path=' + os.path.join(self.rietveld, 'tmp.db'), '-c'], | 107 '--datastore_path=' + os.path.join(self.rietveld, 'tmp.db'), '-c'], |
108 stdout=stdout, stderr=stderr, env=self.env) | 108 stdout=self.out, stderr=self.err, env=self.env) |
109 # Loop until port 127.0.0.1:port opens or the process dies. | 109 # Loop until port 127.0.0.1:port opens or the process dies. |
110 while not test_port(self.port): | 110 while not test_port(self.port): |
111 self.test_server.poll() | 111 self.test_server.poll() |
112 if self.test_server.returncode is not None: | 112 if self.test_server.returncode is not None: |
113 raise Failure( | 113 raise Failure( |
114 'Test rietveld instance failed early on port %s' % | 114 'Test rietveld instance failed early on port %s' % |
115 self.port) | 115 self.port) |
116 time.sleep(0.001) | 116 time.sleep(0.001) |
117 | 117 |
118 def stop_server(self): | 118 def stop_server(self): |
119 if self.test_server: | 119 if self.test_server: |
120 self.test_server.kill() | 120 self.test_server.kill() |
121 self.test_server = None | 121 self.test_server = None |
122 self.port = None | 122 self.port = None |
| 123 if self.out: |
| 124 self.out.close() |
| 125 self.out = None |
| 126 if self.err: |
| 127 self.err.close() |
| 128 self.err = None |
123 | 129 |
124 | 130 |
125 def main(): | 131 def main(): |
126 print LocalRietveld().start_server() | 132 print LocalRietveld().start_server() |
127 | 133 |
128 | 134 |
129 if __name__ == '__main__': | 135 if __name__ == '__main__': |
130 main() | 136 main() |
131 | 137 |
132 # vim: ts=4:sw=4:tw=80:et: | 138 # vim: ts=4:sw=4:tw=80:et: |
OLD | NEW |