Hi, I have just noticed that the cpuid.py check for QEMU error messages was broken by:
commit cdeed8a35629564c9790e9b19d6442bc2108ae7c Author: Ruda Moura <[email protected]> Date: Mon Dec 16 17:16:37 2013 -0200 qemu_vm, aexpect, utils_misc: attempt to catch qemu in defunct state. Add support to detect if qemu becomes <defunct> (zombie) after it was started. If qemu is detected defunct, it will raise virt_vm.VMStartError(). Signed-off-by: Ruda Moura <[email protected]> Now I am getting failures instead of SKIP results. For example: 13:46:42 ERROR| FAIL type_specific.qemu_cpu.cpuid.full_dump.default.default.machine.rhel.rhel640.kvm.cpu.amd.athlon.unknown.rhel.6.6_4 -> VMStartError: VM 'virt-tests-vm1' failed to start: Qemu is defunct. Qemu output: warning: host doesn't support requested feature: CPUID.80000001H:EDX.mmxext [bit 22] warning: host doesn't support requested feature: CPUID.80000001H:EDX.3dnowext [bit 30] warning: host doesn't support requested feature: CPUID.80000001H:EDX.3dnow [bit 31] qemu-kvm: Host's CPU doesn't support requested features The error above was supposed to be caught by the following code on cpuid.py: try: out = get_guest_cpuid( self, cpu_model, cpu_model_flags + ',enforce', extra_params=dict(machine_type=machine_type, smp=1)) except virt_vm.VMStartError, e: if "host doesn't support requested feature:" in e.output \ or ("host cpuid" in e.output and ("lacks requested flag" in e.output or "flag restricted to guest" in e.output)): raise error.TestNAError( "Can't run CPU model %s on this host" % (full_cpu_model_name)) else: raise I am trying to understand how the new code is supposed to work: # Make sure qemu is not defunct if self.process.is_defunct(): logging.error("Bad things happened, qemu process is defunct") err = ("Qemu is defunct.\nQemu output:\n%s" % self.process.get_output()) self.destroy() raise virt_vm.VMStartError(self.name, err) # Make sure the process was started successfully if not self.process.is_alive(): status = self.process.get_status() output = self.process.get_output().strip() migration_in_course = migration_mode is not None unknown_protocol = "unknown migration protocol" in output if migration_in_course and unknown_protocol: e = VMMigrateProtoUnsupportedError(migration_mode, output) else: e = virt_vm.VMCreateError(qemu_command, status, output) self.destroy() raise e The above QEMU error message was always caught by the self.process.is_alive() check, but now the is_defunct() check is catching it. So, is the is_alive() check obsolete? If it is not, why isn't it being triggered anymore on my test case? -- Eduardo _______________________________________________ Virt-test-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/virt-test-devel
