support/testing: add usbutils runtime test

Signed-off-by: Julien Olivain <ju.o@free.fr>
[Peter: add comment about USB keyboard/mouse]
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Julien Olivain 2024-01-24 23:25:23 +01:00 committed by Peter Korsgaard
parent 3b342b7793
commit 9ce02d84ad
3 changed files with 65 additions and 0 deletions

View File

@ -1832,6 +1832,8 @@ F: support/testing/tests/package/test_tcpdump.py
F: support/testing/tests/package/test_tesseract_ocr.py
F: support/testing/tests/package/test_trace_cmd.py
F: support/testing/tests/package/test_trace_cmd/
F: support/testing/tests/package/test_usbutils.py
F: support/testing/tests/package/test_usbutils/
F: support/testing/tests/package/test_weston.py
F: support/testing/tests/package/test_weston/
F: support/testing/tests/package/test_xz.py

View File

@ -0,0 +1,61 @@
import os
import infra.basetest
class TestUsbUtils(infra.basetest.BRTest):
# A specific configuration is needed for testing usbutils, to
# enable USB 2.0 support in the Kernel.
linux_fragment = \
infra.filepath("tests/package/test_usbutils/linux-usbutils.fragment")
config = \
f"""
BR2_aarch64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.73"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{linux_fragment}"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_EUDEV=y
BR2_PACKAGE_USBUTILS=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_CPIO_GZIP=y
# BR2_TARGET_ROOTFS_TAR is not set
"""
def test_run(self):
img = os.path.join(self.builddir, "images", "rootfs.cpio.gz")
kern = os.path.join(self.builddir, "images", "Image")
# We add a USB keyboard and mouse devices for the test.
self.emulator.boot(arch="aarch64",
kernel=kern,
kernel_cmdline=["console=ttyAMA0"],
options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M",
"-initrd", img,
"-device", "usb-ehci,id=ehci",
"-device", "usb-kbd,bus=ehci.0",
"-device", "usb-mouse,bus=ehci.0"])
self.emulator.login()
# Check the program can execute. We also check the version
# string to make sure we have the usbutils version. The
# BusyBox lsusb ignores arguments.
output, exit_code = self.emulator.run("lsusb --version")
self.assertEqual(exit_code, 0)
self.assertTrue(output[0].startswith("lsusb (usbutils)"))
# Test few simple and common invocations
self.assertRunOk("lsusb")
self.assertRunOk("lsusb --tree")
self.assertRunOk("lsusb --verbose")
# 1d6b:0002 is Linux Foundation 2.0 root hub
# it should be present. lsusb return an error if no device
# is found.
self.assertRunOk("lsusb -d 1d6b:0002")
# we emulate a USB keyboard and mouse, so usbhid-dump should find them
self.assertRunOk("usbhid-dump")

View File

@ -0,0 +1,2 @@
CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y