| 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 import unittest | 5 import unittest |
| 6 | 6 |
| 7 import mock | 7 import mock |
| 8 import webapp2 | 8 import webapp2 |
| 9 import webtest | 9 import webtest |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 | 29 |
| 30 def _AddAlertsToDataStore(self): | 30 def _AddAlertsToDataStore(self): |
| 31 """Adds sample data, including triaged and non-triaged alerts.""" | 31 """Adds sample data, including triaged and non-triaged alerts.""" |
| 32 key_map = {} | 32 key_map = {} |
| 33 | 33 |
| 34 sheriff_key = sheriff.Sheriff( | 34 sheriff_key = sheriff.Sheriff( |
| 35 id='Chromium Perf Sheriff', email='sullivan@google.com').put() | 35 id='Chromium Perf Sheriff', email='sullivan@google.com').put() |
| 36 testing_common.AddTests(['ChromiumGPU'], ['linux-release'], { | 36 testing_common.AddTests(['ChromiumGPU'], ['linux-release'], { |
| 37 'scrolling-benchmark': { | 37 'scrolling-benchmark': { |
| 38 'first_paint': {}, | 38 'first_paint': {}, |
| 39 'first_paint_ref': {}, |
| 39 'mean_frame_time': {}, | 40 'mean_frame_time': {}, |
| 41 'mean_frame_time_ref': {}, |
| 40 } | 42 } |
| 41 }) | 43 }) |
| 42 first_paint = utils.TestKey( | 44 first_paint = utils.TestKey( |
| 43 'ChromiumGPU/linux-release/scrolling-benchmark/first_paint') | 45 'ChromiumGPU/linux-release/scrolling-benchmark/first_paint') |
| 44 mean_frame_time = utils.TestKey( | 46 mean_frame_time = utils.TestKey( |
| 45 'ChromiumGPU/linux-release/scrolling-benchmark/mean_frame_time') | 47 'ChromiumGPU/linux-release/scrolling-benchmark/mean_frame_time') |
| 46 | 48 |
| 47 # By default, all TestMetadata entities have an improvement_direction of | 49 # By default, all TestMetadata entities have an improvement_direction of |
| 48 # UNKNOWN, meaning that neither direction is considered an improvement. | 50 # UNKNOWN, meaning that neither direction is considered an improvement. |
| 49 # Here we set the improvement direction so that some anomalies are | 51 # Here we set the improvement direction so that some anomalies are |
| 50 # considered improvements. | 52 # considered improvements. |
| 51 for test_key in [first_paint, mean_frame_time]: | 53 for test_key in [first_paint, mean_frame_time]: |
| 52 test = test_key.get() | 54 test = test_key.get() |
| 53 test.improvement_direction = anomaly.DOWN | 55 test.improvement_direction = anomaly.DOWN |
| 54 test.put() | 56 test.put() |
| 55 | 57 |
| 56 # Add some (12) non-triaged alerts. | 58 # Add some (12) non-triaged alerts. |
| 57 for end_rev in range(10000, 10120, 10): | 59 for end_rev in range(10000, 10120, 10): |
| 58 test_key = first_paint if end_rev % 20 == 0 else mean_frame_time | 60 test_key = first_paint if end_rev % 20 == 0 else mean_frame_time |
| 61 ref_test_key = utils.TestKey('%s_ref' % utils.TestPath(test_key)) |
| 59 anomaly_entity = anomaly.Anomaly( | 62 anomaly_entity = anomaly.Anomaly( |
| 60 start_revision=end_rev - 5, end_revision=end_rev, test=test_key, | 63 start_revision=end_rev - 5, end_revision=end_rev, test=test_key, |
| 61 median_before_anomaly=100, median_after_anomaly=200, | 64 median_before_anomaly=100, median_after_anomaly=200, |
| 62 sheriff=sheriff_key) | 65 ref_test=ref_test_key, sheriff=sheriff_key) |
| 63 anomaly_entity.SetIsImprovement() | 66 anomaly_entity.SetIsImprovement() |
| 64 anomaly_key = anomaly_entity.put() | 67 anomaly_key = anomaly_entity.put() |
| 65 key_map[end_rev] = anomaly_key.urlsafe() | 68 key_map[end_rev] = anomaly_key.urlsafe() |
| 66 | 69 |
| 67 # Add some (2) already-triaged alerts. | 70 # Add some (2) already-triaged alerts. |
| 68 for end_rev in range(10120, 10140, 10): | 71 for end_rev in range(10120, 10140, 10): |
| 69 test_key = first_paint if end_rev % 20 == 0 else mean_frame_time | 72 test_key = first_paint if end_rev % 20 == 0 else mean_frame_time |
| 73 ref_test_key = utils.TestKey('%s_ref' % utils.TestPath(test_key)) |
| 70 bug_id = -1 if end_rev % 20 == 0 else 12345 | 74 bug_id = -1 if end_rev % 20 == 0 else 12345 |
| 71 anomaly_entity = anomaly.Anomaly( | 75 anomaly_entity = anomaly.Anomaly( |
| 72 start_revision=end_rev - 5, end_revision=end_rev, test=test_key, | 76 start_revision=end_rev - 5, end_revision=end_rev, test=test_key, |
| 73 median_before_anomaly=100, median_after_anomaly=200, | 77 median_before_anomaly=100, median_after_anomaly=200, |
| 74 bug_id=bug_id, sheriff=sheriff_key) | 78 ref_test=ref_test_key, bug_id=bug_id, sheriff=sheriff_key) |
| 75 anomaly_entity.SetIsImprovement() | 79 anomaly_entity.SetIsImprovement() |
| 76 anomaly_key = anomaly_entity.put() | 80 anomaly_key = anomaly_entity.put() |
| 77 key_map[end_rev] = anomaly_key.urlsafe() | 81 key_map[end_rev] = anomaly_key.urlsafe() |
| 78 if bug_id > 0: | 82 if bug_id > 0: |
| 79 bug_data.Bug(id=bug_id).put() | 83 bug_data.Bug(id=bug_id).put() |
| 80 | 84 |
| 81 # Add some (6) non-triaged improvements. | 85 # Add some (6) non-triaged improvements. |
| 82 for end_rev in range(10140, 10200, 10): | 86 for end_rev in range(10140, 10200, 10): |
| 83 test_key = mean_frame_time | 87 test_key = mean_frame_time |
| 88 ref_test_key = utils.TestKey('%s_ref' % utils.TestPath(test_key)) |
| 84 anomaly_entity = anomaly.Anomaly( | 89 anomaly_entity = anomaly.Anomaly( |
| 85 start_revision=end_rev - 5, end_revision=end_rev, test=test_key, | 90 start_revision=end_rev - 5, end_revision=end_rev, test=test_key, |
| 86 median_before_anomaly=200, median_after_anomaly=100, | 91 median_before_anomaly=200, median_after_anomaly=100, |
| 87 sheriff=sheriff_key) | 92 ref_test=ref_test_key, sheriff=sheriff_key) |
| 88 anomaly_entity.SetIsImprovement() | 93 anomaly_entity.SetIsImprovement() |
| 89 anomaly_key = anomaly_entity.put() | 94 anomaly_key = anomaly_entity.put() |
| 90 self.assertTrue(anomaly_entity.is_improvement) | 95 self.assertTrue(anomaly_entity.is_improvement) |
| 91 key_map[end_rev] = anomaly_key.urlsafe() | 96 key_map[end_rev] = anomaly_key.urlsafe() |
| 92 | 97 |
| 93 return key_map | 98 return key_map |
| 94 | 99 |
| 95 def testGet(self): | 100 def testGet(self): |
| 96 response = self.testapp.get('/alerts') | 101 response = self.testapp.get('/alerts') |
| 97 self.assertEqual('text/html', response.content_type) | 102 self.assertEqual('text/html', response.content_type) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 108 expected_end_rev = 10110 | 113 expected_end_rev = 10110 |
| 109 for alert in anomaly_list: | 114 for alert in anomaly_list: |
| 110 self.assertEqual(expected_end_rev, alert['end_revision']) | 115 self.assertEqual(expected_end_rev, alert['end_revision']) |
| 111 self.assertEqual(expected_end_rev - 5, alert['start_revision']) | 116 self.assertEqual(expected_end_rev - 5, alert['start_revision']) |
| 112 self.assertEqual(key_map[expected_end_rev], alert['key']) | 117 self.assertEqual(key_map[expected_end_rev], alert['key']) |
| 113 self.assertEqual('ChromiumGPU', alert['master']) | 118 self.assertEqual('ChromiumGPU', alert['master']) |
| 114 self.assertEqual('linux-release', alert['bot']) | 119 self.assertEqual('linux-release', alert['bot']) |
| 115 self.assertEqual('scrolling-benchmark', alert['testsuite']) | 120 self.assertEqual('scrolling-benchmark', alert['testsuite']) |
| 116 if expected_end_rev % 20 == 0: | 121 if expected_end_rev % 20 == 0: |
| 117 self.assertEqual('first_paint', alert['test']) | 122 self.assertEqual('first_paint', alert['test']) |
| 123 self.assertEqual( |
| 124 'ChromiumGPU/linux-release/scrolling-benchmark/first_paint_ref', |
| 125 alert['ref_test']) |
| 118 else: | 126 else: |
| 119 self.assertEqual('mean_frame_time', alert['test']) | 127 self.assertEqual('mean_frame_time', alert['test']) |
| 128 self.assertEqual( |
| 129 'ChromiumGPU/linux-release/scrolling-benchmark/mean_frame_time_ref', |
| 130 alert['ref_test']) |
| 120 self.assertEqual('100.0%', alert['percent_changed']) | 131 self.assertEqual('100.0%', alert['percent_changed']) |
| 121 self.assertIsNone(alert['bug_id']) | 132 self.assertIsNone(alert['bug_id']) |
| 122 expected_end_rev -= 10 | 133 expected_end_rev -= 10 |
| 123 self.assertEqual(expected_end_rev, 9990) | 134 self.assertEqual(expected_end_rev, 9990) |
| 124 | 135 |
| 125 def testPost_TriagedParameterSet_TriagedListed(self): | 136 def testPost_TriagedParameterSet_TriagedListed(self): |
| 126 self._AddAlertsToDataStore() | 137 self._AddAlertsToDataStore() |
| 127 response = self.testapp.post('/alerts', {'triaged': 'true'}) | 138 response = self.testapp.post('/alerts', {'triaged': 'true'}) |
| 128 anomaly_list = self.GetJsonValue(response, 'anomaly_list') | 139 anomaly_list = self.GetJsonValue(response, 'anomaly_list') |
| 129 # The alerts listed should contain those added above, including alerts | 140 # The alerts listed should contain those added above, including alerts |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 def testPost_ExternalUserRequestsInternalOnlySheriff_ErrorMessage(self): | 216 def testPost_ExternalUserRequestsInternalOnlySheriff_ErrorMessage(self): |
| 206 sheriff.Sheriff(id='Foo', internal_only=True).put() | 217 sheriff.Sheriff(id='Foo', internal_only=True).put() |
| 207 self.assertFalse(utils.IsInternalUser()) | 218 self.assertFalse(utils.IsInternalUser()) |
| 208 response = self.testapp.post('/alerts?sheriff=Foo') | 219 response = self.testapp.post('/alerts?sheriff=Foo') |
| 209 error = self.GetJsonValue(response, 'error') | 220 error = self.GetJsonValue(response, 'error') |
| 210 self.assertIsNotNone(error) | 221 self.assertIsNotNone(error) |
| 211 | 222 |
| 212 | 223 |
| 213 if __name__ == '__main__': | 224 if __name__ == '__main__': |
| 214 unittest.main() | 225 unittest.main() |
| OLD | NEW |