1#!/usr/bin/python2 2 3__author__ = 'raphtee@google.com (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 = (('host', ('host', 'root', '', 22)), 33 ('host:21', ('host', 'root', '', 21)), 34 ('user@host', ('host', 'user', '', 22)), 35 ('user:pass@host', ('host', 'user', 'pass', 22)), 36 ('user:pass@host:1234', ('host', 'user', 'pass', 1234)), 37 38 ('user:pass@10.3.2.1', 39 ('10.3.2.1', 'user', 'pass', 22)), 40 ('user:pass@10.3.2.1:1234', 41 ('10.3.2.1', 'user', 'pass', 1234)), 42 43 ('::1', ('::1', 'root', '', 22)), 44 ('user:pass@abdc::ef', ('abdc::ef', 'user', 'pass', 22)), 45 ('abdc::ef:99', ('abdc::ef:99', 'root', '', 22)), 46 ('user:pass@[abdc::ef:99]', 47 ('abdc::ef:99', 'user', 'pass', 22)), 48 ('user:pass@[abdc::ef]:1234', 49 ('abdc::ef', 'user', 'pass', 1234)), 50 ) 51 for machine, result in gooddata: 52 self.assertEquals(utils.parse_machine(machine), result) 53 54 55 def test_parse_machine_override(self): 56 '''Test that parse_machine() defaults can be overridden''' 57 self.assertEquals(utils.parse_machine('host', 'bob', 'foo', 1234), 58 ('host', 'bob', 'foo', 1234)) 59 60 61 def test_parse_machine_bad(self): 62 '''test that bad data passed to parse_machine() will raise an exception''' 63 baddata = ((':22', IndexError), # neglect to pass a hostname #1 64 ('user@', IndexError), # neglect to pass a hostname #2 65 ('user@:22', IndexError), # neglect to pass a hostname #3 66 (':pass@host', ValueError), # neglect to pass a username 67 ('host:', ValueError), # empty port after hostname 68 ('[1::2]:', ValueError), # empty port after IPv6 69 ) 70 for machine, exception in baddata: 71 self.assertRaises(exception, utils.parse_machine, machine) 72 73 74if __name__ == "__main__": 75 unittest.main() 76