AUTHOR = 'ryanh@us.ibm.com (Ryan Harper)' TIME = 'SHORT' NAME = 'KVM Test with KVM module build' TEST_TYPE = 'client' TEST_CLASS = 'Kernel' TEST_CATEGORY = 'Functional' DOC = ''' Run kvm-test after first downloading, building and installing the KVM module. ''' # CHANGEME - point to kvm release tarball # # # nightly kvm snapshot base URL SNAPBASE = 'http://people.qumranet.com/avi/snapshots/' #CHAGEME - point to your kvmtest test dir TESTDIR = '/opt/kvmtest_tests' # change this value to point to older snapshots , defaults to # look for yesterday's snapshot DAYSOLD=1 import test import os, sys from datetime import * from utils import * def install_kvm_external_modules(tarball=None, base=SNAPBASE, daysold=DAYSOLD): dldir = os.environ['AUTODIR']+'/tmp' srcdir = os.environ['AUTODIR']+'/tmp/kvm' print "kvm dldir->%s"%(dldir) print "kvm srcdir->%s"%(srcdir) # ex: http://people.qumranet.com/avi/snapshots/kvm-snapshot-20071021.tar.gz if tarball is None: d = (date.today() - timedelta(days=daysold)).strftime('%Y%m%d') tarball = base+'kvm-snapshot-%s.tar.gz' %(d) sys.stderr.write("tarball url: %s\n" %(tarball)) tarball = unmap_url("/", tarball, dldir) extract_tarball_to_dir(tarball, srcdir) os.chdir(srcdir) print "detecting cpu vendor..." vendor = "intel" if os.system("grep vmx /proc/cpuinfo 1>/dev/null") != 0: vendor = "amd" print "detected cpu vendor as '%s'" %(vendor) print "building kvm..." system('./configure') system('make') system('make install') print "done building and installing kvm" # remove existing in kernel kvm modules print "unloading loaded kvm modules (if present) ..." if system("grep kvm_%s /proc/modules 1>/dev/null" %(vendor), 1) == 0: system("rmmod -f kvm_%s" %(vendor)) if system("grep kvm /proc/modules 1>/dev/null", 1) == 0: system("rmmod -f kvm") # load new modules print "loading new kvm modules..." os.chdir(srcdir+'/kernel') system("insmod ./kvm.ko && sleep 1 && insmod ./kvm-%s.ko" %(vendor)) # build and install kvm external modules install_kvm_external_modules() # run kvmtest on all tests in testdir job.run_test('kvmtest', testdir=TESTDIR)