From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Wang Subject: Re: [Autotest] [PATCH 1/3] KVM test: Use customized command to get the version of kvm and its Date: Fri, 07 May 2010 18:10:15 +0800 Message-ID: <4BE3E707.504@redhat.com> References: <20100426100726.26501.73186.stgit@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: autotest@test.kernel.org, kvm@vger.kernel.org To: Lucas Meneghel Rodrigues Return-path: Received: from mx1.redhat.com ([209.132.183.28]:54278 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752845Ab0EGKFg (ORCPT ); Fri, 7 May 2010 06:05:36 -0400 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: Lucas Meneghel Rodrigues wrote: > On Mon, Apr 26, 2010 at 7:07 AM, Jason Wang wrote: > >> userspace >> >> Current method may or may not work for various kinds of >> distribution. So this patch enable the ability to use customized >> commands to get the version of kvm and its userspace. "kvm_ver_cmd" is >> used for kvm verison and "kvm_userspace_ver_cmd" is for its userspace. >> > > The method we are currently using is pretty satisfactory - if we fail > in getting /sys/module/kvm/version we use the kernel version as a > fallback, which is good for the kernel module. For qemu, we make a > regular expression searching for numbers following the string version, > so I don't see a reason on why we should make it configurable. Care to > provide an example of a situation where the current method fails? > > Current method may be not as accurate as we expected. In my Fedora box, the output of qemu-kvm -h | head -n 1 is something like: QEMU PC emulator version 0.9.1 (kvm-83-maint-snapshot-20090205), Copyright (c) 2003-2008 Fabrice Bellard but the rpm -qa may tell more accurate version: qemu-kvm-0.11.0-13.fc12.x86_64 >> Signed-off-by: Jason Wang >> --- >> client/tests/kvm/kvm_preprocessing.py | 18 +++++++++--------- >> 1 files changed, 9 insertions(+), 9 deletions(-) >> >> diff --git a/client/tests/kvm/kvm_preprocessing.py b/client/tests/kvm/kvm_preprocessing.py >> index 4b9290c..16200ab 100644 >> --- a/client/tests/kvm/kvm_preprocessing.py >> +++ b/client/tests/kvm/kvm_preprocessing.py >> @@ -225,10 +225,10 @@ def preprocess(test, params, env): >> # Get the KVM kernel module version and write it as a keyval >> logging.debug("Fetching KVM module version...") >> if os.path.exists("/dev/kvm"): >> - try: >> - kvm_version = open("/sys/module/kvm/version").read().strip() >> - except: >> - kvm_version = os.uname()[2] >> + kvm_ver_cmd = params.get("kvm_ver_cmd", "cat /sys/module/kvm/version") >> + s, kvm_version = commands.getstatusoutput(kvm_ver_cmd) >> + if s != 0: >> + kvm_version = "Unknown" >> else: >> kvm_version = "Unknown" >> logging.debug("KVM module not loaded") >> @@ -239,11 +239,11 @@ def preprocess(test, params, env): >> logging.debug("Fetching KVM userspace version...") >> qemu_path = kvm_utils.get_path(test.bindir, params.get("qemu_binary", >> "qemu")) >> - version_line = commands.getoutput("%s -help | head -n 1" % qemu_path) >> - matches = re.findall("[Vv]ersion .*?,", version_line) >> - if matches: >> - kvm_userspace_version = " ".join(matches[0].split()[1:]).strip(",") >> - else: >> + def_qemu_ver_cmd = "%s -help | head -n 1 | awk '{ print $5}'" % qemu_path >> + kvm_userspace_ver_cmd = params.get("kvm_userspace_ver_cmd", >> + def_qemu_ver_cmd) >> + s, kvm_userspace_version = commands.getstatusoutput(kvm_userspace_ver_cmd) >> + if s != 0: >> kvm_userspace_version = "Unknown" >> logging.debug("Could not fetch KVM userspace version") >> logging.debug("KVM userspace version: %s" % kvm_userspace_version) >> >> _______________________________________________ >> Autotest mailing list >> Autotest@test.kernel.org >> http://test.kernel.org/cgi-bin/mailman/listinfo/autotest >> >> > > > >