test_lxc.py 2.3 KB

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