test_lxc.py 2.2 KB

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