aboutsummaryrefslogtreecommitdiffstats
path: root/tests/basic.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basic.py')
-rw-r--r--tests/basic.py113
1 files changed, 15 insertions, 98 deletions
diff --git a/tests/basic.py b/tests/basic.py
index 4666734..38b84c3 100644
--- a/tests/basic.py
+++ b/tests/basic.py
@@ -4,13 +4,10 @@
# stdlib
import os
-import time
-import logging
-import tempfile
+from shutil import copyfile
# avocado
import avocado
-from avocado.utils.process import run
# my bits
from drminfo import TestDRM
@@ -22,99 +19,16 @@ class BaseDRM(TestDRM):
:avocado: tags=x86_64
"""
- def create_initrd(self, outfile, kversion):
- modules = "base systemd bash drm"
- drivers = "cirrus bochs-drm qxl virtio-pci virtio-gpu vgem vkms"
- files = [
- "/usr/bin/drminfo",
- "/usr/bin/drmtest",
- "/usr/bin/fbinfo",
- "/usr/bin/fbtest",
- "/usr/bin/virtiotest",
- "/usr/bin/prime",
- "/usr/share/fontconfig/conf.avail/59-liberation-mono.conf",
- "/usr/share/fonts/liberation/LiberationMono-Regular.ttf",
- ]
-
- cmdline = "dracut"
- cmdline += " --force"
- cmdline += " --modules \"%s\"" % modules
- cmdline += " --drivers \"%s\"" % drivers
- for item in files:
- cmdline += " --install %s" % item
- cmdline += " \"%s\" \"%s\"" % (outfile, kversion)
- run(cmdline)
-
- def console_wait(self, good, bad = None, errmsg = None):
- output = ""
- counter = 1
- while True:
- msg = self.rconsole.readline()
- self.lconsole.debug("%3d: %s" % (counter, msg.rstrip()))
- counter += 1
- if good in msg:
- break
- if not bad is None:
- if bad in msg:
- if errmsg is None:
- errmsg = "unexpected output (%s)" % bad
- self.fail(errmsg)
- if 'Kernel panic - not syncing' in msg:
- self.fail("kernel panic")
- output += msg
- return output
-
- def console_run(self, command):
- self.lcommand.debug(command)
- self.wconsole.write(command)
- self.wconsole.write('\n')
- self.wconsole.flush()
- self.rconsole.readline() # newline
- self.rconsole.readline() # command line echo
-
- def screen_dump(self, device, name):
- if device == 'qxl-vga':
- self.vm.qmp('screendump', filename = '/dev/null');
- time.sleep(1)
- outfile = '%s/%s-%s.ppm' % (self.outputdir, name, device)
- self.vm.qmp('screendump', filename = outfile);
- self.wconsole.write('\n')
- self.wconsole.flush()
-
- def write_text(self, device, name, content):
- outfile = '%s/%s-%s.txt' % (self.outputdir, name, device)
- f = open(outfile, "w")
- f.write(content)
- f.close()
-
- def run_one_test(self, device):
- version = os.uname()[2]
- kernel = "/boot/vmlinuz-%s" % version
- append = "console=ttyS0"
-
- self.vm.set_machine('pc')
- self.vm.set_console()
- self.vm.add_args('-enable-kvm')
- self.vm.add_args('-m', '1G')
- self.vm.add_args('-vga', 'none')
- self.vm.add_args('-device', device)
- self.vm.add_args('-kernel', kernel)
- self.vm.add_args('-initrd', self.dracut.name)
- self.vm.add_args('-append', append)
- self.vm.launch()
-
- self.rconsole = self.vm.console_socket.makefile('r')
- self.wconsole = self.vm.console_socket.makefile('w')
- self.lconsole = logging.getLogger('console')
- self.lcommand = logging.getLogger('command')
+ def run_one_test(self, vga):
+ self.boot_gfx_vm(vga);
self.console_wait('Entering emergency mode')
self.console_run('PS1=---\\\\u---\\\\n')
self.console_wait('---root---')
self.console_run('drminfo -a')
txt = self.console_wait('---root---')
- self.write_text(device, "drminfo", txt)
+ self.write_text(vga, "drminfo", txt)
self.console_run('drminfo -F')
formats = self.console_wait('---root---')
@@ -124,38 +38,41 @@ class BaseDRM(TestDRM):
self.console_run('drmtest -a -s 10 -m 640x480 -f %s' % format)
self.console_wait('---ok---', '---root---',
'drmtest error (%s)' % format)
- self.screen_dump(device, "drm-%s" % format)
+ self.screen_dump(vga, "drm-%s" % format)
self.console_wait('---root---')
fcount += 1;
if fcount == 0:
self.fail("no drm formats");
- if device == 'virtio-vga':
+ if vga == 'virtio-vga':
self.console_run('virtiotest -i')
self.console_wait('---root---')
self.console_run('virtiotest -a -s 10')
self.console_wait('---ok---', '---root---', 'virtiotest error')
- self.screen_dump(device, 'virtio')
+ self.screen_dump(vga, 'virtio')
self.console_wait('---root---')
self.console_run('fbinfo')
txt = self.console_wait('---root---')
- self.write_text(device, "fbinfo", txt)
+ self.write_text(vga, "fbinfo", txt)
self.console_run('fbtest -a -s 10')
self.console_wait('---ok---', '---root---', 'fbtest error')
- self.screen_dump(device, 'fbdev')
+ self.screen_dump(vga, 'fbdev')
self.console_wait('---root---')
@avocado.skipUnless(os.path.exists('/usr/bin/dracut'), "no dracut")
@avocado.skipUnless(os.path.exists('/usr/bin/drminfo'), "no drminfo")
+ @avocado.skipUnless(os.path.exists('/usr/bin/edid-decode'), "no edid-decode")
def setUp(self):
- version = os.uname()[2]
- self.dracut = tempfile.NamedTemporaryFile()
- self.create_initrd(self.dracut.name, version)
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)
def test_stdvga(self):
self.run_one_test('VGA')