1#!/usr/bin/env python2.7
2# Copyright 2015 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import unittest
7
8from perfbot_stats import chrome_perf_stats
9
10
11class TestChromePerfStats(unittest.TestCase):
12
13  def testUpdateSuccessRatesWithResult(self):
14    success_rates = {}
15    chrome_perf_stats._UpdateSuccessRatesWithResult(
16        success_rates,
17        {'count': 0},
18        'invalid_date_str',
19        'invalid_builder')
20    self.assertDictEqual({}, success_rates)
21    chrome_perf_stats._UpdateSuccessRatesWithResult(
22        success_rates,
23        {'count': 5, 'failure_count': 3},
24        '20151010',
25        'android_nexus_10')
26    self.assertDictEqual(
27        {'20151010': {'android_nexus_10': {'count': 5, 'success_count': 2}}},
28        success_rates)
29    chrome_perf_stats._UpdateSuccessRatesWithResult(
30        success_rates,
31        {'count': 5, 'failure_count': 4},
32        '20151010',
33        'android_nexus_4')
34    self.assertDictEqual(
35        {
36            '20151010': {
37                'android_nexus_10': {'count': 5, 'success_count': 2},
38                'android_nexus_4': {'count': 5, 'success_count': 1},
39            }
40        },
41        success_rates)
42    chrome_perf_stats._UpdateSuccessRatesWithResult(
43        success_rates,
44        {'count': 5, 'failure_count': 0},
45        '20151009',
46        'win_xp')
47    self.assertDictEqual(
48        {
49            '20151010': {
50                'android_nexus_10': {'count': 5, 'success_count': 2},
51                'android_nexus_4': {'count': 5, 'success_count': 1},
52            },
53            '20151009': {
54                'win_xp': {'count': 5, 'success_count': 5},
55            },
56        },
57        success_rates)
58
59  def testSummarizeSuccessRates(self):
60    rates = chrome_perf_stats._SummarizeSuccessRates(
61        {
62            '20151010': {
63                'android_nexus_10': {'count': 5, 'success_count': 2},
64                'android_nexus_4': {'count': 5, 'success_count': 3},
65            },
66            '20151009': {
67                'win_xp': {'count': 5, 'success_count': 5},
68            },
69        })
70    self.assertListEqual([['20151010', 0.5], ['20151009', 1.0]], rates)
71
72
73if __name__ == '__main__':
74  unittest.main()
75