Index: dashboard/dashboard/bisect_report_test.py |
diff --git a/dashboard/dashboard/bisect_report_test.py b/dashboard/dashboard/bisect_report_test.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4d4fd1138a4ea5346a12d67b8ed8194226bd2ab6 |
--- /dev/null |
+++ b/dashboard/dashboard/bisect_report_test.py |
@@ -0,0 +1,197 @@ |
+# Copyright 2016 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import copy |
+import unittest |
+ |
+from dashboard import bisect_report |
+from dashboard import testing_common |
+from dashboard.models import try_job |
+ |
+_SAMPLE_BISECT_RESULTS_JSON = { |
+ 'try_job_id': None, |
+ 'bug_id': None, |
+ 'status': None, |
+ 'bisect_bot': 'linux', |
+ 'buildbot_log_url': 'http://build.chromium.org/513', |
+ 'command': ('tools/perf/run_benchmark -v ' |
+ '--browser=release page_cycler'), |
+ 'metric': 'page_load_time', |
+ 'test_type': 'perf', |
+ 'issue_url': 'https://test-rietveld.appspot.com/200039', |
+ 'change': 10, |
+ 'score': 99.9, |
+ 'good_revision': '306475', |
+ 'bad_revision': '306477', |
+ 'warnings': None, |
+ 'abort_reason': None, |
+ 'culprit_data': { |
+ 'subject': 'subject', |
+ 'author': 'author', |
+ 'email': 'author@email.com', |
+ 'cl_date': '1/2/2015', |
+ 'commit_info': 'commit info', |
+ 'revisions_links': ['http://src.chromium.org/viewvc/chrome?view=' |
+ 'revision&revision=306476'], |
+ 'cl': '306476' |
+ }, |
+ 'revision_data': [ |
+ { |
+ 'depot_name': 'chromium', |
+ 'deps_revision': 306475, |
+ 'commit_pos': 306475, |
+ 'mean_value': 70, |
+ 'std_dev': 0, |
+ 'values': [70, 70, 70], |
+ 'result': 'good' |
+ }, |
+ { |
+ 'depot_name': 'chromium', |
+ 'deps_revision': 306476, |
+ 'commit_pos': 306476, |
+ 'mean_value': 80, |
+ 'std_dev': 0, |
+ 'values': [80, 80, 80], |
+ 'result': 'bad' |
+ }, |
+ { |
+ 'depot_name': 'chromium', |
+ 'deps_revision': 306477, |
+ 'commit_pos': 306477, |
+ 'mean_value': 80, |
+ 'std_dev': 0, |
+ 'values': [80, 80, 80], |
+ 'result': 'bad' |
+ } |
+ ] |
+} |
+ |
+ |
+class BisectReportTest(testing_common.TestCase): |
+ |
+ def setUp(self): |
+ super(BisectReportTest, self).setUp() |
+ |
+ def _AddTryJob(self, results_data, **kwargs): |
+ job = try_job.TryJob(results_data=results_data, **kwargs) |
+ job.put() |
+ return job |
+ |
+ def _BisectResults(self, try_job_id, bug_id, status, **kwargs): |
+ results = copy.deepcopy(_SAMPLE_BISECT_RESULTS_JSON) |
+ results['try_job_id'] = try_job_id |
+ results['bug_id'] = bug_id |
+ results['status'] = status |
+ results.update(kwargs) |
+ return results |
+ |
+ def testGetReport_CompletedWithCulprit(self): |
+ results_data = self._BisectResults(6789, 12345, 'completed') |
+ job = self._AddTryJob(results_data) |
+ |
+ log_with_culprit = r""" |
+===== BISECT JOB RESULTS ===== |
+Status: completed |
+ |
+ |
+===== SUSPECTED CL(s) ===== |
+Subject : subject |
+Author : author |
+Commit description: |
+ commit info |
+Commit : 306476 |
+Date : 1/2/2015 |
+ |
+ |
+===== TESTED REVISIONS ===== |
+Depot Revision Mean Value Std. Dev. Num Values Good? |
+chromium 306475 70 0 3 good |
+chromium 306476 80 0 3 bad |
+chromium 306477 80 0 3 bad |
+ |
+Bisect job ran on: linux |
+Bug ID: 12345 |
+ |
+Test Command: tools/perf/run_benchmark -v --browser=release page_cycler |
+Test Metric: page_load_time |
+Relative Change: 10 |
+Score: 99.9 |
+ |
+Buildbot stdio: http://build.chromium.org/513 |
+Job details: https://test-rietveld.appspot.com/200039 |
+ |
+ |
+| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq |
+| X | for more information addressing perf regression bugs. For feedback, |
+| / \ | file a bug with label Cr-Tests-AutoBisect. Thank you!""" |
+ |
+ self.assertEqual(log_with_culprit, bisect_report.GetReport(job)) |
+ |
+ def testGetReport_CompletedWithoutCulprit(self): |
+ results_data = self._BisectResults(6789, 12345, 'completed', |
+ culprit_data=None, score=0) |
+ job = self._AddTryJob(results_data) |
+ |
+ log_without_culprit = r""" |
+===== BISECT JOB RESULTS ===== |
+Status: completed |
+ |
+ |
+===== TESTED REVISIONS ===== |
+Depot Revision Mean Value Std. Dev. Num Values Good? |
+chromium 306475 70 0 3 good |
+chromium 306476 80 0 3 bad |
+chromium 306477 80 0 3 bad |
+ |
+Bisect job ran on: linux |
+Bug ID: 12345 |
+ |
+Test Command: tools/perf/run_benchmark -v --browser=release page_cycler |
+Test Metric: page_load_time |
+Relative Change: 10 |
+Score: 0 |
+ |
+Buildbot stdio: http://build.chromium.org/513 |
+Job details: https://test-rietveld.appspot.com/200039 |
+ |
+ |
+| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq |
+| X | for more information addressing perf regression bugs. For feedback, |
+| / \ | file a bug with label Cr-Tests-AutoBisect. Thank you!""" |
+ |
+ self.assertEqual(log_without_culprit, bisect_report.GetReport(job)) |
+ |
+ def testGetReport_FailedBisect(self): |
+ results_data = self._BisectResults(6789, 12345, 'failed', |
+ culprit_data=None, score=0, |
+ revision_data=None) |
+ job = self._AddTryJob(results_data) |
+ |
+ log_failed_bisect = r""" |
+===== BISECT JOB RESULTS ===== |
+Status: failed |
+ |
+ |
+ |
+Bisect job ran on: linux |
+Bug ID: 12345 |
+ |
+Test Command: tools/perf/run_benchmark -v --browser=release page_cycler |
+Test Metric: page_load_time |
+Relative Change: 10 |
+Score: 0 |
+ |
+Buildbot stdio: http://build.chromium.org/513 |
+Job details: https://test-rietveld.appspot.com/200039 |
+ |
+ |
+| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq |
+| X | for more information addressing perf regression bugs. For feedback, |
+| / \ | file a bug with label Cr-Tests-AutoBisect. Thank you!""" |
+ |
+ self.assertEqual(log_failed_bisect, bisect_report.GetReport(job)) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |