diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2019-03-29 07:27:44 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2019-03-29 07:27:44 +0100 |
commit | 846ed4d696c904bfffbddcc7b8294f7723ceed01 (patch) | |
tree | 8995590c5ebc74d782d2ec2799e3eae768780917 | |
parent | d1a9049a6dff01c06ef8d6437e6c328c6da9b39c (diff) | |
download | drminfo-846ed4d696c904bfffbddcc7b8294f7723ceed01.tar.gz |
tests: add support for custom kernels
-rw-r--r-- | tests/README | 25 | ||||
-rw-r--r-- | tests/basic.py | 6 | ||||
-rw-r--r-- | tests/drminfo/__init__.py | 23 | ||||
-rw-r--r-- | tests/edid.py | 5 |
4 files changed, 45 insertions, 14 deletions
diff --git a/tests/README b/tests/README index da8182c..3df488a 100644 --- a/tests/README +++ b/tests/README @@ -1,7 +1,26 @@ avocado framework tests for qemu display devices +================================================ -usage: - export QEMU_BUILD_DIR=/path/to/qemu/build/tree - avocado run . +configuration +------------- +Uses environment variables. + +QEMU_BUILD_DIR (required) + + Should points to a qemu build tree. The python module and qemu + binaries are used. + + Pointing to a qemu source tree works too. In that case only the + python module is used. + +LINUX_BUILD_DIR (optional) + + Points to a linux kernel build tree. Uses that kernel (instead of + the host kernel) for testing. + +run the tests +------------- + +avocado run *.py diff --git a/tests/basic.py b/tests/basic.py index 38b84c3..c9948e9 100644 --- a/tests/basic.py +++ b/tests/basic.py @@ -4,7 +4,6 @@ # stdlib import os -from shutil import copyfile # avocado import avocado @@ -68,11 +67,8 @@ class BaseDRM(TestDRM): @avocado.skipUnless(os.path.exists('/usr/bin/edid-decode'), "no edid-decode") def setUp(self): TestDRM.setUp(self); - version = os.uname()[2] if not os.path.isfile(self.initrd): - self.create_initrd(self.initrd, version) - if not os.path.isfile(self.kernel): - copyfile("/boot/vmlinuz-%s" % version, self.kernel) + self.prepare_kernel_initrd() def test_stdvga(self): self.run_one_test('VGA') diff --git a/tests/drminfo/__init__.py b/tests/drminfo/__init__.py index 2ae0413..5acbd66 100644 --- a/tests/drminfo/__init__.py +++ b/tests/drminfo/__init__.py @@ -3,6 +3,8 @@ import os import sys import time import logging +from glob import glob +from shutil import copyfile # avocado import avocado @@ -10,6 +12,7 @@ from avocado.utils.process import run # qemu QEMU_BUILD_DIR = os.environ.get("QEMU_BUILD_DIR"); +LINUX_BUILD_DIR = os.environ.get("LINUX_BUILD_DIR"); sys.path.append(os.path.join(QEMU_BUILD_DIR, 'python')) from qemu import QEMUMachine @@ -35,7 +38,19 @@ class TestDRM(avocado.Test): return item; return None - def create_initrd(self, outfile, kversion): + def prepare_kernel_initrd(self): + if LINUX_BUILD_DIR is None: + kversion = os.uname()[2] + copyfile("/boot/vmlinuz-%s" % version, self.kernel) + else: + cmdline = "make -C %s" % LINUX_BUILD_DIR + cmdline += " INSTALL_MOD_PATH=%s" % self.workdir + cmdline += " modules_install" + run(cmdline) + kmoddir = glob("%s/lib/modules/*" % self.workdir)[0] + kversion = os.path.basename(kmoddir) + copyfile("%s/arch/x86/boot/bzImage" % LINUX_BUILD_DIR, self.kernel) + modules = "base systemd bash drm" drivers = "cirrus bochs-drm qxl virtio-pci virtio-gpu vgem vkms" files = [ @@ -52,11 +67,13 @@ class TestDRM(avocado.Test): cmdline = "dracut" cmdline += " --force" + if not kmoddir is None: + cmdline += " --kmoddir \"%s\"" % kmoddir cmdline += " --modules \"%s\"" % modules cmdline += " --drivers \"%s\"" % drivers for item in files: cmdline += " --install %s" % item - cmdline += " \"%s\" \"%s\"" % (outfile, kversion) + cmdline += " \"%s\" \"%s\"" % (self.initrd, kversion) run(cmdline) def boot_gfx_vm(self, vga): @@ -102,6 +119,8 @@ class TestDRM(avocado.Test): self.fail(errmsg) if 'Kernel panic - not syncing' in msg: self.fail("kernel panic") + if 'Oops: ' in msg: + self.fail("kernel oops") output += msg return output diff --git a/tests/edid.py b/tests/edid.py index d206871..f1f2530 100644 --- a/tests/edid.py +++ b/tests/edid.py @@ -39,11 +39,8 @@ class EDID(TestDRM): @avocado.skipUnless(os.path.exists('/usr/bin/edid-decode'), "no edid-decode") def setUp(self): TestDRM.setUp(self); - version = os.uname()[2] if not os.path.isfile(self.initrd): - self.create_initrd(self.initrd, version) - if not os.path.isfile(self.kernel): - copyfile("/boot/vmlinuz-%s" % version, self.kernel) + self.prepare_kernel_initrd() def test_stdvga(self): self.run_one_test('VGA,edid=on') |