521b6f8550
To avoid spending some time to build the x86_64 toolchain (~20min), switch to corei7 cpu (Nahalem) and use the prebuilt Bootlin toolchain. We have to use the "stable" Bootlin toolchain to use the same kernel version for the toolchain kernel headers and the running kernel. With the "bleeding-edge" toolchain we have the "kernel too old" issue (running kernel 4.19 vs kernel headers 5.4) Runtime tested locally. Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
65 lines
2.7 KiB
Python
65 lines
2.7 KiB
Python
import os
|
|
|
|
import infra.basetest
|
|
|
|
|
|
class TestDockerCompose(infra.basetest.BRTest):
|
|
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="4.19.204"
|
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="{}"
|
|
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"),
|
|
infra.filepath("conf/docker-compose.yml"),
|
|
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', 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 -O /tmp/busybox http://127.0.0.1/busybox', 120)
|
|
self.assertRunOk('cmp /bin/busybox /tmp/busybox', 120)
|
|
|
|
def test_run(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", "Nehalem",
|
|
"-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()
|