test_systemd.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import infra.basetest
  2. from tests.init.base import InitSystemBase as InitSystemBase
  3. class InitSystemSystemdBase(InitSystemBase):
  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_INIT_SYSTEMD=y
  11. BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
  12. BR2_LINUX_KERNEL=y
  13. BR2_LINUX_KERNEL_CUSTOM_VERSION=y
  14. BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204"
  15. BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
  16. BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}"
  17. BR2_LINUX_KERNEL_DTS_SUPPORT=y
  18. BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
  19. # BR2_TARGET_ROOTFS_TAR is not set
  20. """.format(infra.filepath("conf/binfmt-misc-kernel-fragment.config"))
  21. def check_init(self):
  22. super(InitSystemSystemdBase, self).check_init("/lib/systemd/systemd")
  23. # Test all units are OK
  24. output, _ = self.emulator.run("systemctl --no-pager --failed --no-legend")
  25. self.assertEqual(len(output), 0)
  26. # Test we can reach the DBus daemon
  27. self.assertRunOk("busctl --no-pager")
  28. # Test we can read at least one line from the journal
  29. output, _ = self.emulator.run("journalctl --no-pager --lines 1 --quiet")
  30. self.assertEqual(len(output), 1)
  31. class TestInitSystemSystemdRoNetworkd(InitSystemSystemdBase):
  32. config = InitSystemSystemdBase.config + \
  33. """
  34. BR2_SYSTEM_DHCP="eth0"
  35. # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
  36. BR2_ROOTFS_OVERLAY="{}"
  37. BR2_TARGET_ROOTFS_SQUASHFS=y
  38. """.format(infra.filepath("tests/init/systemd-factory"))
  39. def test_run(self):
  40. self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9")
  41. self.check_init()
  42. self.check_network("eth0")
  43. # This one must be executed on the target, to check that
  44. # the factory feature works as expected
  45. out, exit_code = self.emulator.run("cat /var/foo/bar")
  46. self.assertEqual(exit_code, 0)
  47. self.assertEqual(out[0], "foobar")
  48. class TestInitSystemSystemdRwNetworkd(InitSystemSystemdBase):
  49. config = InitSystemSystemdBase.config + \
  50. """
  51. BR2_SYSTEM_DHCP="eth0"
  52. BR2_TARGET_ROOTFS_EXT2=y
  53. """
  54. def test_run(self):
  55. self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9")
  56. self.check_init()
  57. self.check_network("eth0")
  58. class TestInitSystemSystemdRoIfupdown(InitSystemSystemdBase):
  59. config = InitSystemSystemdBase.config + \
  60. """
  61. BR2_SYSTEM_DHCP="eth0"
  62. # BR2_PACKAGE_SYSTEMD_NETWORKD is not set
  63. # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
  64. BR2_TARGET_ROOTFS_SQUASHFS=y
  65. """
  66. def test_run(self):
  67. self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9")
  68. self.check_init()
  69. self.check_network("eth0")
  70. class TestInitSystemSystemdRwIfupdown(InitSystemSystemdBase):
  71. config = InitSystemSystemdBase.config + \
  72. """
  73. BR2_SYSTEM_DHCP="eth0"
  74. # BR2_PACKAGE_SYSTEMD_NETWORKD is not set
  75. BR2_TARGET_ROOTFS_EXT2=y
  76. """
  77. def test_run(self):
  78. self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9")
  79. self.check_init()
  80. self.check_network("eth0")
  81. class TestInitSystemSystemdRoFull(InitSystemSystemdBase):
  82. config = InitSystemSystemdBase.config + \
  83. """
  84. BR2_SYSTEM_DHCP="eth0"
  85. # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
  86. BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE=y
  87. BR2_PACKAGE_SYSTEMD_BACKLIGHT=y
  88. BR2_PACKAGE_SYSTEMD_BINFMT=y
  89. BR2_PACKAGE_SYSTEMD_COREDUMP=y
  90. BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y
  91. BR2_PACKAGE_SYSTEMD_HIBERNATE=y
  92. BR2_PACKAGE_SYSTEMD_IMPORTD=y
  93. BR2_PACKAGE_SYSTEMD_LOCALED=y
  94. BR2_PACKAGE_SYSTEMD_LOGIND=y
  95. BR2_PACKAGE_SYSTEMD_MACHINED=y
  96. BR2_PACKAGE_SYSTEMD_POLKIT=y
  97. BR2_PACKAGE_SYSTEMD_QUOTACHECK=y
  98. BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
  99. BR2_PACKAGE_SYSTEMD_RFKILL=y
  100. BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y
  101. BR2_PACKAGE_SYSTEMD_SYSUSERS=y
  102. BR2_PACKAGE_SYSTEMD_VCONSOLE=y
  103. BR2_TARGET_ROOTFS_SQUASHFS=y
  104. """
  105. def test_run(self):
  106. self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9")
  107. self.check_init()
  108. self.check_network("eth0")
  109. class TestInitSystemSystemdRwFull(InitSystemSystemdBase):
  110. config = InitSystemSystemdBase.config + \
  111. """
  112. BR2_SYSTEM_DHCP="eth0"
  113. BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE=y
  114. BR2_PACKAGE_SYSTEMD_BACKLIGHT=y
  115. BR2_PACKAGE_SYSTEMD_BINFMT=y
  116. BR2_PACKAGE_SYSTEMD_COREDUMP=y
  117. BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y
  118. BR2_PACKAGE_SYSTEMD_HIBERNATE=y
  119. BR2_PACKAGE_SYSTEMD_IMPORTD=y
  120. BR2_PACKAGE_SYSTEMD_LOCALED=y
  121. BR2_PACKAGE_SYSTEMD_LOGIND=y
  122. BR2_PACKAGE_SYSTEMD_MACHINED=y
  123. BR2_PACKAGE_SYSTEMD_POLKIT=y
  124. BR2_PACKAGE_SYSTEMD_QUOTACHECK=y
  125. BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
  126. BR2_PACKAGE_SYSTEMD_RFKILL=y
  127. BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y
  128. BR2_PACKAGE_SYSTEMD_SYSUSERS=y
  129. BR2_PACKAGE_SYSTEMD_VCONSOLE=y
  130. BR2_TARGET_ROOTFS_EXT2=y
  131. """
  132. def test_run(self):
  133. self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9")
  134. self.check_init()
  135. self.check_network("eth0")