test_systemd.py 4.4 KB

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