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