def test_get_devices_empty(self): """ If osd-devices is set to an empty string, get_devices() returns an empty list. """ self.test_config.set("osd-devices", "") self.assertEqual([], hooks.get_devices())
def test_get_devices(self, mock_config, mock_storage_list): '''Devices returned as expected''' config = {'osd-devices': '/dev/vda /dev/vdb'} mock_config.side_effect = lambda key: config[key] mock_storage_list.return_value = [] devices = ceph_hooks.get_devices() self.assertEqual(devices, ['/dev/vda', '/dev/vdb'])
def test_get_devices_non_existing_files(self): """ If osd-devices points to a file that doesn't exist, it's still returned by get_devices(). """ non_existing = os.path.join(self.tmp_dir, "no-such-file") self.test_config.set("osd-devices", non_existing) self.assertEqual([non_existing], hooks.get_devices())
def test_get_devices_extra_spaces(self): """ Multiple spaces do not result in additional devices. """ device1 = os.path.join(self.tmp_dir, "device1") device2 = os.path.join(self.tmp_dir, "device2") self.test_config.set("osd-devices", "{} {}".format(device1, device2)) self.assertEqual([device1, device2], hooks.get_devices())
def test_get_devices_extra_spaces(self): """ Multiple spaces do not result in additional devices. """ device1 = os.path.join(self.tmp_dir, "device1") device2 = os.path.join(self.tmp_dir, "device2") self.test_config.set("osd-devices", "{} {}".format(device1, device2)) self.assertEqual([device1, device2], hooks.get_devices())
def test_get_devices_multiple(self): """ Multiple devices can be specified in osd-devices by separating them with spaces. """ device1 = os.path.join(self.tmp_dir, "device1") device2 = os.path.join(self.tmp_dir, "device2") self.test_config.set("osd-devices", "{} {}".format(device1, device2)) self.assertEqual([device1, device2], hooks.get_devices())
def test_get_devices_non_absolute_path(self): """ Charm does not allow relative paths as this may result in a path on the root device/within the charm directory. """ device1 = os.path.join(self.tmp_dir, "device1") device2 = "foo" self.test_config.set("osd-devices", "{} {}".format(device1, device2)) self.assertEqual([device1], hooks.get_devices())
def test_get_devices_non_absolute_path(self): """ Charm does not allow relative paths as this may result in a path on the root device/within the charm directory. """ device1 = os.path.join(self.tmp_dir, "device1") device2 = "foo" self.test_config.set("osd-devices", "{} {}".format(device1, device2)) self.assertEqual([device1], hooks.get_devices())
def test_get_devices(self, mock_config, mock_storage_list, mock_is_block_device): '''Devices returned as expected''' config = {'osd-devices': '/dev/vda /dev/vdb'} mock_config.side_effect = lambda key: config[key] mock_storage_list.return_value = [] mock_is_block_device.return_value = True devices = ceph_hooks.get_devices() self.assertEqual(devices, ['/dev/vda', '/dev/vdb'])
def test_get_devices_symlink(self): """ If a symlink is specified in osd-devices, get_devices() resolves it and returns the link target. """ device = os.path.join(self.tmp_dir, "device") link = os.path.join(self.tmp_dir, "link") os.symlink(device, link) self.test_config.set("osd-devices", link) self.assertEqual([device], hooks.get_devices())
def test_get_devices_symlink(self): """ If a symlink is specified in osd-devices, get_devices() does not resolve it and returns the symlink provided. """ device = os.path.join(self.tmp_dir, "device") link = os.path.join(self.tmp_dir, "link") os.symlink(device, link) self.test_config.set("osd-devices", link) self.assertEqual([link], hooks.get_devices())
def test_get_devices_symlink(self): """ If a symlink is specified in osd-devices, get_devices() does not resolve it and returns the symlink provided. """ device = os.path.join(self.tmp_dir, "device") link = os.path.join(self.tmp_dir, "link") os.symlink(device, link) self.test_config.set("osd-devices", link) self.assertEqual([link], hooks.get_devices())
def test_get_devices_blacklist(self, mock_config, mock_storage_list, mock_get_blacklist): '''Devices returned as expected when blacklist in effect''' config = {'osd-devices': '/dev/vda /dev/vdb'} mock_config.side_effect = lambda key: config[key] mock_storage_list.return_value = [] mock_get_blacklist.return_value = ['/dev/vda'] devices = ceph_hooks.get_devices() mock_storage_list.assert_called() mock_get_blacklist.assert_called() self.assertEqual(devices, ['/dev/vdb'])