| OLD | NEW |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 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 collections import defaultdict | 5 from collections import defaultdict |
| 6 | 6 |
| 7 from google.appengine.ext import ndb | 7 from google.appengine.ext import ndb |
| 8 | 8 |
| 9 from model.base_build_model import BaseBuildModel | 9 from model.base_build_model import BaseBuildModel |
| 10 from model.base_swarming_task import BaseSwarmingTask | 10 from model.base_swarming_task import BaseSwarmingTask |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 # If the test is 'SKIPPED', there should be failure in its dependency, | 38 # If the test is 'SKIPPED', there should be failure in its dependency, |
| 39 # consider it to be failed as well. | 39 # consider it to be failed as well. |
| 40 # TODO(chanli): Check more test statuses. | 40 # TODO(chanli): Check more test statuses. |
| 41 classified_tests['reliable_tests'].append(test_name) | 41 classified_tests['reliable_tests'].append(test_name) |
| 42 return classified_tests | 42 return classified_tests |
| 43 | 43 |
| 44 @property | 44 @property |
| 45 def reliable_tests(self): | 45 def reliable_tests(self): |
| 46 return self.classified_tests.get('reliable_tests', []) | 46 return self.classified_tests.get('reliable_tests', []) |
| 47 | 47 |
| 48 @ndb.ComputedProperty |
| 49 def step_name(self): |
| 50 return self.key.pairs()[1][1] |
| 51 |
| 48 @staticmethod | 52 @staticmethod |
| 49 def _CreateKey( | 53 def _CreateKey( |
| 50 master_name, builder_name, build_number, step_name): # pragma: no cover | 54 master_name, builder_name, build_number, step_name): # pragma: no cover |
| 51 build_id = BaseBuildModel.CreateBuildId( | 55 build_id = BaseBuildModel.CreateBuildId( |
| 52 master_name, builder_name, build_number) | 56 master_name, builder_name, build_number) |
| 53 return ndb.Key('WfBuild', build_id, 'WfSwarmingTask', step_name) | 57 return ndb.Key('WfBuild', build_id, 'WfSwarmingTask', step_name) |
| 54 | 58 |
| 55 @staticmethod | 59 @staticmethod |
| 56 def Create( | 60 def Create( |
| 57 master_name, builder_name, build_number, step_name): # pragma: no cover | 61 master_name, builder_name, build_number, step_name): # pragma: no cover |
| 58 task = WfSwarmingTask( | 62 task = WfSwarmingTask( |
| 59 key=WfSwarmingTask._CreateKey( | 63 key=WfSwarmingTask._CreateKey( |
| 60 master_name, builder_name, build_number, step_name)) | 64 master_name, builder_name, build_number, step_name)) |
| 61 task.parameters = task.parameters or {} | 65 task.parameters = task.parameters or {} |
| 62 task.tests_statuses = task.tests_statuses or {} | 66 task.tests_statuses = task.tests_statuses or {} |
| 63 return task | 67 return task |
| 64 | 68 |
| 65 @staticmethod | 69 @staticmethod |
| 66 def Get( | 70 def Get( |
| 67 master_name, builder_name, build_number, step_name): # pragma: no cover | 71 master_name, builder_name, build_number, step_name): # pragma: no cover |
| 68 return WfSwarmingTask._CreateKey( | 72 return WfSwarmingTask._CreateKey( |
| 69 master_name, builder_name, build_number, step_name).get() | 73 master_name, builder_name, build_number, step_name).get() |
| OLD | NEW |