def run_virsh_version(test, params, env): """ Test the command virsh version (1) Call virsh version (2) Call virsh version with an unexpected option (3) Call virsh version with libvirtd service stop """ connect_uri = libvirt_vm.normalize_connect_uri( params.get("connect_uri", "default")) # Prepare libvirtd service check_libvirtd = params.has_key("libvirtd") if check_libvirtd: libvirtd = params.get("libvirtd") if libvirtd == "off": libvirt_vm.libvirtd_stop() # Run test case option = params.get("virsh_version_options") try: output = virsh.version(option, uri=connect_uri, ignore_status=False, debug=True) status = 0 #good except error.CmdError: status = 1 #bad # Recover libvirtd service start if libvirtd == "off": libvirt_vm.libvirtd_start() # Check status_error status_error = params.get("status_error") if status_error == "yes": if status == 0: raise error.TestFail("Command 'virsh version %s' succeeded " "(incorrect command)" % option) elif status_error == "no": if status != 0: raise error.TestFail("Command 'virsh version %s' failed " "(correct command)" % option)
def run(test, params, env): """ Test the command virsh version (1) Call virsh version (2) Call virsh version with an unexpected option (3) Call virsh version with libvirtd service stop """ connect_uri = libvirt_vm.normalize_connect_uri( params.get("connect_uri", "default")) libvirtd = params.get("libvirtd", "on") option = params.get("virsh_version_options") status_error = (params.get("status_error") == "yes") # Prepare libvirtd service if libvirtd == "off": utils_libvirtd.libvirtd_stop() # Run test case result = virsh.version(option, uri=connect_uri, debug=True) # Recover libvirtd service start if libvirtd == "off": utils_libvirtd.libvirtd_start() # Check status_error if status_error: if not result.exit_status: if libvirtd == "off" and libvirt_version.version_compare(5, 6, 0): logging.info( "From libvirt version 5.6.0 libvirtd is restarted " "and command should succeed.") else: test.fail("Command 'virsh version %s' succeeded " "(incorrect command)" % option) else: if result.exit_status: test.fail("Command 'virsh version %s' failed " "(correct command)" % option) if option.count("daemon") and not result.stdout.count("daemon"): test.fail("No daemon information outputted!")
def run_virsh_version(test, params, env): """ Test the command virsh version (1) Call virsh version (2) Call virsh version with an unexpected option (3) Call virsh version with libvirtd service stop """ connect_uri = libvirt_vm.normalize_connect_uri( params.get("connect_uri", "default") ) # Prepare libvirtd service check_libvirtd = params.has_key("libvirtd") if check_libvirtd: libvirtd = params.get("libvirtd") if libvirtd == "off": utils_libvirtd.libvirtd_stop() # Run test case option = params.get("virsh_version_options") try: output = virsh.version(option, uri=connect_uri, ignore_status=False, debug=True) status = 0 #good except error.CmdError: status = 1 #bad # Recover libvirtd service start if libvirtd == "off": utils_libvirtd.libvirtd_start() # Check status_error status_error = params.get("status_error") if status_error == "yes": if status == 0: raise error.TestFail("Command 'virsh version %s' succeeded " "(incorrect command)" % option) elif status_error == "no": if status != 0: raise error.TestFail("Command 'virsh version %s' failed " "(correct command)" % option)
def version_compare(major, minor, update): """ Determine/use the current libvirt library version on the system and compare input major, minor, and update values against it. If the running version is greater than or equal to the input params version, then return True; otherwise, return False This is designed to handle upstream version comparisons for test adjustments and/or comparisons as a result of upstream fixes or changes that could impact test results. :param major: Major version to compare against :param minor: Minor version to compare against :param update: Update value to compare against :return: True if running version is greater than or equal to the input libvirt version """ global LIBVIRT_LIB_VERSION if LIBVIRT_LIB_VERSION == 0: try: regex = r'[Uu]sing\s*[Ll]ibrary:\s*[Ll]ibvirt\s*' regex += r'(\d+)\.(\d+)\.(\d+)' lines = virsh.version().stdout.splitlines() for line in lines: mobj = re.search(regex, line) if bool(mobj): LIBVIRT_LIB_VERSION = int(mobj.group(1)) * 1000000 + \ int(mobj.group(2)) * 1000 + \ int(mobj.group(3)) break except (ValueError, TypeError, AttributeError): logging.warning("Error determining libvirt version") return False compare_version = major * 1000000 + minor * 1000 + update if LIBVIRT_LIB_VERSION >= compare_version: return True return False
def run(test, params, env): """ Test the command virsh version (1) Call virsh version (2) Call virsh version with an unexpected option (3) Call virsh version with libvirtd service stop """ connect_uri = libvirt_vm.normalize_connect_uri(params.get("connect_uri", "default")) libvirtd = params.get("libvirtd", "on") option = params.get("virsh_version_options") status_error = (params.get("status_error") == "yes") # Prepare libvirtd service if libvirtd == "off": utils_libvirtd.libvirtd_stop() # Run test case result = virsh.version(option, uri=connect_uri, debug=True) # Recover libvirtd service start if libvirtd == "off": utils_libvirtd.libvirtd_start() # Check status_error if status_error: if not result.exit_status: test.fail("Command 'virsh version %s' succeeded " "(incorrect command)" % option) else: if result.exit_status: test.fail("Command 'virsh version %s' failed " "(correct command)" % option) if option.count("daemon") and not result.stdout.count("daemon"): test.fail("No daemon information outputed!")