blob: f638f8213c183442512b95303067b9b790b0b783 [file] [log] [blame]
yelinhsieh4d5917d2019-03-12 17:26:27 +08001#!/usr/bin/env python
2#
3# Copyright 2019, The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17"""Unittest for atest_execution_info."""
18
easoncylee1cace872019-09-19 09:03:29 +080019import time
yelinhsieh4d5917d2019-03-12 17:26:27 +080020import unittest
21
22from test_runners import test_runner_base
23import atest_execution_info as aei
24import result_reporter
25
26RESULT_TEST_TEMPLATE = test_runner_base.TestResult(
27 runner_name='someRunner',
28 group_name='someModule',
29 test_name='someClassName#sostName',
30 status=test_runner_base.PASSED_STATUS,
31 details=None,
32 test_count=1,
33 test_time='(10ms)',
34 runner_total=None,
yangbill23ebedf2019-05-03 18:58:16 +080035 group_total=2,
yelinhsieh7012f1e2019-08-07 12:56:02 +080036 additional_info={},
37 test_run_name='com.android.UnitTests'
yelinhsieh4d5917d2019-03-12 17:26:27 +080038)
39
40# pylint: disable=protected-access
41class AtestRunInfoUnittests(unittest.TestCase):
42 """Unit tests for atest_execution_info.py"""
43
44 def test_arrange_test_result_one_module(self):
45 """Test _arrange_test_result method with only one module."""
46 pass_1 = self._create_test_result(status=test_runner_base.PASSED_STATUS)
47 pass_2 = self._create_test_result(status=test_runner_base.PASSED_STATUS)
48 pass_3 = self._create_test_result(status=test_runner_base.PASSED_STATUS)
49 fail_1 = self._create_test_result(status=test_runner_base.FAILED_STATUS)
50 fail_2 = self._create_test_result(status=test_runner_base.FAILED_STATUS)
51 ignore_1 = self._create_test_result(status=test_runner_base.IGNORED_STATUS)
52 reporter_1 = result_reporter.ResultReporter()
53 reporter_1.all_test_results.extend([pass_1, pass_2, pass_3])
54 reporter_2 = result_reporter.ResultReporter()
55 reporter_2.all_test_results.extend([fail_1, fail_2, ignore_1])
56 info_dict = {}
57 aei.AtestExecutionInfo._arrange_test_result(info_dict, [reporter_1, reporter_2])
58 expect_summary = {aei._STATUS_IGNORED_KEY : 1,
59 aei._STATUS_FAILED_KEY : 2,
60 aei._STATUS_PASSED_KEY : 3}
61 self.assertEqual(expect_summary, info_dict[aei._TOTAL_SUMMARY_KEY])
62
63 def test_arrange_test_result_multi_module(self):
64 """Test _arrange_test_result method with multi module."""
65 group_a_pass_1 = self._create_test_result(group_name='grpup_a',
66 status=test_runner_base.PASSED_STATUS)
67 group_b_pass_1 = self._create_test_result(group_name='grpup_b',
68 status=test_runner_base.PASSED_STATUS)
69 group_c_pass_1 = self._create_test_result(group_name='grpup_c',
70 status=test_runner_base.PASSED_STATUS)
71 group_b_fail_1 = self._create_test_result(group_name='grpup_b',
72 status=test_runner_base.FAILED_STATUS)
73 group_c_fail_1 = self._create_test_result(group_name='grpup_c',
74 status=test_runner_base.FAILED_STATUS)
75 group_c_ignore_1 = self._create_test_result(group_name='grpup_c',
76 status=test_runner_base.IGNORED_STATUS)
77 reporter_1 = result_reporter.ResultReporter()
78 reporter_1.all_test_results.extend([group_a_pass_1, group_b_pass_1, group_c_pass_1])
79 reporter_2 = result_reporter.ResultReporter()
80 reporter_2.all_test_results.extend([group_b_fail_1, group_c_fail_1, group_c_ignore_1])
81
82 info_dict = {}
83 aei.AtestExecutionInfo._arrange_test_result(info_dict, [reporter_1, reporter_2])
84 expect_group_a_summary = {aei._STATUS_IGNORED_KEY : 0,
85 aei._STATUS_FAILED_KEY : 0,
86 aei._STATUS_PASSED_KEY : 1}
87 self.assertEqual(
88 expect_group_a_summary,
89 info_dict[aei._TEST_RUNNER_KEY]['someRunner']['grpup_a'][aei._SUMMARY_KEY])
90
91 expect_group_b_summary = {aei._STATUS_IGNORED_KEY : 0,
92 aei._STATUS_FAILED_KEY : 1,
93 aei._STATUS_PASSED_KEY : 1}
94 self.assertEqual(
95 expect_group_b_summary,
96 info_dict[aei._TEST_RUNNER_KEY]['someRunner']['grpup_b'][aei._SUMMARY_KEY])
97
98 expect_group_c_summary = {aei._STATUS_IGNORED_KEY : 1,
99 aei._STATUS_FAILED_KEY : 1,
100 aei._STATUS_PASSED_KEY : 1}
101 self.assertEqual(
102 expect_group_c_summary,
103 info_dict[aei._TEST_RUNNER_KEY]['someRunner']['grpup_c'][aei._SUMMARY_KEY])
104
105 expect_total_summary = {aei._STATUS_IGNORED_KEY : 1,
106 aei._STATUS_FAILED_KEY : 2,
107 aei._STATUS_PASSED_KEY : 3}
108 self.assertEqual(expect_total_summary, info_dict[aei._TOTAL_SUMMARY_KEY])
109
easoncylee1cace872019-09-19 09:03:29 +0800110 def test_preparation_time(self):
111 """Test preparation_time method."""
112 start_time = time.time()
113 aei.PREPARE_END_TIME = None
114 self.assertTrue(aei.preparation_time(start_time) is None)
115 aei.PREPARE_END_TIME = time.time()
116 self.assertFalse(aei.preparation_time(start_time) is None)
117
yelinhsieh4d5917d2019-03-12 17:26:27 +0800118 def test_arrange_test_result_multi_runner(self):
119 """Test _arrange_test_result method with multi runner."""
120 runner_a_pass_1 = self._create_test_result(runner_name='runner_a',
121 status=test_runner_base.PASSED_STATUS)
122 runner_a_pass_2 = self._create_test_result(runner_name='runner_a',
123 status=test_runner_base.PASSED_STATUS)
124 runner_a_pass_3 = self._create_test_result(runner_name='runner_a',
125 status=test_runner_base.PASSED_STATUS)
126 runner_b_fail_1 = self._create_test_result(runner_name='runner_b',
127 status=test_runner_base.FAILED_STATUS)
128 runner_b_fail_2 = self._create_test_result(runner_name='runner_b',
129 status=test_runner_base.FAILED_STATUS)
130 runner_b_ignore_1 = self._create_test_result(runner_name='runner_b',
131 status=test_runner_base.IGNORED_STATUS)
132
133 reporter_1 = result_reporter.ResultReporter()
134 reporter_1.all_test_results.extend([runner_a_pass_1, runner_a_pass_2, runner_a_pass_3])
135 reporter_2 = result_reporter.ResultReporter()
136 reporter_2.all_test_results.extend([runner_b_fail_1, runner_b_fail_2, runner_b_ignore_1])
137 info_dict = {}
138 aei.AtestExecutionInfo._arrange_test_result(info_dict, [reporter_1, reporter_2])
139 expect_group_a_summary = {aei._STATUS_IGNORED_KEY : 0,
140 aei._STATUS_FAILED_KEY : 0,
141 aei._STATUS_PASSED_KEY : 3}
142 self.assertEqual(
143 expect_group_a_summary,
144 info_dict[aei._TEST_RUNNER_KEY]['runner_a']['someModule'][aei._SUMMARY_KEY])
145
146 expect_group_b_summary = {aei._STATUS_IGNORED_KEY : 1,
147 aei._STATUS_FAILED_KEY : 2,
148 aei._STATUS_PASSED_KEY : 0}
149 self.assertEqual(
150 expect_group_b_summary,
151 info_dict[aei._TEST_RUNNER_KEY]['runner_b']['someModule'][aei._SUMMARY_KEY])
152
153 expect_total_summary = {aei._STATUS_IGNORED_KEY : 1,
154 aei._STATUS_FAILED_KEY : 2,
155 aei._STATUS_PASSED_KEY : 3}
156 self.assertEqual(expect_total_summary, info_dict[aei._TOTAL_SUMMARY_KEY])
157
158 def _create_test_result(self, **kwargs):
159 """A Helper to create TestResult"""
160 test_info = test_runner_base.TestResult(**RESULT_TEST_TEMPLATE._asdict())
161 return test_info._replace(**kwargs)
162
163if __name__ == "__main__":
164 unittest.main()