def test__lvm_report_returns_empty_list_on_invalid_json(self, m_run): cmd_out = "This is not json" cp = subprocess.CompletedProcess(args=[random_string()], returncode=0, stdout=cmd_out.encode('utf-8'), stderr="") m_run.return_value = cp self.assertEqual([], lvm._lvm_report(random_string(), random_string()))
def test_get_dasd_info_returns_none_if_bad_blocksize( self, m_dview, m_block): devname = random_string() id_path = random_string() device = {'DEVNAME': devname, 'ID_PATH': 'ccw-' + id_path} m_dview.return_value = self._load_test_data('dasdd.view') m_block.return_value = None self.assertIsNone(dasd.get_dasd_info(device))
def test_get_dasd_info(self, m_dview): devname = random_string() id_path = random_string() device = {'DEVNAME': devname, 'ID_PATH': 'ccw-' + id_path} m_dview.return_value = self._load_test_data('dasdd.view') self.assertEqual( update_probe_data(expected_probe_data['/dev/dasdd'], name=devname, device_id=id_path), dasd.get_dasd_info(device))
def test_multipath_probe_collects_maps_and_paths(self, m_maps, m_paths): path_string = MP_SEP.join([random_string() for x in range(0, 8)]) paths = multipath.MPath(*path_string.split(MP_SEP))._asdict() maps_string = MP_SEP.join([random_string() for x in range(0, 3)]) maps = multipath.MMap(*maps_string.split(MP_SEP))._asdict() m_maps.return_value = [maps] m_paths.return_value = [paths] result = multipath.probe() self.assertDictEqual({'maps': [maps], 'paths': [paths]}, result)
def test_get_dasd_info(self, m_dview): devname = random_string() id_path = random_string() device = {'DEVNAME': devname, 'ID_PATH': 'ccw-' + id_path} m_dview.return_value = self._load_test_data('dasdd.view') self.assertEqual( { 'name': devname, 'device_id': id_path, 'disk_layout': 'cdl', 'blocksize': 4096 }, dasd.get_dasd_info(device))
def test__lvm_report_returns_found_reports(self, m_run): report_key = random_string() report_data = [{random_string(): random_string()}] cmd_out = json.dumps({"report": [{report_key: report_data}]}) cp = subprocess.CompletedProcess(args=[random_string()], returncode=0, stdout=cmd_out.encode('utf-8'), stderr="") m_run.return_value = cp expected_result = report_data result = lvm._lvm_report(random_string(), report_key) self.assertEqual(expected_result, result)
def test_dasdview_returns_stdout(self, m_run, m_exists): devname = random_string() dasdview_out = random_string() cp = subprocess.CompletedProcess(args=['foo'], returncode=0, stdout=dasdview_out.encode('utf-8'), stderr="") m_run.return_value = cp m_exists.return_value = True result = dasd.dasdview(devname) self.assertEqual(dasdview_out, result) m_run.assert_called_with(['dasdview', '--extended', devname], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
def test_multipath_show_maps_skips_unparsable_output(self, m_run): lines = [ MP_SEP.join([random_string() for x in range(0, 3)]), "", MP_SEP.join([random_string() for x in range(0, 3)]), ] mp_out = "\n".join(lines) cp = subprocess.CompletedProcess(args=['foo'], returncode=0, stdout=mp_out.encode('utf-8'), stderr="") m_run.return_value = cp expected_result = [multipath.MMap(*lines[0].split(MP_SEP))._asdict(), multipath.MMap(*lines[2].split(MP_SEP))._asdict()] result = multipath.multipath_show_maps() self.assertEqual(expected_result, result)
def test_lvmetad_running_env_get(self, m_path, m_env, m_run): pidfile = random_string() m_env.return_value = pidfile m_path.return_value = True self.assertTrue(lvm.lvmetad_running()) m_env.assert_called_with('LVM_LVMETAD_PIDFILE', '/run/lvmetad.pid') m_path.assert_called_with(pidfile)
def test_multipath_show_maps(self, m_run): mp_out = MP_SEP.join([random_string() for x in range(0, 3)]) cp = subprocess.CompletedProcess(args=['foo'], returncode=0, stdout=mp_out.encode('utf-8'), stderr="") m_run.return_value = cp expected_result = [multipath.MMap(*mp_out.split(MP_SEP))._asdict()] result = multipath.multipath_show_maps() self.assertEqual(expected_result, result)
def test_utils_read_sys_block_size_bytes_strips_value(self): devname = random_string() expected_fname = '/sys/class/block/%s/size' % devname expected_bytes = 10737418240 content = ' 20971520 \n ' with simple_mocked_open(content=content) as m_open: result = utils.read_sys_block_size_bytes(devname) self.assertEqual(expected_bytes, result) self.assertEqual([call(expected_fname)], m_open.call_args_list)
def test_multipath_show_paths_serial_with_spaces(self, m_run): mp_out = MP_SEP.join(['sda', 'IPR-0 1234567890'] + [random_string() for x in range(0, 6)]) cp = subprocess.CompletedProcess(args=['foo'], returncode=0, stdout=mp_out.encode('utf-8'), stderr="") m_run.return_value = cp expected_result = [multipath.MPath(*mp_out.split(MP_SEP))._asdict()] result = multipath.multipath_show_paths() self.assertEqual(expected_result, result)
def test_dasd_probe_virtio_non_dasd(self, m_machine, m_open, m_run): m_machine.return_value = 's390x' virtio_major = random_string() devname = random_string() m_open.return_value = ['{} virtblk\n'.format(virtio_major)] m_run.return_value.returncode = 1 context = mock.MagicMock() context.list_devices.side_effect = iter([ [{ "MAJOR": virtio_major, "DEVNAME": devname }], ]) self.assertEqual({}, dasd.probe(context=context)) m_run.assert_called_once_with(['fdasd', '-i', devname], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
def test__lvm_report_returns_specific_reports(self, m_run): report_key = 'report-1' report_data = [{random_string(): random_string()}] extra_data1 = [list(range(0, 10))] extra_data2 = "" cmd_out = json.dumps({ "report": [ { report_key: report_data }, { random_string(): extra_data1 }, { random_string(): extra_data2 }, ] }) cp = subprocess.CompletedProcess(args=[random_string()], returncode=0, stdout=cmd_out.encode('utf-8'), stderr="") m_run.return_value = cp expected_result = report_data result = lvm._lvm_report(random_string(), report_key) self.assertEqual(expected_result, result)
def test_dasdview_returns_none_on_subprocess_error(self, m_run, m_exists): devname = random_string() m_exists.return_value = True m_run.side_effect = subprocess.CalledProcessError( cmd=[random_string()], returncode=1) self.assertEqual(None, dasd.dasdview(devname))
def test__lvm_report_returns_empty_list_on_err(self, m_run): m_run.side_effect = subprocess.CalledProcessError( cmd=[random_string()], returncode=1) result = lvm._lvm_report(random_string(), random_string()) self.assertEqual([], result)
def test_dasd_blocksize_returns_none_on_invalid_output(self): self.assertIsNone(dasd.find_val_int(dasd.DASD_BLKSIZE, random_string()))
def test_dasd_probe_returns_empty_dict_non_s390x_arch(self, m_machine): machine = random_string() self.assertNotEqual("s390x", machine) m_machine.return_value = machine self.assertEqual({}, dasd.probe())
def test_get_dasd_info_returns_none_if_not_all(self, m_dview): devname = random_string() id_path = random_string() device = {'DEVNAME': devname, 'ID_PATH': 'ccw-' + id_path} m_dview.return_value = random_string() self.assertIsNone(dasd.get_dasd_info(device))
def test_dasdview_raises_valueerror(self, m_run, m_exists): devname = random_string() m_exists.return_value = False self.assertRaises(ValueError, dasd.dasdview, devname) self.assertEqual(0, m_run.call_count)
def test_dasd_disk_format_returns_none_on_invalid_output(self): self.assertIsNone(dasd.disk_format(random_string()))
def test_dasd_blocksize_returns_none_on_invalid_output(self): self.assertIsNone(dasd.blocksize(random_string()))