Chromium Code Reviews| Index: devil/devil/utils/find_usb_devices_test.py |
| diff --git a/devil/devil/utils/find_usb_devices_test.py b/devil/devil/utils/find_usb_devices_test.py |
| index 2e94dcd2aa6e115f1f8ebc9378c10e80ef009009..fcad6bbc55a6a95e7159182d4c3820cb6ab26ea0 100755 |
| --- a/devil/devil/utils/find_usb_devices_test.py |
| +++ b/devil/devil/utils/find_usb_devices_test.py |
| @@ -33,6 +33,9 @@ import unittest |
| from devil import devil_env |
| from devil.utils import find_usb_devices |
| +from devil.utils import battor_device_mapping |
|
jbudorick
2016/03/31 20:57:31
nit: alphabetize
alexandermont
2016/03/31 22:11:18
Done
|
| +from devil.utils import usb_hubs |
| +from devil.utils import lsusb |
| with devil_env.SysPath(devil_env.PYMOCK_PATH): |
| import mock # pylint: disable=import-error |
| @@ -46,15 +49,15 @@ DEVLIST = [(1, 11, 'foo'), |
| (1, 13, 'baz'), |
| (2, 11, 'quux'), |
| (2, 20, 'My Test HUB'), |
| - (2, 21, 'Future Technology Devices International battor_p7_h1_t0'), |
| - (2, 22, 'Future Technology Devices International battor_p5_h1_t1'), |
| + (2, 21, 'ID 0403:6001 battor_p7_h1_t0'), |
| + (2, 22, 'ID 0403:6001 battor_p5_h1_t1'), |
| (2, 23, 'My Test Internal HUB'), |
| - (2, 24, 'Future Technology Devices International battor_p3_h1_t2'), |
| - (2, 25, 'Future Technology Devices International battor_p1_h1_t3'), |
| + (2, 24, 'ID 0403:6001 battor_p3_h1_t2'), |
| + (2, 25, 'ID 0403:6001 battor_p1_h1_t3'), |
| (2, 26, 'Not a Battery Monitor'), |
| (2, 100, 'My Test HUB'), |
| (2, 101, 'My Test Internal HUB'), |
| - (2, 102, 'Future Technology Devices International battor_p1_h1_t4')] |
| + (2, 102, 'ID 0403:6001 battor_p1_h1_t4')] |
| LSUSB_OUTPUT = [ |
| {'bus': b, 'device': d, 'desc': t, 'id': (1000*b)+d} |
| @@ -92,6 +95,23 @@ T: Bus=02 Lev=00 Prnt=100 Port=03 Cnt=00 Dev#=101 Spd=000 MxCh=00 |
| T: Bus=02 Lev=00 Prnt=101 Port=03 Cnt=00 Dev#=102 Spd=000 MxCh=00 |
| ''' |
| +RAW_LSUSB_OUTPUT = ''' |
| +Bus 001 Device 011: FAST foo |
| +Bus 001 Device 012: FAST bar |
| +Bus 001 Device 013: baz |
| +Bus 002 Device 011: quux |
| +Bus 002 Device 020: My Test HUB |
| +Bus 002 Device 021: ID 0403:6001 battor_p7_h1_t0 |
| +Bus 002 Device 022: ID 0403:6001 battor_p5_h1_t1 |
| +Bus 002 Device 023: My Test Internal HUB |
| +Bus 002 Device 024: ID 0403:6001 battor_p3_h1_t2 |
| +Bus 002 Device 025: ID 0403:6001 battor_p1_h1_t3 |
| +Bus 002 Device 026: Not a Battery Monitor |
| +Bus 002 Device 100: My Test HUB |
| +Bus 002 Device 101: My Test Internal HUB |
| +Bus 002 Device 102: ID 0403:6001 battor_p1_h1_t4 |
| +''' |
| + |
| LIST_TTY_OUTPUT = ''' |
| ttyUSB0 |
| Something-else-0 |
| @@ -172,11 +192,11 @@ def isTestHub(node): |
| return False |
| return 'Test Internal HUB' in node.PortToDevice(4).desc |
| -TEST_HUB = find_usb_devices.HubType(isTestHub, |
| - {1:7, |
| - 2:6, |
| - 3:5, |
| - 4:{1:4, 2:3, 3:2, 4:1}}) |
| +TEST_HUB = usb_hubs.HubType(isTestHub, |
| + {1:7, |
| + 2:6, |
| + 3:5, |
| + 4:{1:4, 2:3, 3:2, 4:1}}) |
| class USBScriptTest(unittest.TestCase): |
| def setUp(self): |
| @@ -188,15 +208,17 @@ class USBScriptTest(unittest.TestCase): |
| return_value=USB_DEVICES_OUTPUT) |
| find_usb_devices._GetCommList = mock.Mock( |
| return_value=LIST_TTY_OUTPUT) |
| + lsusb.raw_lsusb = mock.Mock( |
| + return_value=RAW_LSUSB_OUTPUT) |
| def testIsBattor(self): |
| bd = find_usb_devices.GetBusNumberToDeviceTreeMap() |
| - self.assertTrue(find_usb_devices.IsBattor('ttyUSB3', bd)) |
| - self.assertFalse(find_usb_devices.IsBattor('ttyUSB5', bd)) |
| + self.assertTrue(battor_device_mapping.IsBattor('ttyUSB3', bd)) |
| + self.assertFalse(battor_device_mapping.IsBattor('ttyUSB5', bd)) |
| def testGetBattors(self): |
| bd = find_usb_devices.GetBusNumberToDeviceTreeMap() |
| - self.assertEquals(find_usb_devices.GetBattorList(bd), |
| + self.assertEquals(battor_device_mapping.GetBattorList(bd), |
| ['ttyUSB0', 'ttyUSB1', 'ttyUSB2', |
| 'ttyUSB3', 'ttyUSB4']) |
| @@ -229,18 +251,28 @@ class USBScriptTest(unittest.TestCase): |
| 1:'Battor3'}) |
| self.assertEquals(result[1], {}) |
| - def testDeviceDescriptions(self): |
| + def testFastDeviceDescriptions(self): |
| bd = find_usb_devices.GetBusNumberToDeviceTreeMap() |
| dev_foo = bd[1].FindDeviceNumber(11) |
| dev_bar = bd[1].FindDeviceNumber(12) |
| dev_battor_p7_h1_t0 = bd[2].FindDeviceNumber(21) |
| + self.assertEquals(dev_foo.desc, 'FAST foo') |
| + self.assertEquals(dev_bar.desc, 'FAST bar') |
| + self.assertEquals(dev_battor_p7_h1_t0.desc, |
| + 'ID 0403:6001 battor_p7_h1_t0') |
| + |
| + def testDeviceDescriptions(self): |
| + bd = find_usb_devices.GetBusNumberToDeviceTreeMap(fast=False) |
| + dev_foo = bd[1].FindDeviceNumber(11) |
| + dev_bar = bd[1].FindDeviceNumber(12) |
| + dev_battor_p7_h1_t0 = bd[2].FindDeviceNumber(21) |
| self.assertEquals(dev_foo.desc, 'foo') |
| self.assertEquals(dev_bar.desc, 'bar') |
| self.assertEquals(dev_battor_p7_h1_t0.desc, |
| - 'Future Technology Devices International battor_p7_h1_t0') |
| + 'ID 0403:6001 battor_p7_h1_t0') |
| def testDeviceInformation(self): |
| - bd = find_usb_devices.GetBusNumberToDeviceTreeMap() |
| + bd = find_usb_devices.GetBusNumberToDeviceTreeMap(fast=False) |
| dev_foo = bd[1].FindDeviceNumber(11) |
| dev_bar = bd[1].FindDeviceNumber(12) |
| dev_battor_p7_h1_t0 = bd[2].FindDeviceNumber(21) |
| @@ -249,7 +281,7 @@ class USBScriptTest(unittest.TestCase): |
| self.assertEquals(dev_battor_p7_h1_t0.info['id'], 2021) |
| def testSerialNumber(self): |
| - bd = find_usb_devices.GetBusNumberToDeviceTreeMap() |
| + bd = find_usb_devices.GetBusNumberToDeviceTreeMap(fast=False) |
| dev_foo = bd[1].FindDeviceNumber(11) |
| dev_bar = bd[1].FindDeviceNumber(12) |
| dev_battor_p7_h1_t0 = bd[2].FindDeviceNumber(21) |
| @@ -257,6 +289,70 @@ class USBScriptTest(unittest.TestCase): |
| self.assertEquals(dev_bar.serial, 'BarSerial') |
| self.assertEquals(dev_battor_p7_h1_t0.serial, 'Battor0') |
| + def testBattorDictMapping(self): |
| + map_dict = {'Phone1':'Battor1', 'Phone2':'Battor2', 'Phone3':'Battor3'} |
| + a1 = battor_device_mapping.GetBattorPathFromPhoneSerial( |
| + 'Phone1', serial_map=map_dict) |
| + a2 = battor_device_mapping.GetBattorPathFromPhoneSerial( |
| + 'Phone2', serial_map=map_dict) |
| + a3 = battor_device_mapping.GetBattorPathFromPhoneSerial( |
| + 'Phone3', serial_map=map_dict) |
| + self.assertEquals(a1, '/dev/ttyUSB1') |
| + self.assertEquals(a2, '/dev/ttyUSB2') |
| + self.assertEquals(a3, '/dev/ttyUSB3') |
| + |
| + def testReadSerialMapFile(self): |
| + map_dict = battor_device_mapping.ReadSerialMapFile( |
| + 'test/data/test_serial_map.json') |
| + self.assertEquals(len(map_dict.keys()), 3) |
| + self.assertEquals(map_dict['Phone1'], 'Battor1') |
| + self.assertEquals(map_dict['Phone2'], 'Battor2') |
| + self.assertEquals(map_dict['Phone3'], 'Battor3') |
| + |
| +original_PPTSM = find_usb_devices.GetAllPhysicalPortToSerialMaps |
| +original_PPTTM = find_usb_devices.GetAllPhysicalPortToTTYMaps |
| +original_GBL = battor_device_mapping.GetBattorList |
| +original_GBNDM = find_usb_devices.GetBusNumberToDeviceTreeMap |
| +original_IB = battor_device_mapping.IsBattor |
| +original_GBSM = battor_device_mapping.GetBattorSerialNumbers |
| + |
| +def setup_battor_test(serial, tty, battor, bser=None): |
| + serial_mapper = mock.Mock(return_value=serial) |
| + tty_mapper = mock.Mock(return_value=tty) |
| + battor_lister = mock.Mock(return_value=battor) |
| + devtree = mock.Mock(return_value=None) |
| + is_battor = mock.Mock(side_effect=lambda x, y: x in battor) |
| + battor_serials = mock.Mock(return_value=bser) |
| + find_usb_devices.GetAllPhysicalPortToSerialMaps = serial_mapper |
| + find_usb_devices.GetAllPhysicalPortToTTYMaps = tty_mapper |
| + battor_device_mapping.GetBattorList = battor_lister |
| + find_usb_devices.GetBusNumberToDeviceTreeMap = devtree |
| + battor_device_mapping.IsBattor = is_battor |
| + battor_device_mapping.GetBattorSerialNumbers = battor_serials |
| + |
| +class BattorMappingTest(unittest.TestCase): |
| + def tearDown(self): |
| + find_usb_devices.GetAllPhysicalPortToSerialMaps = original_PPTSM |
| + find_usb_devices.GetAllPhysicalPortToTTYMaps = original_PPTTM |
| + battor_device_mapping.GetBattorList = original_GBL |
| + find_usb_devices.GetBusNumberToDeviceTreeMap = original_GBNDM |
| + battor_device_mapping.IsBattor = original_IB |
| + battor_device_mapping.GetBattorSerialNumbers = original_GBSM |
| + |
| + def test_generate_serial_map(self): |
| + setup_battor_test([{1:'Phn1', 2:'Phn2', 3:'Phn3'}, |
| + {1:'Bat1', 2:'Bat2', 3:'Bat3'}], |
| + [{}, |
| + {1:'ttyUSB0', 2:'ttyUSB1', 3:'ttyUSB2'}], |
| + ['ttyUSB0', 'ttyUSB1', 'ttyUSB2'], |
| + ['Bat1', 'Bat2', 'Bat3']) |
| + result = battor_device_mapping.GenerateSerialMap() |
| + self.assertEqual(len(result), 3) |
| + self.assertEqual(result['Phn1'], 'Bat1') |
| + self.assertEqual(result['Phn2'], 'Bat2') |
| + self.assertEqual(result['Phn3'], 'Bat3') |
| + |
| + |
| if __name__ == "__main__": |
| logging.getLogger().setLevel(logging.DEBUG) |
| unittest.main(verbosity=2) |