test_lxc.py 2.3 KB

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