Chromium Code Reviews| Index: Tools/AutoSheriff/analysis_unittest.py |
| diff --git a/Tools/AutoSheriff/analysis_unittest.py b/Tools/AutoSheriff/analysis_unittest.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..96fe33f8ebdfc24032508b2161dc52bdcf71dd8d |
| --- /dev/null |
| +++ b/Tools/AutoSheriff/analysis_unittest.py |
| @@ -0,0 +1,124 @@ |
| +# Copyright 2014 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 unittest |
| +import analysis |
| +import json |
| + |
| + |
| +class FailureAnalysisTest(unittest.TestCase): |
| + # v8 stays the same, chromium differs, nacl is reduced. |
| + MERGE_REGRESSION_RANGES_JSON = """ |
| +[ |
| + { |
| + "failing_revisions": { |
| + "v8": "22263", |
| + "chromium": "282006", |
| + "nacl": "13441" |
| + }, |
| + "passing_revisions": { |
| + "v8": "22263", |
| + "chromium": "281980", |
| + "nacl": "13441" |
| + } |
| + }, |
| + { |
| + "failing_revisions": { |
| + "v8": "22263", |
| + "chromium": "282022", |
| + "nacl": "13452" |
| + }, |
| + "passing_revisions": { |
| + "v8": "22263", |
| + "chromium": "281989", |
| + "nacl": "13441" |
| + } |
| + } |
| +] |
| +""" |
| + |
| + MERGE_REGRESSION_RANGES_JSON_NULL = """ |
| +[ |
| + { |
| + "failing_revisions": { |
| + "v8": "22263", |
| + "nacl": "13441" |
| + }, |
| + "passing_revisions": null |
| + }, |
| + { |
| + "failing_revisions": { |
| + "v8": "22263", |
| + "nacl": null |
| + }, |
| + "passing_revisions": { |
| + "v8": "22263", |
| + "nacl": "13441" |
| + } |
| + } |
| +] |
| +""" |
| + |
| + def test_merge_regression_ranges(self): |
| + alerts = json.loads(self.MERGE_REGRESSION_RANGES_JSON) |
| + passing, failing = analysis.merge_regression_ranges(alerts) |
| + expected_pass = { 'v8': '22263', 'chromium': '281989', 'nacl': '13441' } |
| + expected_fail = { 'v8': '22263', 'chromium': '282006', 'nacl': '13441' } |
| + self.assertEquals(expected_fail, failing) |
| + self.assertEquals(expected_pass, passing) |
| + |
| + alerts = json.loads(self.MERGE_REGRESSION_RANGES_JSON_NULL) |
| + passing, failing = analysis.merge_regression_ranges(alerts) |
| + expected_pass = None |
| + expected_fail = { 'v8': '22263', 'nacl': '13441' } |
| + self.assertEquals(expected_fail, failing) |
| + self.assertEquals(expected_pass, passing) |
| + |
| + |
| + def test_flatten_to_commit_list(self): |
| + passing = { 'v8': '1', 'chromium': '4'} |
|
ojan
2014/07/22 02:01:23
Inconsistent spacing here and in a few places belo
|
| + failing = { 'v8': '2', 'chromium': '4'} |
| + commit_list = analysis.flatten_to_commit_list(passing, failing) |
| + self.assertEquals(commit_list, ['v8:2']) |
| + |
| + |
| + def test_range_key_for_group(self): |
| + failing = { 'v8': '2', 'chromium': '4'} |
| + group = { |
| + 'merged_last_passing': None, |
| + 'merged_first_failing': failing, |
| + 'sort_key': 'foobar', |
| + } |
| + range_key = analysis.range_key_for_group(group) |
| + self.assertEquals(range_key, 'foo<=v8:2 <=chromium:4') |
| + |
| + MERGE_BY_RANGE_JSON = """ |
| +[ |
| + { |
| + "merged_last_passing": { "v8": "1" }, |
| + "merged_first_failing": { "v8": "2" }, |
| + "sort_key": "dromaeo.domcoreattr", |
| + "failure_keys": [ |
| + ] |
| + }, |
| + { |
| + "merged_last_passing": { "v8": "1" }, |
| + "merged_first_failing": { "v8": "2" }, |
| + "sort_key": "dromaeo.jslibmodifyprototype", |
| + "failure_keys": [ |
| + ] |
| + } |
| +] |
| +""" |
| + |
| + def test_merge_by_range(self): |
| + groups = json.loads(self.MERGE_BY_RANGE_JSON) |
| + merged = analysis.merge_by_range(groups) |
| + self.assertEquals(len(merged), 1) |
| + self.assertEquals(merged[0]['sort_key'], 'dromaeo.') |
| + self.assertEquals(analysis.merge_by_range([]), []) |
| + |
| + |
| +if __name__ == '__main__': |
| + unittest.main() |