mbed-os/tools/python/python_tests/mbed_lstools/os_linux_generic.py

546 lines
28 KiB
Python

'''
mbed SDK
Copyright (c) 2011-2018 ARM Limited
Licensed under the Apache License, Version 2.0 (the 'License');
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an 'AS IS' BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
'''
import unittest
import sys
import os
from mock import patch, mock_open
from mbed_lstools.linux import MbedLsToolsLinuxGeneric
class LinuxPortTestCase(unittest.TestCase):
''' Basic test cases checking trivial asserts
'''
def setUp(self):
self.linux_generic = MbedLsToolsLinuxGeneric()
def tearDown(self):
pass
vfat_devices = [
b'/dev/sdb on /media/usb0 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdd on /media/usb2 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sde on /media/usb3 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdc on /media/usb1 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)'
]
def test_get_mount_point_basic(self):
with patch('mbed_lstools.linux.MbedLsToolsLinuxGeneric._run_cli_process') as _cliproc:
_cliproc.return_value = (b'\n'.join(self.vfat_devices), None, 0)
mount_dict = dict(self.linux_generic._fat_mounts())
_cliproc.assert_called_once_with('mount')
self.assertEqual('/media/usb0', mount_dict['/dev/sdb'])
self.assertEqual('/media/usb2', mount_dict['/dev/sdd'])
self.assertEqual('/media/usb3', mount_dict['/dev/sde'])
self.assertEqual('/media/usb1', mount_dict['/dev/sdc'])
vfat_devices_ext = [
b'/dev/sdb on /media/MBED_xxx type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdd on /media/MBED___x type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sde on /media/MBED-xxx type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdc on /media/MBED_x-x type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sda on /mnt/NUCLEO type vfat (rw,relatime,uid=999,fmask=0133,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,flush,errors=remount-ro,uhelper=ldm)',
b'/dev/sdf on /mnt/NUCLEO_ type vfat (rw,relatime,uid=999,fmask=0133,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,flush,errors=remount-ro,uhelper=ldm)',
b'/dev/sdg on /mnt/DAPLINK type vfat (rw,relatime,sync,uid=999,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro,uhelper=ldm)',
b'/dev/sdh on /mnt/DAPLINK_ type vfat (rw,relatime,sync,uid=999,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro,uhelper=ldm)',
b'/dev/sdi on /mnt/DAPLINK__ type vfat (rw,relatime,sync,uid=999,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro,uhelper=ldm)',
]
def test_get_mount_point_ext(self):
with patch('mbed_lstools.linux.MbedLsToolsLinuxGeneric._run_cli_process') as _cliproc:
_cliproc.return_value = (b'\n'.join(self.vfat_devices_ext), None, 0)
mount_dict = dict(self.linux_generic._fat_mounts())
_cliproc.assert_called_once_with('mount')
self.assertEqual('/media/MBED_xxx', mount_dict['/dev/sdb'])
self.assertEqual('/media/MBED___x', mount_dict['/dev/sdd'])
self.assertEqual('/media/MBED-xxx', mount_dict['/dev/sde'])
self.assertEqual('/media/MBED_x-x', mount_dict['/dev/sdc'])
self.assertEqual('/mnt/NUCLEO', mount_dict['/dev/sda'])
self.assertEqual('/mnt/NUCLEO_', mount_dict['/dev/sdf'])
self.assertEqual('/mnt/DAPLINK', mount_dict['/dev/sdg'])
self.assertEqual('/mnt/DAPLINK_', mount_dict['/dev/sdh'])
self.assertEqual('/mnt/DAPLINK__', mount_dict['/dev/sdi'])
def find_candidates_with_patch(self, mount_list, link_dict, listdir_dict, open_dict):
if not getattr(sys.modules['os'], 'readlink', None):
sys.modules['os'].readlink = None
def do_open(path, mode='r'):
path = path.replace('\\', '/')
file_object = mock_open(read_data=open_dict[path]).return_value
file_object.__iter__.return_value = open_dict[path].splitlines(True)
return file_object
with patch('mbed_lstools.linux.MbedLsToolsLinuxGeneric._run_cli_process') as _cliproc,\
patch('os.readlink') as _readlink,\
patch('os.listdir') as _listdir,\
patch('os.path.abspath') as _abspath,\
patch('mbed_os_tools.detect.linux.open', do_open) as _,\
patch('os.path.isdir') as _isdir:
_isdir.return_value = True
_cliproc.return_value = (b'\n'.join(mount_list), None, 0)
def do_readlink(link):
# Fix for testing on Windows
link = link.replace('\\', '/')
return link_dict[link]
_readlink.side_effect = do_readlink
def do_listdir(dir):
# Fix for testing on Windows
dir = dir.replace('\\', '/')
return listdir_dict[dir]
_listdir.side_effect = do_listdir
def do_abspath(dir):
_, path = os.path.splitdrive(
os.path.normpath(os.path.join(os.getcwd(), dir)))
path = path.replace('\\', '/')
return path
_abspath.side_effect = do_abspath
ret_val = self.linux_generic.find_candidates()
_cliproc.assert_called_once_with('mount')
return ret_val
listdir_dict_rpi = {
'/dev/disk/by-id': [
'usb-MBED_VFS_0240000028634e4500135006691700105f21000097969900-0:0',
'usb-MBED_VFS_0240000028884e450018700f6bf000338021000097969900-0:0',
'usb-MBED_VFS_0240000028884e45001f700f6bf000118021000097969900-0:0',
'usb-MBED_VFS_0240000028884e450036700f6bf000118021000097969900-0:0',
'usb-MBED_VFS_0240000029164e45001b0012706e000df301000097969900-0:0',
'usb-MBED_VFS_0240000029164e45002f0012706e0006f301000097969900-0:0',
'usb-MBED_VFS_9900000031864e45000a100e0000003c0000000097969901-0:0'
],
'/dev/serial/by-id': [
'usb-ARM_DAPLink_CMSIS-DAP_0240000028634e4500135006691700105f21000097969900-if01',
'usb-ARM_DAPLink_CMSIS-DAP_0240000028884e450018700f6bf000338021000097969900-if01',
'usb-ARM_DAPLink_CMSIS-DAP_0240000028884e450036700f6bf000118021000097969900-if01',
'usb-ARM_DAPLink_CMSIS-DAP_0240000029164e45001b0012706e000df301000097969900-if01',
'usb-ARM_BBC_micro:bit_CMSIS-DAP_9900000031864e45000a100e0000003c0000000097969901-if01'
],
'/sys/class/block': [
'sdb',
'sdc',
'sdd',
'sde',
'sdf',
'sdg',
'sdh',
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-1/1-1.2/1-1.2.6': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-4': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-5': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-6': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-7': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-8': [
'idVendor',
'idProduct'
]
}
open_dict_rpi = {
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-1/1-1.2/1-1.2.6/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-1/1-1.2/1-1.2.6/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-4/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-4/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-5/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-5/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-6/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-6/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-7/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-7/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-8/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-8/idProduct': '0204\n'
}
link_dict_rpi = {
'/dev/disk/by-id/usb-MBED_VFS_0240000028634e4500135006691700105f21000097969900-0:0': '../../sdb',
'/dev/disk/by-id/usb-MBED_VFS_0240000028884e450018700f6bf000338021000097969900-0:0': '../../sdc',
'/dev/disk/by-id/usb-MBED_VFS_0240000028884e45001f700f6bf000118021000097969900-0:0': '../../sdd',
'/dev/disk/by-id/usb-MBED_VFS_0240000028884e450036700f6bf000118021000097969900-0:0': '../../sde',
'/dev/disk/by-id/usb-MBED_VFS_0240000029164e45001b0012706e000df301000097969900-0:0': '../../sdf',
'/dev/disk/by-id/usb-MBED_VFS_0240000029164e45002f0012706e0006f301000097969900-0:0': '../../sdg',
'/dev/disk/by-id/usb-MBED_VFS_9900000031864e45000a100e0000003c0000000097969901-0:0': '../../sdh',
'/dev/serial/by-id/usb-ARM_DAPLink_CMSIS-DAP_0240000028634e4500135006691700105f21000097969900-if01': '../../ttyACM0',
'/dev/serial/by-id/usb-ARM_DAPLink_CMSIS-DAP_0240000028884e450018700f6bf000338021000097969900-if01': '../../ttyACM1',
'/dev/serial/by-id/usb-ARM_DAPLink_CMSIS-DAP_0240000028884e450036700f6bf000118021000097969900-if01': '../../ttyACM3',
'/dev/serial/by-id/usb-ARM_DAPLink_CMSIS-DAP_0240000029164e45001b0012706e000df301000097969900-if01': '../../ttyACM2',
'/dev/serial/by-id/usb-ARM_BBC_micro:bit_CMSIS-DAP_9900000031864e45000a100e0000003c0000000097969901-if01': '../../ttyACM4',
'/sys/class/block/sdb': '../../devices/pci0000:00/0000:00:06.0/usb1/1-1/1-1.2/1-1.2.6/1-1.2.6:1.0/host8568/target8568:0:0/8568:0:0:0/block/sdb',
'/sys/class/block/sdc': '../../devices/pci0000:00/0000:00:06.0/usb1/1-3/1-3:1.0/host4/target4:0:0/4:0:0:0/block/sdc',
'/sys/class/block/sdd': '../../devices/pci0000:00/0000:00:06.0/usb1/1-4/1-4:1.0/host5/target5:0:0/5:0:0:0/block/sdd',
'/sys/class/block/sde': '../../devices/pci0000:00/0000:00:06.0/usb1/1-5/1-5:1.0/host6/target6:0:0/6:0:0:0/block/sde',
'/sys/class/block/sdf': '../../devices/pci0000:00/0000:00:06.0/usb1/1-6/1-6:1.0/host7/target7:0:0/7:0:0:0/block/sdf',
'/sys/class/block/sdg': '../../devices/pci0000:00/0000:00:06.0/usb1/1-7/1-7:1.0/host8/target8:0:0/8:0:0:0/block/sdg',
'/sys/class/block/sdh': '../../devices/pci0000:00/0000:00:06.0/usb1/1-8/1-7:1.0/host9/target9:0:0/9:0:0:0/block/sdh'
}
mount_list_rpi = [
b'/dev/sdb on /media/usb0 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdc on /media/usb1 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdd on /media/usb2 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sde on /media/usb3 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdf on /media/usb4 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdg on /media/usb5 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdh on /media/usb6 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)'
]
def test_get_detected_rpi(self):
mbed_det = self.find_candidates_with_patch(
self.mount_list_rpi, self.link_dict_rpi, self.listdir_dict_rpi, self.open_dict_rpi)
self.assertIn({
'mount_point': '/media/usb0',
'serial_port': '/dev/ttyACM0',
'target_id_usb_id': '0240000028634e4500135006691700105f21000097969900',
'vendor_id': '0d28',
'product_id': '0204'
}, mbed_det)
self.assertIn({
'mount_point': '/media/usb1',
'serial_port': '/dev/ttyACM1',
'target_id_usb_id': '0240000028884e450018700f6bf000338021000097969900',
'vendor_id': '0d28',
'product_id': '0204'
}, mbed_det)
self.assertIn({
'mount_point': '/media/usb4',
'serial_port': '/dev/ttyACM2',
'target_id_usb_id': '0240000029164e45001b0012706e000df301000097969900',
'vendor_id': '0d28',
'product_id': '0204'
}, mbed_det)
self.assertIn({
'mount_point': '/media/usb3',
'serial_port': '/dev/ttyACM3',
'target_id_usb_id': '0240000028884e450036700f6bf000118021000097969900',
'vendor_id': '0d28',
'product_id': '0204'
}, mbed_det)
self.assertIn({
'mount_point': '/media/usb6',
'serial_port': '/dev/ttyACM4',
'target_id_usb_id': '9900000031864e45000a100e0000003c0000000097969901',
'vendor_id': '0d28',
'product_id': '0204'
}, mbed_det)
listdir_dict_1 = {
'/dev/disk/by-id': [
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part1',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part2',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part5',
'/dev/disk/by-id/ata-TSSTcorpDVD-ROM_TS-H352C',
'/dev/disk/by-id/usb-MBED_FDi_sk_A000000001-0:0',
'/dev/disk/by-id/usb-MBED_microcontroller_0240020152986E5EAF6693E6-0:0',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part1',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part2',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part5',
],
'/dev/serial/by-id': [
'/dev/serial/by-id/usb-MBED_MBED_CMSIS-DAP_0240020152986E5EAF6693E6-if01',
'/dev/serial/by-id/usb-MBED_MBED_CMSIS-DAP_A000000001-if01',
],
'/sys/class/block': [
'sdb',
'sdc'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3': [
'idVendor',
'idProduct'
]
}
link_dict_1 = {
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM': '../../sda',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part1': '../../sda1',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part2': '../../sda2',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part5': '../../sda5',
'/dev/disk/by-id/ata-TSSTcorpDVD-ROM_TS-H352C': '../../sr0',
'/dev/disk/by-id/usb-MBED_FDi_sk_A000000001-0:0': '../../sdc',
'/dev/disk/by-id/usb-MBED_microcontroller_0240020152986E5EAF6693E6-0:0': '../../sdb',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77': '../../sda',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part1': '../../sda1',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part2': '../../sda2',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part5': '../../sda5',
'/dev/serial/by-id/usb-MBED_MBED_CMSIS-DAP_0240020152986E5EAF6693E6-if01': '../../ttyACM1',
'/dev/serial/by-id/usb-MBED_MBED_CMSIS-DAP_A000000001-if01': '../../ttyACM0',
'/sys/class/block/sdb': '../../devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.0/host3/target3:0:0/3:0:0:0/block/sdb',
'/sys/class/block/sdc': '../../devices/pci0000:00/0000:00:06.0/usb1/1-3/1-3:1.0/host4/target4:0:0/4:0:0:0/block/sdc'
}
open_dict_1 = {
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3/idProduct': '0204\n'
}
mount_list_1 = [
b'/dev/sdb on /media/usb0 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdc on /media/usb1 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)'
]
def test_get_detected_1_k64f(self):
mbed_det = self.find_candidates_with_patch(
self.mount_list_1, self.link_dict_1, self.listdir_dict_1, self.open_dict_1)
self.assertIn({
'mount_point': '/media/usb0',
'serial_port': '/dev/ttyACM1',
'target_id_usb_id': '0240020152986E5EAF6693E6',
'vendor_id': '0d28',
'product_id': '0204'
}, mbed_det)
self.assertIn({
'mount_point': '/media/usb1',
'serial_port': '/dev/ttyACM0',
'target_id_usb_id': 'A000000001',
'vendor_id': '0d28',
'product_id': '0204'
}, mbed_det)
listdir_dict_2 = {
'/dev/disk/by-id': [
'ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM',
'ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part1',
'ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part2',
'ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part5',
'ata-TSSTcorpDVD-ROM_TS-H352C',
'usb-MBED_FDi_sk_A000000001-0:0',
'usb-MBED_microcontroller_02400201489A1E6CB564E3D4-0:0',
'usb-MBED_microcontroller_0240020152986E5EAF6693E6-0:0',
'usb-MBED_microcontroller_0240020152A06E54AF5E93EC-0:0',
'usb-MBED_microcontroller_0672FF485649785087171742-0:0',
'wwn-0x5000cca30ccffb77',
'wwn-0x5000cca30ccffb77-part1',
'wwn-0x5000cca30ccffb77-part2',
'wwn-0x5000cca30ccffb77-part5'
],
'/dev/serial/by-id': [
'usb-MBED_MBED_CMSIS-DAP_02400201489A1E6CB564E3D4-if01',
'usb-MBED_MBED_CMSIS-DAP_0240020152986E5EAF6693E6-if01',
'usb-MBED_MBED_CMSIS-DAP_0240020152A06E54AF5E93EC-if01',
'usb-MBED_MBED_CMSIS-DAP_A000000001-if01',
'usb-STMicroelectronics_STM32_STLink_0672FF485649785087171742-if02'
],
'/sys/class/block': [
'sdb',
'sdc',
'sdd',
'sde',
'sdf'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-4': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-5': [
'idVendor',
'idProduct'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-6': [
'idVendor',
'idProduct'
]
}
open_dict_2 = {
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-3/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-4/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-4/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-5/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-5/idProduct': '0204\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-6/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-6/idProduct': '0204\n'
}
link_dict_2 = {
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM': '../../sda',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part1': '../../sda1',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part2': '../../sda2',
'/dev/disk/by-id/ata-HDS728080PLA380_40Y9028LEN_PFDB32S7S44XLM-part5': '../../sda5',
'/dev/disk/by-id/ata-TSSTcorpDVD-ROM_TS-H352C': '../../sr0',
'/dev/disk/by-id/usb-MBED_FDi_sk_A000000001-0:0': '../../sdc',
'/dev/disk/by-id/usb-MBED_microcontroller_02400201489A1E6CB564E3D4-0:0': '../../sde',
'/dev/disk/by-id/usb-MBED_microcontroller_0240020152986E5EAF6693E6-0:0': '../../sdb',
'/dev/disk/by-id/usb-MBED_microcontroller_0240020152A06E54AF5E93EC-0:0': '../../sdf',
'/dev/disk/by-id/usb-MBED_microcontroller_0672FF485649785087171742-0:0': '../../sdd',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77': '../../sda',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part1': '../../sda1',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part2': '../../sda2',
'/dev/disk/by-id/wwn-0x5000cca30ccffb77-part5': '../../sda5',
'/dev/serial/by-id/usb-MBED_MBED_CMSIS-DAP_02400201489A1E6CB564E3D4-if01': '../../ttyACM3',
'/dev/serial/by-id/usb-MBED_MBED_CMSIS-DAP_0240020152986E5EAF6693E6-if01': '../../ttyACM1',
'/dev/serial/by-id/usb-MBED_MBED_CMSIS-DAP_0240020152A06E54AF5E93EC-if01': '../../ttyACM4',
'/dev/serial/by-id/usb-MBED_MBED_CMSIS-DAP_A000000001-if01': '../../ttyACM0',
'/dev/serial/by-id/usb-STMicroelectronics_STM32_STLink_0672FF485649785087171742-if02': '../../ttyACM2',
'/sys/class/block/sdb': '../../devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.0/host3/target3:0:0/3:0:0:0/block/sdb',
'/sys/class/block/sdc': '../../devices/pci0000:00/0000:00:06.0/usb1/1-3/1-3:1.0/host4/target4:0:0/4:0:0:0/block/sdc',
'/sys/class/block/sdd': '../../devices/pci0000:00/0000:00:06.0/usb1/1-4/1-4:1.0/host5/target5:0:0/5:0:0:0/block/sdd',
'/sys/class/block/sde': '../../devices/pci0000:00/0000:00:06.0/usb1/1-5/1-5:1.0/host6/target6:0:0/6:0:0:0/block/sde',
'/sys/class/block/sdf': '../../devices/pci0000:00/0000:00:06.0/usb1/1-6/1-6:1.0/host7/target7:0:0/7:0:0:0/block/sdf'
}
mount_list_2 = [
b'/dev/sdb on /media/usb0 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdc on /media/usb1 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdd on /media/usb2 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sde on /media/usb3 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)',
b'/dev/sdf on /media/usb4 type vfat (rw,noexec,nodev,sync,noatime,nodiratime,gid=1000,uid=1000,dmask=000,fmask=000)'
]
def test_get_detected_2_k64f(self):
mbed_det = self.find_candidates_with_patch(
self.mount_list_2, self.link_dict_2, self.listdir_dict_2, self.open_dict_2)
self.assertIn({
'mount_point': '/media/usb1',
'serial_port': '/dev/ttyACM0',
'target_id_usb_id': 'A000000001',
'vendor_id': '0d28',
'product_id': '0204'
},
mbed_det)
self.assertIn({
'mount_point': '/media/usb2',
'serial_port': '/dev/ttyACM2',
'target_id_usb_id': '0672FF485649785087171742',
'vendor_id': '0d28',
'product_id': '0204'
},
mbed_det)
self.assertIn({
'mount_point': '/media/usb4',
'serial_port': '/dev/ttyACM4',
'target_id_usb_id': '0240020152A06E54AF5E93EC',
'vendor_id': '0d28',
'product_id': '0204'
},
mbed_det)
self.assertIn({
'mount_point': '/media/usb3',
'serial_port': '/dev/ttyACM3',
'target_id_usb_id': '02400201489A1E6CB564E3D4',
'vendor_id': '0d28',
'product_id': '0204'
},
mbed_det)
self.assertIn({
'mount_point': '/media/usb0',
'serial_port': '/dev/ttyACM1',
'target_id_usb_id': '0240020152986E5EAF6693E6',
'vendor_id': '0d28',
'product_id': '0204'
},
mbed_det)
listdir_dict_4 = {
'/dev/disk/by-id': [
'ata-VMware_Virtual_SATA_CDRW_Drive_00000000000000000001',
'ata-VMware_Virtual_SATA_CDRW_Drive_01000000000000000001',
'usb-MBED_VFS_0240000033514e45001f500585d40014e981000097969900-0:0'
],
'/dev/serial/by-id': [
'pci-ARM_DAPLink_CMSIS-DAP_0240000033514e45001f500585d40014e981000097969900-if01'
],
'/sys/class/block': [
'sdb'
],
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2': [
'idVendor',
'idProduct'
],
}
open_dict_4 = {
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2/idVendor': '0d28\n',
'/sys/class/block/../../devices/pci0000:00/0000:00:06.0/usb1/1-2/idProduct': '0204\n'
}
link_dict_4 = {
'/dev/disk/by-id/ata-VMware_Virtual_SATA_CDRW_Drive_00000000000000000001': '../../sr0',
'/dev/disk/by-id/ata-VMware_Virtual_SATA_CDRW_Drive_01000000000000000001': '../../sr1',
'/dev/disk/by-id/usb-MBED_VFS_0240000033514e45001f500585d40014e981000097969900-0:0': '../../sdb',
'/dev/serial/by-id/pci-ARM_DAPLink_CMSIS-DAP_0240000033514e45001f500585d40014e981000097969900-if01': '../../ttyACM0',
'/sys/class/block/sdb': '../../devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.0/host3/target3:0:0/3:0:0:0/block/sdb'
}
mount_list_4 = [
b'/dev/sdb on /media/przemek/DAPLINK type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)'
]
def test_get_detected_3_k64f(self):
mbed_det = self.find_candidates_with_patch(
self.mount_list_4, self.link_dict_4, self.listdir_dict_4, self.open_dict_4)
self.assertIn({
'mount_point': '/media/przemek/DAPLINK',
'serial_port': '/dev/ttyACM0',
'target_id_usb_id': '0240000033514e45001f500585d40014e981000097969900',
'vendor_id': '0d28',
'product_id': '0204'
},
mbed_det)
if __name__ == '__main__':
unittest.main()