| 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' |
| EXPERIMENTAL = 'True' |
| 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) |