17c8ea99fecf140093f2fe3dcd0ab6b5bf65b1bbembligh#!/usr/bin/python 20b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh 30b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh__author__ = 'raphtee@google.com (Travis Miller)' 40b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh 50b4fe6e56533b97bc4e0970c4dc973fd45bbee9amblighimport unittest 60b4fe6e56533b97bc4e0970c4dc973fd45bbee9amblighimport common 70b4fe6e56533b97bc4e0970c4dc973fd45bbee9amblighfrom autotest_lib.server import utils 80b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh 90b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh 100b4fe6e56533b97bc4e0970c4dc973fd45bbee9amblighclass UtilsTest(unittest.TestCase): 110b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh 120afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski def setUp(self): 130afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski # define out machines here 140afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski self.machines = ['mach1', 'mach2', 'mach3', 'mach4', 'mach5', 150afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski 'mach6', 'mach7'] 160b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh 170afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski self.ntuples = [['mach1', 'mach2'], ['mach3', 'mach4'], 180afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski ['mach5', 'mach6']] 190afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski self.failures = [] 200afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski self.failures.append(('mach7', "machine can not be tupled")) 210afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski 220afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski 230afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski def test_form_cell_mappings(self): 240afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski (ntuples, failures) = utils.form_ntuples_from_machines(self.machines) 250afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski self.assertEquals(self.ntuples, ntuples) 260afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski self.assertEquals(self.failures, failures) 270b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh 280b4fe6e56533b97bc4e0970c4dc973fd45bbee9ambligh 29861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li # parse_machine() test cases 30861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li def test_parse_machine_good(self): 31861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li '''test that parse_machine() is outputting the correct data''' 32861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li gooddata = (('host', ('host', 'root', '', 22)), 33861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li ('host:21', ('host', 'root', '', 21)), 34861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li ('user@host', ('host', 'user', '', 22)), 35861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li ('user:pass@host', ('host', 'user', 'pass', 22)), 36861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li ('user:pass@host:1234', ('host', 'user', 'pass', 1234)), 3721eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert 3821eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('user:pass@10.3.2.1', 3921eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('10.3.2.1', 'user', 'pass', 22)), 4021eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('user:pass@10.3.2.1:1234', 4121eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('10.3.2.1', 'user', 'pass', 1234)), 4221eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert 4321eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('::1', ('::1', 'root', '', 22)), 4421eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('user:pass@abdc::ef', ('abdc::ef', 'user', 'pass', 22)), 4521eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('abdc::ef:99', ('abdc::ef:99', 'root', '', 22)), 4621eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('user:pass@[abdc::ef:99]', 4721eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('abdc::ef:99', 'user', 'pass', 22)), 4821eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('user:pass@[abdc::ef]:1234', 4921eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('abdc::ef', 'user', 'pass', 1234)), 50861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li ) 51861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li for machine, result in gooddata: 52861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li self.assertEquals(utils.parse_machine(machine), result) 53861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li 54861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li 55861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li def test_parse_machine_override(self): 56861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li '''Test that parse_machine() defaults can be overridden''' 57861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li self.assertEquals(utils.parse_machine('host', 'bob', 'foo', 1234), 58861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li ('host', 'bob', 'foo', 1234)) 59861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li 60861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li 61861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li def test_parse_machine_bad(self): 62861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li '''test that bad data passed to parse_machine() will raise an exception''' 6321eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert baddata = ((':22', IndexError), # neglect to pass a hostname #1 6421eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('user@', IndexError), # neglect to pass a hostname #2 6521eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('user@:22', IndexError), # neglect to pass a hostname #3 66861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li (':pass@host', ValueError), # neglect to pass a username 6721eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('host:', ValueError), # empty port after hostname 6821eb6492d55d65aee16a381f194cd24baaa1765eMarc Herbert ('[1::2]:', ValueError), # empty port after IPv6 69861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li ) 70861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li for machine, exception in baddata: 71861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li self.assertRaises(exception, utils.parse_machine, machine) 72861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li 73861b2d54aec24228cdb3895dbc40062cb40cb2adEric Li 740b4fe6e56533b97bc4e0970c4dc973fd45bbee9amblighif __name__ == "__main__": 750afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski unittest.main() 76