OLD | NEW |
---|---|
1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 from contextlib import contextmanager | 5 from contextlib import contextmanager |
6 | 6 |
7 from recipe_engine import recipe_api | 7 from recipe_engine import recipe_api |
8 | 8 |
9 class GomaApi(recipe_api.RecipeApi): | 9 class GomaApi(recipe_api.RecipeApi): |
10 """GomaApi contains helper functions for using goma.""" | 10 """GomaApi contains helper functions for using goma.""" |
11 | 11 |
12 def __init__(self, **kwargs): | 12 def __init__(self, **kwargs): |
13 super(GomaApi, self).__init__(**kwargs) | 13 super(GomaApi, self).__init__(**kwargs) |
14 self._goma_dir = None | 14 self._goma_dir = None |
15 self._goma_started = False | 15 self._goma_started = False |
16 | 16 |
17 self._goma_ctl_env = {} | 17 self._goma_ctl_env = {} |
18 self._cloudtail_pid = None | 18 self._cloudtail_pid = None |
ukai
2016/09/29 07:55:01
remove?
hold self.m.path['tmp_base'].join('cloudt
tikuta
2016/09/29 08:00:50
Done.
| |
19 self._goma_jobs = None | 19 self._goma_jobs = None |
20 | 20 |
21 @property | 21 @property |
22 def service_account_json_path(self): | 22 def service_account_json_path(self): |
23 if self.m.platform.is_win: | 23 if self.m.platform.is_win: |
24 return 'C:\\creds\\service_accounts\\service-account-goma-client.json' | 24 return 'C:\\creds\\service_accounts\\service-account-goma-client.json' |
25 return '/creds/service_accounts/service-account-goma-client.json' | 25 return '/creds/service_accounts/service-account-goma-client.json' |
26 | 26 |
27 @property | 27 @property |
28 def cloudtail_path(self): | 28 def cloudtail_path(self): |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
126 def build_data_dir(self): | 126 def build_data_dir(self): |
127 return self.m.properties.get('build_data_dir') | 127 return self.m.properties.get('build_data_dir') |
128 | 128 |
129 def _start_cloudtail(self): | 129 def _start_cloudtail(self): |
130 """Start cloudtail to upload compiler_proxy.INFO | 130 """Start cloudtail to upload compiler_proxy.INFO |
131 | 131 |
132 Raises: | 132 Raises: |
133 InfraFailure if it fails to start cloudtail | 133 InfraFailure if it fails to start cloudtail |
134 """ | 134 """ |
135 | 135 |
136 assert self._cloudtail_pid is None | |
137 | |
138 step_result = self.m.python( | 136 step_result = self.m.python( |
139 name='start cloudtail', | 137 name='start cloudtail', |
140 script=self.resource('cloudtail_utils.py'), | 138 script=self.resource('cloudtail_utils.py'), |
141 args=['start', | 139 args=['start', |
142 '--cloudtail-path', self.cloudtail_path], | 140 '--cloudtail-path', self.cloudtail_path, |
141 '--pid-file', self.m.raw_io.output( | |
142 leak_to=self.m.path['tmp_base'].join('pid.txt'))], | |
ukai
2016/09/29 07:55:01
cloudtail.pid?
tikuta
2016/09/29 08:00:50
Done.
| |
143 env=self._goma_ctl_env, | 143 env=self._goma_ctl_env, |
144 stdout=self.m.raw_io.output(), | |
145 step_test_data=( | 144 step_test_data=( |
146 lambda: self.m.raw_io.test_api.stream_output('12345')), | 145 lambda: self.m.raw_io.test_api.output('12345')), |
147 infra_step=True) | 146 infra_step=True) |
148 | 147 |
149 self._cloudtail_pid = step_result.stdout | |
150 | |
151 def _stop_cloudtail(self): | 148 def _stop_cloudtail(self): |
152 """Stop cloudtail started by _start_cloudtail | 149 """Stop cloudtail started by _start_cloudtail |
153 | 150 |
154 Raises: | 151 Raises: |
155 InfraFailure if it fails to stop cloudtail | 152 InfraFailure if it fails to stop cloudtail |
156 """ | 153 """ |
157 | 154 |
158 assert self._cloudtail_pid is not None | |
159 | |
160 self.m.python( | 155 self.m.python( |
161 name='stop cloudtail', | 156 name='stop cloudtail', |
162 script=self.resource('cloudtail_utils.py'), | 157 script=self.resource('cloudtail_utils.py'), |
163 args=['stop', | 158 args=['stop', |
164 '--killed-pid', self._cloudtail_pid], | 159 '--killed-pid-file', self.m.path['tmp_base'].join('pid.txt')], |
ukai
2016/09/29 07:55:01
cloudtail.pid?
tikuta
2016/09/29 08:00:50
Done.
| |
165 infra_step=True) | 160 infra_step=True) |
166 | 161 |
167 self._cloudtail_pid = None | 162 self._cloudtail_pid = None |
168 | 163 |
169 def start(self, env=None, **kwargs): | 164 def start(self, env=None, **kwargs): |
170 """Start goma compiler_proxy. | 165 """Start goma compiler_proxy. |
171 | 166 |
172 A user MUST execute ensure_goma beforehand. | 167 A user MUST execute ensure_goma beforehand. |
173 It is user's responsibility to handle failure of starting compiler_proxy. | 168 It is user's responsibility to handle failure of starting compiler_proxy. |
174 """ | 169 """ |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
325 ninja_log_exit_status = e.retcode | 320 ninja_log_exit_status = e.retcode |
326 raise e | 321 raise e |
327 except self.m.step.InfraFailure as e: # pragma: no cover | 322 except self.m.step.InfraFailure as e: # pragma: no cover |
328 ninja_log_exit_status = -1 | 323 ninja_log_exit_status = -1 |
329 raise e | 324 raise e |
330 finally: | 325 finally: |
331 self.stop(ninja_log_outdir=ninja_log_outdir, | 326 self.stop(ninja_log_outdir=ninja_log_outdir, |
332 ninja_log_compiler=ninja_log_compiler, | 327 ninja_log_compiler=ninja_log_compiler, |
333 ninja_log_command=ninja_log_command, | 328 ninja_log_command=ninja_log_command, |
334 ninja_log_exit_status=ninja_log_exit_status) | 329 ninja_log_exit_status=ninja_log_exit_status) |
OLD | NEW |