xref: /aosp_15_r20/tools/acloud/public/report_test.py (revision 800a58d989c669b8eb8a71d8df53b1ba3d411444)
1*800a58d9SAndroid Build Coastguard Worker#!/usr/bin/env python
2*800a58d9SAndroid Build Coastguard Worker#
3*800a58d9SAndroid Build Coastguard Worker# Copyright 2016 - The Android Open Source Project
4*800a58d9SAndroid Build Coastguard Worker#
5*800a58d9SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
6*800a58d9SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*800a58d9SAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*800a58d9SAndroid Build Coastguard Worker#
9*800a58d9SAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
10*800a58d9SAndroid Build Coastguard Worker#
11*800a58d9SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*800a58d9SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
13*800a58d9SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*800a58d9SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*800a58d9SAndroid Build Coastguard Worker# limitations under the License.
16*800a58d9SAndroid Build Coastguard Worker
17*800a58d9SAndroid Build Coastguard Worker"""Tests for acloud.public.report."""
18*800a58d9SAndroid Build Coastguard Worker
19*800a58d9SAndroid Build Coastguard Workerimport unittest
20*800a58d9SAndroid Build Coastguard Workerfrom acloud.public import report
21*800a58d9SAndroid Build Coastguard Worker
22*800a58d9SAndroid Build Coastguard Worker
23*800a58d9SAndroid Build Coastguard Workerclass ReportTest(unittest.TestCase):
24*800a58d9SAndroid Build Coastguard Worker    """Test Report class."""
25*800a58d9SAndroid Build Coastguard Worker
26*800a58d9SAndroid Build Coastguard Worker    def testAddData(self):
27*800a58d9SAndroid Build Coastguard Worker        """test AddData."""
28*800a58d9SAndroid Build Coastguard Worker        test_report = report.Report("create")
29*800a58d9SAndroid Build Coastguard Worker        test_report.AddData("devices", {"instance_name": "instance_1"})
30*800a58d9SAndroid Build Coastguard Worker        test_report.AddData("devices", {"instance_name": "instance_2"})
31*800a58d9SAndroid Build Coastguard Worker        expected = {
32*800a58d9SAndroid Build Coastguard Worker            "devices": [{
33*800a58d9SAndroid Build Coastguard Worker                "instance_name": "instance_1"
34*800a58d9SAndroid Build Coastguard Worker            }, {
35*800a58d9SAndroid Build Coastguard Worker                "instance_name": "instance_2"
36*800a58d9SAndroid Build Coastguard Worker            }]
37*800a58d9SAndroid Build Coastguard Worker        }
38*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.data, expected)
39*800a58d9SAndroid Build Coastguard Worker
40*800a58d9SAndroid Build Coastguard Worker    def testAddError(self):
41*800a58d9SAndroid Build Coastguard Worker        """test AddError."""
42*800a58d9SAndroid Build Coastguard Worker        test_report = report.Report("create")
43*800a58d9SAndroid Build Coastguard Worker        test_report.errors.append("some errors")
44*800a58d9SAndroid Build Coastguard Worker        test_report.errors.append("some errors")
45*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.errors, ["some errors", "some errors"])
46*800a58d9SAndroid Build Coastguard Worker
47*800a58d9SAndroid Build Coastguard Worker    def testSetStatus(self):
48*800a58d9SAndroid Build Coastguard Worker        """test SetStatus."""
49*800a58d9SAndroid Build Coastguard Worker        test_report = report.Report("create")
50*800a58d9SAndroid Build Coastguard Worker        test_report.SetStatus(report.Status.SUCCESS)
51*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.status, "SUCCESS")
52*800a58d9SAndroid Build Coastguard Worker
53*800a58d9SAndroid Build Coastguard Worker        test_report.SetStatus(report.Status.FAIL)
54*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.status, "FAIL")
55*800a58d9SAndroid Build Coastguard Worker
56*800a58d9SAndroid Build Coastguard Worker        test_report.SetStatus(report.Status.BOOT_FAIL)
57*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.status, "BOOT_FAIL")
58*800a58d9SAndroid Build Coastguard Worker
59*800a58d9SAndroid Build Coastguard Worker        # Test that more severe status won't get overriden.
60*800a58d9SAndroid Build Coastguard Worker        test_report.SetStatus(report.Status.FAIL)
61*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.status, "BOOT_FAIL")
62*800a58d9SAndroid Build Coastguard Worker
63*800a58d9SAndroid Build Coastguard Worker    def testSetErrorType(self):
64*800a58d9SAndroid Build Coastguard Worker        """test SetErrorType."""
65*800a58d9SAndroid Build Coastguard Worker        error_type = "GCE_QUOTA_ERROR"
66*800a58d9SAndroid Build Coastguard Worker        test_report = report.Report("create")
67*800a58d9SAndroid Build Coastguard Worker        test_report.SetErrorType(error_type)
68*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.error_type, error_type)
69*800a58d9SAndroid Build Coastguard Worker
70*800a58d9SAndroid Build Coastguard Worker    def testUpdateFailure(self):
71*800a58d9SAndroid Build Coastguard Worker        """test UpdateFailure."""
72*800a58d9SAndroid Build Coastguard Worker        error_type = "GCE_QUOTA_ERROR"
73*800a58d9SAndroid Build Coastguard Worker        error_msg = "Reach quota limit."
74*800a58d9SAndroid Build Coastguard Worker        test_report = report.Report("create")
75*800a58d9SAndroid Build Coastguard Worker        test_report.UpdateFailure(error_msg, error_type)
76*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.status, "FAIL")
77*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.errors, [error_msg])
78*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.error_type, error_type)
79*800a58d9SAndroid Build Coastguard Worker
80*800a58d9SAndroid Build Coastguard Worker    def testAddDevice(self):
81*800a58d9SAndroid Build Coastguard Worker        """test AddDevice."""
82*800a58d9SAndroid Build Coastguard Worker        test_report = report.Report("create")
83*800a58d9SAndroid Build Coastguard Worker        test_report.AddDevice("instance_1", "127.0.0.1", 6520, 6444, 8443,
84*800a58d9SAndroid Build Coastguard Worker                              logs=[report.LogFile("/log/path", "KERNEL_LOG")])
85*800a58d9SAndroid Build Coastguard Worker        expected = {
86*800a58d9SAndroid Build Coastguard Worker            "devices": [{
87*800a58d9SAndroid Build Coastguard Worker                "instance_name": "instance_1",
88*800a58d9SAndroid Build Coastguard Worker                "ip": "127.0.0.1:6520",
89*800a58d9SAndroid Build Coastguard Worker                "adb_port": 6520,
90*800a58d9SAndroid Build Coastguard Worker                "vnc_port": 6444,
91*800a58d9SAndroid Build Coastguard Worker                "webrtc_port": 8443,
92*800a58d9SAndroid Build Coastguard Worker                "logs": [{
93*800a58d9SAndroid Build Coastguard Worker                    "path": "/log/path",
94*800a58d9SAndroid Build Coastguard Worker                    "type": "KERNEL_LOG"
95*800a58d9SAndroid Build Coastguard Worker                }]
96*800a58d9SAndroid Build Coastguard Worker            }]
97*800a58d9SAndroid Build Coastguard Worker        }
98*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.data, expected)
99*800a58d9SAndroid Build Coastguard Worker
100*800a58d9SAndroid Build Coastguard Worker        # Write report with "device_serial"
101*800a58d9SAndroid Build Coastguard Worker        test_report = report.Report("create")
102*800a58d9SAndroid Build Coastguard Worker        device_serial = "emulator-test"
103*800a58d9SAndroid Build Coastguard Worker        update_data = {"screen_command": "screen console"}
104*800a58d9SAndroid Build Coastguard Worker        test_report.AddDevice(
105*800a58d9SAndroid Build Coastguard Worker            "instance_1", "127.0.0.1", 6520, 6444, device_serial=device_serial,
106*800a58d9SAndroid Build Coastguard Worker            update_data=update_data)
107*800a58d9SAndroid Build Coastguard Worker        expected = {
108*800a58d9SAndroid Build Coastguard Worker            "devices": [{
109*800a58d9SAndroid Build Coastguard Worker                "instance_name": "instance_1",
110*800a58d9SAndroid Build Coastguard Worker                "ip": "127.0.0.1:6520",
111*800a58d9SAndroid Build Coastguard Worker                "adb_port": 6520,
112*800a58d9SAndroid Build Coastguard Worker                "vnc_port": 6444,
113*800a58d9SAndroid Build Coastguard Worker                "device_serial": device_serial,
114*800a58d9SAndroid Build Coastguard Worker                "screen_command": "screen console"
115*800a58d9SAndroid Build Coastguard Worker            }]
116*800a58d9SAndroid Build Coastguard Worker        }
117*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.data, expected)
118*800a58d9SAndroid Build Coastguard Worker
119*800a58d9SAndroid Build Coastguard Worker    def testAddDeviceBootFailure(self):
120*800a58d9SAndroid Build Coastguard Worker        """test AddDeviceBootFailure."""
121*800a58d9SAndroid Build Coastguard Worker        test_report = report.Report("create")
122*800a58d9SAndroid Build Coastguard Worker        device_serial = "emulator-test"
123*800a58d9SAndroid Build Coastguard Worker        test_report.AddDeviceBootFailure(
124*800a58d9SAndroid Build Coastguard Worker            "instance_1", "127.0.0.1", 6520, 6444, "some errors",
125*800a58d9SAndroid Build Coastguard Worker            device_serial, logs=[report.LogFile("/log/path", "TEXT", "txt")])
126*800a58d9SAndroid Build Coastguard Worker        expected = {
127*800a58d9SAndroid Build Coastguard Worker            "devices_failing_boot": [{
128*800a58d9SAndroid Build Coastguard Worker                "instance_name": "instance_1",
129*800a58d9SAndroid Build Coastguard Worker                "ip": "127.0.0.1:6520",
130*800a58d9SAndroid Build Coastguard Worker                "adb_port": 6520,
131*800a58d9SAndroid Build Coastguard Worker                "vnc_port": 6444,
132*800a58d9SAndroid Build Coastguard Worker                "device_serial": device_serial,
133*800a58d9SAndroid Build Coastguard Worker                "logs": [{
134*800a58d9SAndroid Build Coastguard Worker                    "path": "/log/path",
135*800a58d9SAndroid Build Coastguard Worker                    "type": "TEXT",
136*800a58d9SAndroid Build Coastguard Worker                    "name": "txt"
137*800a58d9SAndroid Build Coastguard Worker                }]
138*800a58d9SAndroid Build Coastguard Worker            }]
139*800a58d9SAndroid Build Coastguard Worker        }
140*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.data, expected)
141*800a58d9SAndroid Build Coastguard Worker        self.assertEqual(test_report.errors, ["some errors"])
142*800a58d9SAndroid Build Coastguard Worker
143*800a58d9SAndroid Build Coastguard Worker
144*800a58d9SAndroid Build Coastguard Workerif __name__ == "__main__":
145*800a58d9SAndroid Build Coastguard Worker    unittest.main()
146