blob: f748350afee05fb03ab4f6f90732a6d7ff102b82 [file] [log] [blame]
Xixuan Wu51f41d82018-08-10 15:19:07 -07001# Copyright 2018 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5from __future__ import absolute_import
6from __future__ import division
7from __future__ import print_function
8
9from skylab_staging import test_push
10
11
12EXAMPLE_TEST_RESULTS = [
13 ('dummy_PassServer', 'GOOD'),
Alex Zamorzaev9033aca2019-04-18 14:08:19 -070014 ('dummy_PassServer', 'GOOD'),
Xixuan Wu51f41d82018-08-10 15:19:07 -070015 ('dummy_Fail.Fail', 'FAIL'),
16 ('dummy_Pass.actionable', 'GOOD'),
Alex Zamorzaev0891e4e2019-04-23 16:42:19 -070017 ('dummy_Pass.bluetooth', 'GOOD'),
Xixuan Wu51f41d82018-08-10 15:19:07 -070018 ('dummy_Pass', 'GOOD'),
19 ('dummy_Fail.Error', 'ERROR'),
Xixuan Wu51f41d82018-08-10 15:19:07 -070020 ('dummy_Fail.Warn', 'WARN'),
21 ('dummy_Fail.NAError', 'TEST_NA'),
22 ('dummy_Fail.Crash', 'GOOD'),
Alex Zamorzaev0756d172019-04-15 17:29:35 -070023 ('dummy_Fail.Fail', 'FAIL'),
24 ('dummy_Fail.Error', 'ERROR'),
25 ('dummy_Fail.Warn', 'WARN'),
26 ('dummy_Fail.NAError', 'TEST_NA'),
27 ('dummy_Fail.Crash', 'GOOD'),
Xixuan Wu51f41d82018-08-10 15:19:07 -070028 ('login_LoginSuccess', 'GOOD'),
Xixuan Wu51f41d82018-08-10 15:19:07 -070029 ('provision_AutoUpdate.double', 'GOOD'),
Alex Zamorzaev9033aca2019-04-18 14:08:19 -070030 ('tast', 'GOOD'),
31 ('tast.example.Pass', 'GOOD'),
32 ('tast.example.Perf', 'GOOD'),
33 ('tast.example.ReconnectDUT', 'GOOD'),
Xixuan Wu51f41d82018-08-10 15:19:07 -070034]
35
36
37def _construct_test_views_list():
38 return [{'test_name':r[0], 'status':r[1]} for r in EXAMPLE_TEST_RESULTS]
39
40
41def test_successful_test_push():
42 """Test a successfully passed test push."""
43 available_views = _construct_test_views_list()
44 summary = test_push._verify_and_summarize(available_views,
45 test_push._EXPECTED_TEST_RESULTS)
46 assert len(summary) == 0
47
48
49def test_failing_test():
50 """Test a test push with a failed test."""
51 available_views = _construct_test_views_list()
52 for v in available_views:
53 if v['test_name'] == 'dummy_Pass':
54 v['status'] = 'Fail'
55
56 summary = test_push._verify_and_summarize(available_views,
57 test_push._EXPECTED_TEST_RESULTS)
58 assert len(summary) != 0
59 assert 'dummy_Pass' in summary[1]
60
61
62def test_missing_test():
63 """Test a test push with a missing test."""
64 available_views = _construct_test_views_list()
65 for v in available_views:
66 if v['test_name'] == 'login_LoginSuccess':
67 available_views.remove(v)
68
69 summary = test_push._verify_and_summarize(available_views,
70 test_push._EXPECTED_TEST_RESULTS)
71 assert len(summary) != 0
72 assert 'login_LoginSuccess' in summary[1]
Alex Zamorzaevf0573b52019-04-05 12:07:59 -070073
74
75def test_incorrect_test_count():
76 """Test a test push with a failed test."""
77 available_views = _construct_test_views_list()
78 available_views.append({'test_name': 'dummy_Fail.Fail', 'status': 'FAIL'})
79
80 summary = test_push._verify_and_summarize(available_views,
81 test_push._EXPECTED_TEST_RESULTS)
82 assert len(summary) != 0
83 assert 'dummy_Fail.Fail' in summary[1]