xref: /aosp_15_r20/external/autotest/server/base_utils_unittest.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li#!/usr/bin/python3
2*9c5db199SXin Li
3*9c5db199SXin Li__author__ = '[email protected] (Travis Miller)'
4*9c5db199SXin Li
5*9c5db199SXin Liimport unittest
6*9c5db199SXin Liimport common
7*9c5db199SXin Lifrom autotest_lib.server import utils
8*9c5db199SXin Li
9*9c5db199SXin Li
10*9c5db199SXin Liclass UtilsTest(unittest.TestCase):
11*9c5db199SXin Li
12*9c5db199SXin Li    def setUp(self):
13*9c5db199SXin Li        # define out machines here
14*9c5db199SXin Li        self.machines = ['mach1', 'mach2', 'mach3', 'mach4', 'mach5',
15*9c5db199SXin Li                                'mach6', 'mach7']
16*9c5db199SXin Li
17*9c5db199SXin Li        self.ntuples = [['mach1', 'mach2'], ['mach3', 'mach4'],
18*9c5db199SXin Li                        ['mach5', 'mach6']]
19*9c5db199SXin Li        self.failures = []
20*9c5db199SXin Li        self.failures.append(('mach7', "machine can not be tupled"))
21*9c5db199SXin Li
22*9c5db199SXin Li
23*9c5db199SXin Li    def test_form_cell_mappings(self):
24*9c5db199SXin Li        (ntuples, failures) = utils.form_ntuples_from_machines(self.machines)
25*9c5db199SXin Li        self.assertEquals(self.ntuples, ntuples)
26*9c5db199SXin Li        self.assertEquals(self.failures, failures)
27*9c5db199SXin Li
28*9c5db199SXin Li
29*9c5db199SXin Li    # parse_machine() test cases
30*9c5db199SXin Li    def test_parse_machine_good(self):
31*9c5db199SXin Li        '''test that parse_machine() is outputting the correct data'''
32*9c5db199SXin Li        gooddata = (
33*9c5db199SXin Li                ('host', ('host', 'root', '', None)),
34*9c5db199SXin Li                ('host:21', ('host', 'root', '', 21)),
35*9c5db199SXin Li                ('user@host', ('host', 'user', '', None)),
36*9c5db199SXin Li                ('user:pass@host', ('host', 'user', 'pass', None)),
37*9c5db199SXin Li                ('user:pass@host:1234', ('host', 'user', 'pass', 1234)),
38*9c5db199SXin Li                ('user:[email protected]', ('10.3.2.1', 'user', 'pass', None)),
39*9c5db199SXin Li                ('user:[email protected]:1234', ('10.3.2.1', 'user', 'pass',
40*9c5db199SXin Li                                             1234)),
41*9c5db199SXin Li                ('::1', ('::1', 'root', '', None)),
42*9c5db199SXin Li                ('user:pass@abdc::ef', ('abdc::ef', 'user', 'pass', None)),
43*9c5db199SXin Li                ('abdc::ef:99', ('abdc::ef:99', 'root', '', None)),
44*9c5db199SXin Li                ('user:pass@[abdc::ef:99]', ('abdc::ef:99', 'user', 'pass',
45*9c5db199SXin Li                                             None)),
46*9c5db199SXin Li                ('user:pass@[abdc::ef]:1234', ('abdc::ef', 'user', 'pass',
47*9c5db199SXin Li                                               1234)),
48*9c5db199SXin Li        )
49*9c5db199SXin Li        for machine, result in gooddata:
50*9c5db199SXin Li            self.assertEquals(utils.parse_machine(machine), result)
51*9c5db199SXin Li
52*9c5db199SXin Li
53*9c5db199SXin Li    def test_parse_machine_override(self):
54*9c5db199SXin Li        '''Test that parse_machine() defaults can be overridden'''
55*9c5db199SXin Li        self.assertEquals(utils.parse_machine('host', 'bob', 'foo', 1234),
56*9c5db199SXin Li                          ('host', 'bob', 'foo', 1234))
57*9c5db199SXin Li
58*9c5db199SXin Li
59*9c5db199SXin Li    def test_parse_machine_bad(self):
60*9c5db199SXin Li        '''test that bad data passed to parse_machine() will raise an exception'''
61*9c5db199SXin Li        baddata = ((':22', IndexError),         # neglect to pass a hostname #1
62*9c5db199SXin Li                   ('user@', IndexError),       # neglect to pass a hostname #2
63*9c5db199SXin Li                   ('user@:22', IndexError),    # neglect to pass a hostname #3
64*9c5db199SXin Li                   (':pass@host', ValueError),  # neglect to pass a username
65*9c5db199SXin Li                   ('host:', ValueError),       # empty port after hostname
66*9c5db199SXin Li                   ('[1::2]:', ValueError),     # empty port after IPv6
67*9c5db199SXin Li                  )
68*9c5db199SXin Li        for machine, exception in baddata:
69*9c5db199SXin Li            self.assertRaises(exception, utils.parse_machine, machine)
70*9c5db199SXin Li
71*9c5db199SXin Li
72*9c5db199SXin Liif __name__ == "__main__":
73*9c5db199SXin Li    unittest.main()
74