| import os |
| |
| import infra.basetest |
| |
| |
| class TestLxc(infra.basetest.BRTest): |
| config = \ |
| """ |
| BR2_arm=y |
| BR2_cortex_a9=y |
| BR2_ARM_ENABLE_VFP=y |
| BR2_TOOLCHAIN_EXTERNAL=y |
| BR2_LINUX_KERNEL=y |
| BR2_LINUX_KERNEL_CUSTOM_VERSION=y |
| BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.79" |
| BR2_LINUX_KERNEL_DEFCONFIG="vexpress" |
| BR2_LINUX_KERNEL_DTS_SUPPORT=y |
| BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" |
| BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" |
| BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" |
| BR2_INIT_SYSTEMD=y |
| BR2_PACKAGE_LXC=y |
| BR2_PACKAGE_TINI=y |
| BR2_PACKAGE_IPERF3=y |
| BR2_ROOTFS_OVERLAY="{}" |
| BR2_TARGET_ROOTFS_CPIO=y |
| """.format( |
| infra.filepath("tests/package/test_lxc/lxc-kernel.config"), |
| infra.filepath("tests/package/test_lxc/rootfs-overlay")) |
| |
| def run_ok(self, cmd): |
| self.assertRunOk(cmd, 120) |
| |
| def wait_boot(self): |
| # the complete boot with systemd takes more time than what the default multipler permits |
| self.emulator.timeout_multiplier *= 10 |
| self.emulator.login() |
| |
| def setup_run_test_container(self): |
| self.run_ok("lxc-create -n lxc_iperf3 -t none -f /usr/share/lxc/config/minimal-iperf3.conf") |
| self.run_ok("lxc-start -l trace -n lxc_iperf3 -o /tmp/lxc.log -L /tmp/lxc.console.log") |
| # need to wait for the container to be fully started |
| self.run_ok("sleep 2") |
| self.run_ok("iperf3 -c 192.168.1.2 -t 2") |
| # if the test fails, just cat /tmp/*.log |
| |
| def test_run(self): |
| cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") |
| kernel_file = os.path.join(self.builddir, "images", "zImage") |
| dtb_file = os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb") |
| self.emulator.boot(arch="armv7", kernel=kernel_file, |
| kernel_cmdline=[ |
| "console=ttyAMA0,115200"], |
| options=["-initrd", cpio_file, |
| "-dtb", dtb_file, |
| "-M", "vexpress-a9"]) |
| self.wait_boot() |
| self.setup_run_test_container() |