bbclasses.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #
  2. # Copyright OpenEmbedded Contributors
  3. #
  4. # SPDX-License-Identifier: MIT
  5. #
  6. from oeqa.selftest.case import OESelftestTestCase
  7. from oeqa.utils.commands import get_bb_vars, bitbake
  8. class Systemd(OESelftestTestCase):
  9. """
  10. Tests related to the systemd bbclass.
  11. """
  12. def getVars(self, recipe):
  13. self.bb_vars = get_bb_vars(
  14. [
  15. 'BPN',
  16. 'D',
  17. 'INIT_D_DIR',
  18. 'prefix',
  19. 'systemd_system_unitdir',
  20. 'sysconfdir',
  21. ],
  22. recipe,
  23. )
  24. def fileExists(self, filename):
  25. self.assertExists(filename.format(**self.bb_vars))
  26. def fileNotExists(self, filename):
  27. self.assertNotExists(filename.format(**self.bb_vars))
  28. def test_systemd_in_distro(self):
  29. """
  30. Summary: Verify that no sysvinit files are installed when the
  31. systemd distro feature is enabled, but sysvinit is not.
  32. Expected: Systemd service file exists, but /etc does not.
  33. Product: OE-Core
  34. Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
  35. """
  36. self.write_config("""
  37. DISTRO_FEATURES:append = " systemd usrmerge"
  38. DISTRO_FEATURES:remove = "sysvinit"
  39. VIRTUAL-RUNTIME_init_manager = "systemd"
  40. """)
  41. bitbake("systemd-only systemd-and-sysvinit -c install")
  42. self.getVars("systemd-only")
  43. self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
  44. self.getVars("systemd-and-sysvinit")
  45. self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
  46. self.fileNotExists("{D}{sysconfdir}")
  47. def test_systemd_and_sysvinit_in_distro(self):
  48. """
  49. Summary: Verify that both systemd and sysvinit files are installed
  50. when both the systemd and sysvinit distro features are
  51. enabled.
  52. Expected: Systemd service file and sysvinit initscript exist.
  53. Product: OE-Core
  54. Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
  55. """
  56. self.write_config("""
  57. DISTRO_FEATURES:append = " systemd sysvinit usrmerge"
  58. VIRTUAL-RUNTIME_init_manager = "systemd"
  59. """)
  60. bitbake("systemd-only systemd-and-sysvinit -c install")
  61. self.getVars("systemd-only")
  62. self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
  63. self.getVars("systemd-and-sysvinit")
  64. self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
  65. self.fileExists("{D}{INIT_D_DIR}/{BPN}")
  66. def test_sysvinit_in_distro(self):
  67. """
  68. Summary: Verify that no systemd service files are installed when the
  69. sysvinit distro feature is enabled, but systemd is not.
  70. Expected: The systemd service file does not exist, nor does /usr.
  71. The sysvinit initscript exists.
  72. Product: OE-Core
  73. Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
  74. """
  75. self.write_config("""
  76. DISTRO_FEATURES:remove = "systemd"
  77. DISTRO_FEATURES:append = " sysvinit usrmerge"
  78. VIRTUAL-RUNTIME_init_manager = "sysvinit"
  79. """)
  80. bitbake("systemd-only systemd-and-sysvinit -c install")
  81. self.getVars("systemd-only")
  82. self.fileNotExists("{D}{systemd_system_unitdir}/{BPN}.service")
  83. self.fileNotExists("{D}{prefix}")
  84. self.fileNotExists("{D}{sysconfdir}")
  85. self.fileExists("{D}")
  86. self.getVars("systemd-and-sysvinit")
  87. self.fileNotExists("{D}{systemd_system_unitdir}/{BPN}.service")
  88. self.fileNotExists("{D}{prefix}")
  89. self.fileExists("{D}{INIT_D_DIR}/{BPN}")