def test_disk_with_only_serial(self): """test dname_byid returns rules for ID_SERIAL""" mypath = "/dev/" + self.random_string() myserial = self.random_string() info = {'DEVTYPE': 'disk', 'DEVNAME': mypath, 'ID_SERIAL': myserial} self.assertEqual([['ENV{ID_SERIAL}=="%s"' % myserial]], block_meta.make_dname_byid(mypath, info=info))
def test_disk_with_only_wwn(self): """test dname_byid returns rules for ID_WWN_WITH_EXTENSION""" mypath = "/dev/" + self.random_string() mywwn = self.random_string() info = {'DEVTYPE': 'disk', 'DEVNAME': mypath, 'ID_WWN_WITH_EXTENSION': mywwn} self.assertEqual( [['ENV{ID_WWN_WITH_EXTENSION}=="%s"' % mywwn]], block_meta.make_dname_byid(mypath, info=info))
def test_udevinfo_not_called_if_info_provided(self, m_udev): """dname_byid does not invoke udevadm_info if using info dict""" myserial = self.random_string() self.assertEqual( [['ENV{ID_SERIAL}=="%s"' % myserial]], block_meta.make_dname_byid( self.random_string(), info={'DEVTYPE': 'disk', 'ID_SERIAL': myserial})) self.assertEqual(0, m_udev.call_count)
def test_udevinfo_called_if_info_not_provided(self, m_udev): """dname_byid should call udevadm_info if no data given.""" myserial = self.random_string() mypath = "/dev/" + self.random_string() m_udev.return_value = { 'DEVTYPE': 'disk', 'ID_SERIAL': myserial, 'DEVNAME': mypath} self.assertEqual( [['ENV{ID_SERIAL}=="%s"' % myserial]], block_meta.make_dname_byid(mypath)) self.assertEqual( [mock.call(path=mypath)], m_udev.call_args_list)
def test_disk_with_short_ids(self): """test dname_byid returns rules w/ both ID_WWN and ID_SERIAL_SHORT.""" mypath = "/dev/" + self.random_string() myserial = self.random_string() mywwn = self.random_string() info = {'DEVTYPE': 'disk', 'ID_SERIAL_SHORT': myserial, 'ID_WWN': mywwn, 'DEVNAME': mypath} self.assertEqual( [[ 'ENV{ID_WWN}=="%s"' % mywwn, 'ENV{ID_SERIAL_SHORT}=="%s"' % myserial, ]], block_meta.make_dname_byid(mypath, info=info))
def test_disk_with_both_id_wwn(self): """test dname_byid returns rules with both ID_WWN_* and ID_SERIAL""" mypath = "/dev/" + self.random_string() myserial = self.random_string() mywwn = self.random_string() info = {'DEVTYPE': 'disk', 'ID_SERIAL': myserial, 'ID_WWN_WITH_EXTENSION': mywwn, 'DEVNAME': mypath} self.assertEqual( [[ 'ENV{ID_WWN_WITH_EXTENSION}=="%s"' % mywwn, 'ENV{ID_SERIAL}=="%s"' % myserial, ]], block_meta.make_dname_byid(mypath, info=info))
def test_disk_with_all_ids(self): """test dname_byid returns rules w/ all WWN and SERIAL values.""" mypath = "/dev/" + self.random_string() myserial_short = self.random_string() myserial = myserial_short + "_" + myserial_short mywwn = self.random_string() mywwn_ext = mywwn + "_" + mywwn info = {'DEVTYPE': 'disk', 'ID_SERIAL_SHORT': myserial_short, 'ID_SERIAL': myserial, 'ID_WWN': mywwn, 'ID_WWN_WITH_EXTENSION': mywwn_ext, 'DEVNAME': mypath} self.assertEqual( [[ 'ENV{ID_WWN_WITH_EXTENSION}=="%s"' % mywwn_ext, 'ENV{ID_WWN}=="%s"' % mywwn, 'ENV{ID_SERIAL}=="%s"' % myserial, 'ENV{ID_SERIAL_SHORT}=="%s"' % myserial_short, ]], block_meta.make_dname_byid(mypath, info=info))
def test_disk_with_no_id_wwn(self, m_udev): """test dname_byid raises RuntimeError on device without ID or WWN.""" mypath = "/dev/" + self.random_string() m_udev.return_value = {'DEVTYPE': 'disk'} self.assertEqual([], block_meta.make_dname_byid(mypath))
def test_non_disk(self, m_udev): """test dname_byid raises ValueError on DEVTYPE != 'disk'""" mypath = "/dev/" + self.random_string() m_udev.return_value = {'DEVTYPE': 'not_a_disk'} with self.assertRaises(ValueError): block_meta.make_dname_byid(mypath)
def test_bad_path(self, m_udev): """test dname_byid raises ValueError on invalid path.""" mypath = None with self.assertRaises(ValueError): block_meta.make_dname_byid(mypath)