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

Side by Side Diff: scripts/slave/recipe_modules/amp/api.py

Issue 954743003: Make step status EXCEPTION when test runner has infrastructure failure. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Moved test runner exit codes to central location. Created 5 years, 10 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 unified diff | Download patch
OLDNEW
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 slave import recipe_api 5 from slave import recipe_api
6 6
7 7
8 class AmpApi(recipe_api.RecipeApi): 8 class AmpApi(recipe_api.RecipeApi):
9 9
10 def __init__(self, *args, **kwargs): 10 def __init__(self, *args, **kwargs):
11 super(AmpApi, self).__init__(*args, **kwargs) 11 super(AmpApi, self).__init__(*args, **kwargs)
12 self._trigger_file_dir = None 12 self._trigger_file_dir = None
13 self._base_results_dir = None 13 self._base_results_dir = None
14 14
15 def setup(self):
16 """Call this once before any of the other APIs in this module."""
jbudorick 2015/02/27 15:17:26 This should be rephrased.
17 self.m.chromium_android.set_config('base_config')
18
15 @recipe_api.non_step 19 @recipe_api.non_step
16 def _get_trigger_dir(self): 20 def _get_trigger_dir(self):
17 if not self._trigger_file_dir: 21 if not self._trigger_file_dir:
18 self._trigger_file_dir = self.m.path.mkdtemp('amp_trigger') 22 self._trigger_file_dir = self.m.path.mkdtemp('amp_trigger')
19 return self._trigger_file_dir 23 return self._trigger_file_dir
20 24
21 @recipe_api.non_step 25 @recipe_api.non_step
22 def _get_trigger_file_for_suite(self, suite): 26 def _get_trigger_file_for_suite(self, suite):
23 return self._get_trigger_dir().join('%s.json' % suite) 27 return self._get_trigger_dir().join('%s.json' % suite)
24 28
(...skipping 28 matching lines...) Expand all
53 'env': { 57 'env': {
54 'device': { 58 'device': {
55 'brand': 'Foo', 59 'brand': 'Foo',
56 'name': 'Fone', 60 'name': 'Fone',
57 'os_version': '1.2.3', 61 'os_version': '1.2.3',
58 }, 62 },
59 }, 63 },
60 }) 64 })
61 step_result = self.m.python( 65 step_result = self.m.python(
62 '[trigger] %s' % suite, 66 '[trigger] %s' % suite,
63 self.m.path['checkout'].join('build', 'android', 'test_runner.py'), 67 self.m.chromium_android.c.test_runner,
64 args=args, 68 args=args,
65 step_test_data=step_test_data) 69 step_test_data=step_test_data)
66 trigger_data = step_result.json.output 70 trigger_data = step_result.json.output
67 try: 71 try:
68 device_data = trigger_data['env']['device'] 72 device_data = trigger_data['env']['device']
69 step_result.presentation.step_text = 'on %s %s %s' % ( 73 step_result.presentation.step_text = 'on %s %s %s' % (
70 device_data['brand'], 74 device_data['brand'],
71 device_data['name'], 75 device_data['name'],
72 device_data['os_version']) 76 device_data['os_version'])
73 except KeyError: 77 except KeyError:
(...skipping 30 matching lines...) Expand all
104 device_data['os_version']) 108 device_data['os_version'])
105 except KeyError: 109 except KeyError:
106 device_data = None 110 device_data = None
107 device_info_text = 'unable to find device info' 111 device_info_text = 'unable to find device info'
108 112
109 if verbose: 113 if verbose:
110 args += ['--verbose'] 114 args += ['--verbose']
111 try: 115 try:
112 step_result = self.m.python( 116 step_result = self.m.python(
113 '[collect] %s' % suite, 117 '[collect] %s' % suite,
114 self.m.path['checkout'].join('build', 'android', 'test_runner.py'), 118 self.m.chromium_android.c.test_runner,
115 args=args) 119 args=args)
116 except self.m.step.StepFailure as f: 120 except self.m.step.StepFailure as f:
117 step_result = f.result 121 step_result = f.result
118 raise 122 raise
119 finally: 123 finally:
120 step_result.presentation.step_text = device_info_text 124 step_result.presentation.step_text = device_info_text
125 if (step_result.retcode ==
126 self.m.chromium_android.c.test_runner_exit_codes['INFRA']):
127 step_result.presentation.status = self.m.step.EXCEPTION
121 if (not device_data and 128 if (not device_data and
122 step_result.presentation.status != self.m.step.FAILURE): 129 step_result.presentation.status == self.m.step.SUCCESS):
mikecase (-- gone --) 2015/02/27 18:10:58 Also will need to add this logic to the trigger st
123 step_result.presentation.status = self.m.step.WARNING 130 step_result.presentation.status = self.m.step.WARNING
124 131
125 def upload_logcat_to_gs(self, bucket, suite): 132 def upload_logcat_to_gs(self, bucket, suite):
126 """Upload the logcat file returned from the appurify results to 133 """Upload the logcat file returned from the appurify results to
127 Google Storage. 134 Google Storage.
128 """ 135 """
129 step_result = self.m.json.read( 136 step_result = self.m.json.read(
130 '[upload logcat] load %s data' % suite, 137 '[upload logcat] load %s data' % suite,
131 self._get_trigger_file_for_suite(suite), 138 self._get_trigger_file_for_suite(suite),
132 step_test_data=lambda: self.m.json.test_api.output({ 139 step_test_data=lambda: self.m.json.test_api.output({
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 amp_args += ['--device-oem', d] 251 amp_args += ['--device-oem', d]
245 252
246 for d in device_os or []: 253 for d in device_os or []:
247 amp_args += ['--remote-device-os', d] 254 amp_args += ['--remote-device-os', d]
248 255
249 if device_timeout: 256 if device_timeout:
250 amp_args += ['--remote-device-timeout', device_timeout] 257 amp_args += ['--remote-device-timeout', device_timeout]
251 258
252 return amp_args 259 return amp_args
253 260
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698