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