classes/testimage: add informational messages about tests and do some cleanup/formatting

Adds info about tests run even if they passed (in case of errors log will
be printed anyway). Also some style change for qemu object.

(From OE-Core rev: 4adcf960be9c7477e314788d42b80753c2aaf572)

Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Stefan Stanacar 2013-09-23 07:58:11 +00:00 committed by Richard Purdie
parent 80203494aa
commit 95455bc3e2
1 changed files with 24 additions and 16 deletions

View File

@ -85,6 +85,7 @@ def testimage_main(d):
import oeqa.runtime import oeqa.runtime
import re import re
import shutil import shutil
import time
from oeqa.oetest import runTests from oeqa.oetest import runTests
from oeqa.utils.sshcontrol import SSHControl from oeqa.utils.sshcontrol import SSHControl
from oeqa.utils.qemurunner import QemuRunner from oeqa.utils.qemurunner import QemuRunner
@ -114,21 +115,23 @@ def testimage_main(d):
#will handle fs type eventually, stick with ext3 for now #will handle fs type eventually, stick with ext3 for now
#make a copy of the original rootfs and use that for tests #make a copy of the original rootfs and use that for tests
origrootfs=os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME",True) + '.ext3') origrootfs=os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME",True) + '.ext3')
rootfs=os.path.join(testdir, d.getVar("IMAGE_LINK_NAME", True) + '-testimage.ext3') testrootfs=os.path.join(testdir, d.getVar("IMAGE_LINK_NAME", True) + '-testimage.ext3')
try: try:
shutil.copyfile(origrootfs, rootfs) shutil.copyfile(origrootfs, testrootfs)
except Exception as e: except Exception as e:
bb.fatal("Error copying rootfs: %s" % e) bb.fatal("Error copying rootfs: %s" % e)
qemu = QemuRunner(machine, rootfs)
qemu.tmpdir = d.getVar("TMPDIR", True)
qemu.deploy_dir_image = d.getVar("DEPLOY_DIR_IMAGE", True)
qemu.display = d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True)
qemu.logfile = os.path.join(testdir, "qemu_boot_log.%s" % d.getVar('DATETIME', True))
try: try:
qemu.boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT", True)) boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT", True))
except ValueError: except ValueError:
qemu.boottime = 500 boottime = 1000
qemu = QemuRunner(machine=machine, rootfs=testrootfs,
tmpdir = d.getVar("TMPDIR", True),
deploy_dir_image = d.getVar("DEPLOY_DIR_IMAGE", True),
display = d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True),
logfile = os.path.join(testdir, "qemu_boot_log.%s" % d.getVar('DATETIME', True)),
boottime = boottime)
qemuloglink = os.path.join(testdir, "qemu_boot_log") qemuloglink = os.path.join(testdir, "qemu_boot_log")
if os.path.islink(qemuloglink): if os.path.islink(qemuloglink):
@ -141,12 +144,12 @@ def testimage_main(d):
os.unlink(sshloglink) os.unlink(sshloglink)
os.symlink(sshlog, sshloglink) os.symlink(sshlog, sshloglink)
bb.note("DISPLAY value: %s" % qemu.display) bb.note("DISPLAY value: %s" % qemu.display)
bb.note("rootfs file: %s" % rootfs) bb.note("rootfs file: %s" % qemu.rootfs)
bb.note("Qemu log file: %s" % qemu.logfile) bb.note("Qemu log file: %s" % qemu.logfile)
bb.note("SSH log file: %s" % sshlog) bb.note("SSH log file: %s" % sshlog)
pn = d.getVar("PN", True)
#catch exceptions when loading or running tests (mostly our own errors) #catch exceptions when loading or running tests (mostly our own errors)
try: try:
if qemu.launch(): if qemu.launch():
@ -156,14 +159,19 @@ def testimage_main(d):
tc.qemu = qemu tc.qemu = qemu
tc.target = SSHControl(host=qemu.ip,logfile=sshlog) tc.target = SSHControl(host=qemu.ip,logfile=sshlog)
# run tests and get the results # run tests and get the results
starttime = time.time()
result = runTests(tc) result = runTests(tc)
stoptime = time.time()
if result.wasSuccessful(): if result.wasSuccessful():
bb.note("All required tests passed") bb.plain("%s - Ran %d test%s in %.3fs" % (pn, result.testsRun, result.testsRun != 1 and "s" or "", stoptime - starttime))
msg = "%s - OK - All required tests passed" % pn
skipped = len(result.skipped)
if skipped:
msg += " (skipped=%d)" % skipped
bb.plain(msg)
else: else:
raise bb.build.FuncFailed("Some tests failed. You should check the task log and the ssh log. (ssh log is %s" % sshlog) raise bb.build.FuncFailed("%s - FAILED - check the task log and the ssh log" % pn )
else: else:
raise bb.build.FuncFailed("Failed to start qemu. You should check the task log and the qemu boot log (qemu log is %s)" % qemu.logfile) raise bb.build.FuncFailed("%s - FAILED to start qemu - check the task log and the boot log" % pn)
finally: finally:
qemu.kill() qemu.kill()