mirror of
https://git.yoctoproject.org/poky
synced 2026-04-25 06:32:12 +02:00
The bb.note prints multiple same lines when invoke this class again, but if we set mainlogger.propagate = False, nothing would be printed, according to logging's document: https://docs.python.org/3/library/logging.html Note If you attach a handler to a logger and one or more of its ancestors, it may emit the same record multiple times. In general, you should not need to attach a handler to more than one logger - if you just attach it to the appropriate logger which is highest in the logger hierarchy, then it will see all events logged by all descendant loggers, provided that their propagate setting is left set to True. A common scenario is to attach handlers only to the root logger, and to let propagation take care of the rest. We may need avoid using bb.note or bb.warn in oeqa since it attaches multiple log handlers which may cause confusions This patch only sets "mainlogger.propagate = False" in selftest/runqemu.py and use logger.info to replace bb.note in targetcontrol.py to minimize the impact. [YOCTO #10249] (From OE-Core rev: b139790422bc8e0d80bad063bb78bc1632731bc1) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
141 lines
5.4 KiB
Python
141 lines
5.4 KiB
Python
#
|
|
# Copyright (c) 2017 Wind River Systems, Inc.
|
|
#
|
|
|
|
import re
|
|
import logging
|
|
|
|
from oeqa.selftest.base import oeSelfTest
|
|
from oeqa.utils.commands import bitbake, runqemu, get_bb_var
|
|
from oeqa.utils.decorators import testcase
|
|
|
|
class RunqemuTests(oeSelfTest):
|
|
"""Runqemu test class"""
|
|
|
|
image_is_ready = False
|
|
deploy_dir_image = ''
|
|
|
|
def setUpLocal(self):
|
|
self.recipe = 'core-image-minimal'
|
|
self.machine = 'qemux86-64'
|
|
self.fstypes = "ext4 iso hddimg vmdk qcow2 vdi"
|
|
self.cmd_common = "runqemu nographic"
|
|
|
|
# Avoid emit the same record multiple times.
|
|
mainlogger = logging.getLogger("BitBake.Main")
|
|
mainlogger.propagate = False
|
|
|
|
self.write_config(
|
|
"""
|
|
MACHINE = "%s"
|
|
IMAGE_FSTYPES = "%s"
|
|
# 10 means 1 second
|
|
SYSLINUX_TIMEOUT = "10"
|
|
"""
|
|
% (self.machine, self.fstypes)
|
|
)
|
|
|
|
if not RunqemuTests.image_is_ready:
|
|
RunqemuTests.deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
|
|
bitbake(self.recipe)
|
|
RunqemuTests.image_is_ready = True
|
|
|
|
@testcase(2001)
|
|
def test_boot_machine(self):
|
|
"""Test runqemu machine"""
|
|
cmd = "%s %s" % (self.cmd_common, self.machine)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
|
|
|
@testcase(2002)
|
|
def test_boot_machine_ext4(self):
|
|
"""Test runqemu machine ext4"""
|
|
cmd = "%s %s ext4" % (self.cmd_common, self.machine)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
with open(qemu.qemurunnerlog) as f:
|
|
self.assertTrue('rootfs.ext4' in f.read(), "Failed: %s" % cmd)
|
|
|
|
@testcase(2003)
|
|
def test_boot_machine_iso(self):
|
|
"""Test runqemu machine iso"""
|
|
cmd = "%s %s iso" % (self.cmd_common, self.machine)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
with open(qemu.qemurunnerlog) as f:
|
|
self.assertTrue(' -cdrom ' in f.read(), "Failed: %s" % cmd)
|
|
|
|
@testcase(2004)
|
|
def test_boot_recipe_image(self):
|
|
"""Test runqemu recipe-image"""
|
|
cmd = "%s %s" % (self.cmd_common, self.recipe)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
|
|
|
@testcase(2005)
|
|
def test_boot_recipe_image_vmdk(self):
|
|
"""Test runqemu recipe-image vmdk"""
|
|
cmd = "%s %s vmdk" % (self.cmd_common, self.recipe)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
with open(qemu.qemurunnerlog) as f:
|
|
self.assertTrue('format=vmdk' in f.read(), "Failed: %s" % cmd)
|
|
|
|
@testcase(2006)
|
|
def test_boot_recipe_image_vdi(self):
|
|
"""Test runqemu recipe-image vdi"""
|
|
cmd = "%s %s vdi" % (self.cmd_common, self.recipe)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
with open(qemu.qemurunnerlog) as f:
|
|
self.assertTrue('format=vdi' in f.read(), "Failed: %s" % cmd)
|
|
|
|
@testcase(2007)
|
|
def test_boot_deploy(self):
|
|
"""Test runqemu deploy_dir_image"""
|
|
cmd = "%s %s" % (self.cmd_common, self.deploy_dir_image)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
|
|
|
@testcase(2008)
|
|
def test_boot_deploy_hddimg(self):
|
|
"""Test runqemu deploy_dir_image hddimg"""
|
|
cmd = "%s %s hddimg" % (self.cmd_common, self.deploy_dir_image)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
with open(qemu.qemurunnerlog) as f:
|
|
self.assertTrue(re.search('file=.*.hddimg', f.read()), "Failed: %s" % cmd)
|
|
|
|
@testcase(2009)
|
|
def test_boot_machine_slirp(self):
|
|
"""Test runqemu machine slirp"""
|
|
cmd = "%s slirp %s" % (self.cmd_common, self.machine)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
with open(qemu.qemurunnerlog) as f:
|
|
self.assertTrue(' -netdev user' in f.read(), "Failed: %s" % cmd)
|
|
|
|
@testcase(2009)
|
|
def test_boot_machine_slirp_qcow2(self):
|
|
"""Test runqemu machine slirp qcow2"""
|
|
cmd = "%s slirp qcow2 %s" % (self.cmd_common, self.machine)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
with open(qemu.qemurunnerlog) as f:
|
|
self.assertTrue('format=qcow2' in f.read(), "Failed: %s" % cmd)
|
|
|
|
@testcase(2010)
|
|
def test_boot_qemu_boot(self):
|
|
"""Test runqemu /path/to/image.qemuboot.conf"""
|
|
qemuboot_conf = "%s-%s.qemuboot.conf" % (self.recipe, self.machine)
|
|
qemuboot_conf = os.path.join(self.deploy_dir_image, qemuboot_conf)
|
|
if not os.path.exists(qemuboot_conf):
|
|
self.skipTest("%s not found" % qemuboot_conf)
|
|
cmd = "%s %s" % (self.cmd_common, qemuboot_conf)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|
|
|
|
@testcase(2011)
|
|
def test_boot_rootfs(self):
|
|
"""Test runqemu /path/to/rootfs.ext4"""
|
|
rootfs = "%s-%s.ext4" % (self.recipe, self.machine)
|
|
rootfs = os.path.join(self.deploy_dir_image, rootfs)
|
|
if not os.path.exists(rootfs):
|
|
self.skipTest("%s not found" % rootfs)
|
|
cmd = "%s %s" % (self.cmd_common, rootfs)
|
|
with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
|
|
self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd)
|