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