From 054257cf970d45b7b0c17ce7cb781df8f6741fac Mon Sep 17 00:00:00 2001 From: Balamuruhan S Date: Mon, 21 Jan 2019 19:19:57 +0530 Subject: [PATCH] virt_vm: make sure libvirt connect uri doesn't break the test In migration tests, verify_dmesg can be used to check the guest after migration where connect uri would be changed. API should ensure to hold the `vm.connect_uri` in the test flow when it is used multiple times, this fix resume the original connect_uri once verifying dmesg. utils_misc: let verify_dmesg() return bool if `ignore_result=True` If ignore_result=True, let verify_dmesg() return bool, True if no errors/crash and False otherwise which would help proceed the test based on the return value. Signed-off-by: Balamuruhan S --- virttest/libvirt_vm.py | 2 +- virttest/utils_misc.py | 6 ++++++ virttest/virt_vm.py | 29 ++++++++++++++++++----------- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/virttest/libvirt_vm.py b/virttest/libvirt_vm.py index 01a41a6094..40c9ff51a0 100644 --- a/virttest/libvirt_vm.py +++ b/virttest/libvirt_vm.py @@ -2477,7 +2477,7 @@ def pause(self): state = self.state() if state != 'paused': virsh.suspend( - self.name, uri=self.connect_uri, ignore_statues=False) + self.name, uri=self.connect_uri, ignore_status=False) return True except Exception: logging.error("VM %s failed to suspend", self.name) diff --git a/virttest/utils_misc.py b/virttest/utils_misc.py index 2b327e49f4..21cf3ed846 100644 --- a/virttest/utils_misc.py +++ b/virttest/utils_misc.py @@ -3477,6 +3477,10 @@ def verify_dmesg(dmesg_log_file=None, ignore_result=False, level_check=3, 4 - emerg,alert,crit,err 5 - emerg,alert,crit,err,warn :param session: session object to guest + :param return: if ignore_result=True, return True if no errors/crash + observed, False otherwise. + :param raise: if ignore_result=False, raise TestFail exception on + observing errors/crash """ cmd = "dmesg -T -l %s|grep ." % ",".join(map(str, xrange(0, int(level_check)))) if session: @@ -3504,6 +3508,8 @@ def verify_dmesg(dmesg_log_file=None, ignore_result=False, level_check=3, process.system("dmesg -C", ignore_status=True) if not ignore_result: raise exceptions.TestFail(err) + return False + return True def add_ker_cmd(kernel_cmdline, kernel_param, remove_similar=False): diff --git a/virttest/virt_vm.py b/virttest/virt_vm.py index b0ee7f1bf9..5f18ed9a85 100644 --- a/virttest/virt_vm.py +++ b/virttest/virt_vm.py @@ -946,19 +946,26 @@ def verify_dmesg(self, dmesg_log_file=None, connect_uri=None): guest dmesg to logging.debug. :param connect_uri: Libvirt connect uri of vm """ - if(len(self.virtnet) > 0 and self.virtnet[0].nettype != "macvtap" and - not connect_uri): - session = self.wait_for_login() - else: - if connect_uri and self.params.get("vm_type", "qemu") == "libvirt": - self.connect_uri = connect_uri - session = self.wait_for_serial_login() + session = None level = self.params.get("guest_dmesg_level", 3) ignore_result = self.params.get("guest_dmesg_ignore", "no") == "yes" - utils_misc.verify_dmesg(dmesg_log_file=dmesg_log_file, - ignore_result=ignore_result, - level_check=level, session=session) - session.close() + try: + if(len(self.virtnet) > 0 and self.virtnet[0].nettype != "macvtap" and + not connect_uri): + session = self.wait_for_login() + else: + if connect_uri and self.params.get("vm_type", "qemu") == "libvirt": + actual_uri = self.connect_uri + self.connect_uri = connect_uri + session = self.wait_for_serial_login() + return utils_misc.verify_dmesg(dmesg_log_file=dmesg_log_file, + ignore_result=ignore_result, + level_check=level, session=session) + finally: + if connect_uri: + self.connect_uri = actual_uri + if session: + session.close() def verify_bsod(self, scrdump_file): # For windows guest