1import os 2 3import infra.basetest 4 5 6class TestLxc(infra.basetest.BRTest): 7 config = \ 8 """ 9 BR2_arm=y 10 BR2_cortex_a9=y 11 BR2_ARM_ENABLE_VFP=y 12 BR2_TOOLCHAIN_EXTERNAL=y 13 BR2_LINUX_KERNEL=y 14 BR2_LINUX_KERNEL_CUSTOM_VERSION=y 15 BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204" 16 BR2_LINUX_KERNEL_DEFCONFIG="vexpress" 17 BR2_LINUX_KERNEL_DTS_SUPPORT=y 18 BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" 19 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}" 20 BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" 21 BR2_INIT_SYSTEMD=y 22 BR2_PACKAGE_LXC=y 23 BR2_PACKAGE_TINI=y 24 BR2_PACKAGE_IPERF3=y 25 BR2_ROOTFS_OVERLAY="{}" 26 BR2_TARGET_ROOTFS_CPIO=y 27 """.format( 28 infra.filepath("tests/package/test_lxc/lxc-kernel.config"), 29 infra.filepath("tests/package/test_lxc/rootfs-overlay")) 30 31 def run_ok(self, cmd): 32 self.assertRunOk(cmd, 120) 33 34 def wait_boot(self): 35 # the complete boot with systemd takes more time than what the default multipler permits 36 self.emulator.timeout_multiplier *= 10 37 self.emulator.login() 38 39 def setup_run_test_container(self): 40 self.run_ok("lxc-create -n lxc_iperf3 -t none -f /usr/share/lxc/config/minimal-iperf3.conf") 41 self.run_ok("lxc-start -l trace -n lxc_iperf3 -o /tmp/lxc.log -L /tmp/lxc.console.log") 42 # need to wait for the container to be fully started 43 self.run_ok("sleep 2") 44 self.run_ok("iperf3 -c 192.168.1.2 -t 2") 45 # if the test fails, just cat /tmp/*.log 46 47 def test_run(self): 48 cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") 49 kernel_file = os.path.join(self.builddir, "images", "zImage") 50 dtb_file = os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb") 51 self.emulator.boot(arch="armv7", kernel=kernel_file, 52 kernel_cmdline=[ 53 "console=ttyAMA0,115200"], 54 options=["-initrd", cpio_file, 55 "-dtb", dtb_file, 56 "-M", "vexpress-a9"]) 57 self.wait_boot() 58 self.setup_run_test_container() 59