| 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 datetime import datetime | 5 from datetime import datetime |
| 6 | |
| 7 import unittest | 6 import unittest |
| 8 | 7 |
| 9 from model import analysis_status | 8 from model import analysis_status |
| 10 from model import result_status | 9 from model import result_status |
| 11 from model import triage_status | 10 from model import triage_status |
| 11 from model.flake.flake_culprit import FlakeCulprit |
| 12 from model.flake.master_flake_analysis import DataPoint | 12 from model.flake.master_flake_analysis import DataPoint |
| 13 from model.flake.master_flake_analysis import MasterFlakeAnalysis | 13 from model.flake.master_flake_analysis import MasterFlakeAnalysis |
| 14 | 14 |
| 15 | 15 |
| 16 class MasterFlakeAnalysisTest(unittest.TestCase): | 16 class MasterFlakeAnalysisTest(unittest.TestCase): |
| 17 | 17 |
| 18 def testMasterFlakeAnalysisStatusIsCompleted(self): | 18 def testMasterFlakeAnalysisStatusIsCompleted(self): |
| 19 for status in (analysis_status.COMPLETED, analysis_status.ERROR): | 19 for status in (analysis_status.COMPLETED, analysis_status.ERROR): |
| 20 analysis = MasterFlakeAnalysis.Create('m', 'b', 123, 's', 't') | 20 analysis = MasterFlakeAnalysis.Create('m', 'b', 123, 's', 't') |
| 21 analysis.status = status | 21 analysis.status = status |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 | 102 |
| 103 def testReset(self): | 103 def testReset(self): |
| 104 analysis = MasterFlakeAnalysis.Create('m', 'b', 123, 's', 't') | 104 analysis = MasterFlakeAnalysis.Create('m', 'b', 123, 's', 't') |
| 105 analysis.swarming_rerun_results = [{}] | 105 analysis.swarming_rerun_results = [{}] |
| 106 analysis.status = analysis_status.RUNNING | 106 analysis.status = analysis_status.RUNNING |
| 107 analysis.correct_regression_range = True | 107 analysis.correct_regression_range = True |
| 108 analysis.correct_culprit = False | 108 analysis.correct_culprit = False |
| 109 analysis.correct_culprit = None | 109 analysis.correct_culprit = None |
| 110 analysis.data_points = [DataPoint()] | 110 analysis.data_points = [DataPoint()] |
| 111 analysis.suspected_flake_build_number = 123 | 111 analysis.suspected_flake_build_number = 123 |
| 112 analysis.culprit = FlakeCulprit.Create('r', 'a1b2c3d4', 12345, 'url') |
| 113 analysis.try_job_status = analysis_status.COMPLETED |
| 112 analysis.Reset() | 114 analysis.Reset() |
| 113 | 115 |
| 114 self.assertEqual([], analysis.swarming_rerun_results) | 116 self.assertEqual([], analysis.swarming_rerun_results) |
| 115 self.assertEqual(analysis_status.PENDING, analysis.status) | 117 self.assertEqual(analysis_status.PENDING, analysis.status) |
| 116 self.assertIsNone(analysis.correct_regression_range) | 118 self.assertIsNone(analysis.correct_regression_range) |
| 117 self.assertIsNone(analysis.correct_culprit) | 119 self.assertIsNone(analysis.correct_culprit) |
| 118 self.assertIsNone(analysis.suspected_flake_build_number) | 120 self.assertIsNone(analysis.suspected_flake_build_number) |
| 119 self.assertEqual([], analysis.data_points) | 121 self.assertEqual([], analysis.data_points) |
| 122 self.assertIsNone(analysis.culprit) |
| 123 self.assertIsNone(analysis.try_job_status) |
| 120 | 124 |
| 121 def testGetErrorMessage(self): | 125 def testGetErrorMessage(self): |
| 122 cases = [ | 126 cases = [ |
| 123 (None, None), | 127 (None, None), |
| 124 ('error', {'message': 'error', 'code': 'code'}), | 128 ('error', {'message': 'error', 'code': 'code'}), |
| 125 ] | 129 ] |
| 126 for expected_error_message, error in cases: | 130 for expected_error_message, error in cases: |
| 127 analysis = MasterFlakeAnalysis.Create('m', 'b', 123, 's', 't') | 131 analysis = MasterFlakeAnalysis.Create('m', 'b', 123, 's', 't') |
| 128 analysis.error = error | 132 analysis.error = error |
| 129 self.assertEqual(expected_error_message, analysis.error_message) | 133 self.assertEqual(expected_error_message, analysis.error_message) |
| (...skipping 17 matching lines...) Expand all Loading... |
| 147 | 151 |
| 148 key = MasterFlakeAnalysis.Create( | 152 key = MasterFlakeAnalysis.Create( |
| 149 master_name, builder_name, build_number, step_name, test_name).key | 153 master_name, builder_name, build_number, step_name, test_name).key |
| 150 | 154 |
| 151 self.assertEqual( | 155 self.assertEqual( |
| 152 (None, None), | 156 (None, None), |
| 153 MasterFlakeAnalysis.GetBuildConfigurationFromKey(None)) | 157 MasterFlakeAnalysis.GetBuildConfigurationFromKey(None)) |
| 154 self.assertEqual( | 158 self.assertEqual( |
| 155 (master_name, builder_name), | 159 (master_name, builder_name), |
| 156 MasterFlakeAnalysis.GetBuildConfigurationFromKey(key)) | 160 MasterFlakeAnalysis.GetBuildConfigurationFromKey(key)) |
| 161 |
| 162 def testGetSuspectedFlakeDataPointNoSuspectedFlakeBuildNumber(self): |
| 163 analysis = MasterFlakeAnalysis.Create('m', 'b', 123, 's', 't') |
| 164 self.assertIsNone(analysis.GetSuspectedFlakeDataPoint()) |
| 165 |
| 166 def testGetSuspectedFlakeDataPoint(self): |
| 167 expected_build_number = 123 |
| 168 data_point = DataPoint() |
| 169 data_point.build_number = expected_build_number |
| 170 |
| 171 analysis = MasterFlakeAnalysis.Create('m', 'b', 125, 's', 't') |
| 172 analysis.suspected_flake_build_number = expected_build_number |
| 173 analysis.data_points.append(data_point) |
| 174 |
| 175 suspected_data_point = analysis.GetSuspectedFlakeDataPoint() |
| 176 self.assertEqual(expected_build_number, suspected_data_point.build_number) |
| 177 |
| 178 def testGetSuspectedFlakeDataPointNoDatapoint(self): |
| 179 # This scenario should not happen. |
| 180 expected_build_number = 123 |
| 181 unexpected_build_number = 124 |
| 182 data_point = DataPoint() |
| 183 data_point.build_number = expected_build_number |
| 184 |
| 185 analysis = MasterFlakeAnalysis.Create('m', 'b', 125, 's', 't') |
| 186 analysis.suspected_flake_build_number = unexpected_build_number |
| 187 analysis.data_points.append(data_point) |
| 188 |
| 189 self.assertIsNone(analysis.GetSuspectedFlakeDataPoint()) |
| 190 |
| 191 |
| OLD | NEW |