Files
rpi-buildroot/support/testing/tests/package/test_docker_compose.py
Fiona Klute (WIWA) 42af5dee13 support/testing/tests/package/test_docker_compose.py: update kernel & VM CPU
Since commit 947dbc92a2 the Bootlin
stable toolchain uses headers 5.4, which can lead to build outputs
incompatible with older kernels. Update to the latest 5.4 kernel to
avoid this. The kernel config is updated according to the requirements
of current Docker, runc, and crun.

Additionally switch the CPU of the test VM to Haswell, to avoid
dockerd failing to start with a "This program can only be run on AMD64
processors with v3 microarchitecture support" error.

Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
(cherry picked from commit efe00fb3fb)
Signed-off-by: Thomas Perale <thomas.perale@mind.be>
2025-09-18 10:25:06 +02:00

87 lines
3.3 KiB
Python

import os
import infra.basetest
class BaseTestDockerCompose(infra.basetest.BRTest):
scripts = ["conf/docker-compose.yml",
"tests/package/sample_python_docker.py"]
config = \
"""
BR2_x86_64=y
BR2_x86_corei7=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y
BR2_SYSTEM_DHCP="eth0"
BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
BR2_ROOTFS_POST_SCRIPT_ARGS="{}"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.296"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="{}"
BR2_PACKAGE_PYTHON3=y
BR2_PACKAGE_PYTHON_DOCKER=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_DOCKER_CLI=y
BR2_PACKAGE_DOCKER_COMPOSE=y
BR2_PACKAGE_DOCKER_ENGINE=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_SIZE="512M"
# BR2_TARGET_ROOTFS_TAR is not set
""".format(
infra.filepath("tests/package/copy-sample-script-to-target.sh"),
" ".join([infra.filepath(i) for i in scripts]),
infra.filepath("conf/docker-compose-kernel.config"))
def wait_for_dockerd(self):
# dockerd takes a while to start up
_, _ = self.emulator.run('while [ ! -e /var/run/docker.sock ]; do sleep 1; done', 120)
def docker_test(self):
# will download container if not available, which may take some time
self.assertRunOk('docker run --rm -p 8888:8888 busybox:latest /bin/true', 120)
def docker_compose_test(self):
# will download container if not available, which may take some time
self.assertRunOk('docker compose up -d --quiet-pull', 120)
# container may take some time to start
self.assertRunOk('while ! docker inspect root-busybox-1 2>&1 >/dev/null; do sleep 1; done', 120)
self.assertRunOk('wget -q -O /tmp/busybox http://127.0.0.1/busybox', 120)
self.assertRunOk('cmp /bin/busybox /tmp/busybox', 120)
def python_docker_test(self):
self.assertRunOk('python3 ./sample_python_docker.py', 120)
def do_test(self):
kernel = os.path.join(self.builddir, "images", "bzImage")
rootfs = os.path.join(self.builddir, "images", "rootfs.ext2")
self.emulator.boot(arch="x86_64",
kernel=kernel,
kernel_cmdline=["root=/dev/vda", "console=ttyS0"],
options=["-cpu", "Haswell",
"-m", "512M",
"-device", "virtio-rng-pci",
"-drive", "file={},format=raw,if=virtio".format(rootfs),
"-net", "nic,model=virtio",
"-net", "user"])
self.emulator.login()
self.wait_for_dockerd()
self.docker_test()
self.docker_compose_test()
self.python_docker_test()
class TestDockerComposeRunc(BaseTestDockerCompose):
def test_run(self):
self.do_test()
class TestDockerComposeCrun(BaseTestDockerCompose):
config = BaseTestDockerCompose.config + """
BR2_PACKAGE_CRUN=y
"""
def test_run(self):
self.do_test()