test_edk2.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import os
  2. import infra.basetest
  3. class TestEdk2(infra.basetest.BRTest):
  4. config = \
  5. """
  6. BR2_aarch64=y
  7. BR2_neoverse_n1=y
  8. BR2_TOOLCHAIN_EXTERNAL=y
  9. BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
  10. BR2_TARGET_ROOTFS_EXT2=y
  11. BR2_TARGET_ROOTFS_EXT2_4=y
  12. # BR2_TARGET_ROOTFS_TAR is not set
  13. BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh"
  14. BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/qemu/aarch64-sbsa/genimage.cfg"
  15. BR2_LINUX_KERNEL=y
  16. BR2_LINUX_KERNEL_CUSTOM_VERSION=y
  17. BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.58"
  18. BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
  19. BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="support/testing/tests/boot/test_edk2/linux.config"
  20. BR2_TARGET_EDK2=y
  21. BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y
  22. BR2_TARGET_GRUB2=y
  23. BR2_TARGET_GRUB2_ARM64_EFI=y
  24. BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
  25. BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y
  26. BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.12"
  27. BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa"
  28. BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
  29. BR2_PACKAGE_HOST_GENIMAGE=y
  30. BR2_PACKAGE_HOST_DOSFSTOOLS=y
  31. BR2_PACKAGE_HOST_MTOOLS=y
  32. BR2_PACKAGE_HOST_QEMU=y
  33. BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
  34. """
  35. def test_run(self):
  36. hda = os.path.join(self.builddir, "images", "disk.img")
  37. flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd")
  38. flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd")
  39. self.emulator.boot(arch="aarch64",
  40. options=["-M", "sbsa-ref",
  41. "-cpu", "neoverse-n1",
  42. "-m", "512M",
  43. "-pflash", flash0,
  44. "-pflash", flash1,
  45. "-hda", hda])
  46. self.emulator.login()
  47. class TestEdk2BuildBase(infra.basetest.BRTest):
  48. """A class to test the build of various edk2 platforms."""
  49. base_config = \
  50. """
  51. # BR2_PACKAGE_BUSYBOX is not set
  52. # BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
  53. # BR2_TARGET_ROOTFS_TAR is not set
  54. BR2_INIT_NONE=y
  55. BR2_SYSTEM_BIN_SH_NONE=y
  56. BR2_TARGET_EDK2=y
  57. BR2_TOOLCHAIN_EXTERNAL=y
  58. """
  59. def assertBinariesExist(self, *binaries: str) -> None:
  60. """Assert that the binaries passed as argument exist
  61. under the images folder.
  62. We print a message to the emulator logfile for each binary found.
  63. """
  64. for binary in binaries:
  65. binpath = os.path.join(self.builddir, "images", binary)
  66. self.assertTrue(os.path.exists(binpath), f"Missing {binpath}!")
  67. print(f"{binary} exists: {binpath}", file=self.emulator.logfile,
  68. flush=True)
  69. class TestEdk2BuildArmVirtQemu(TestEdk2BuildBase):
  70. config = TestEdk2BuildBase.base_config + \
  71. """
  72. BR2_aarch64=y
  73. BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU=y
  74. """
  75. def test_run(self) -> None:
  76. self.assertBinariesExist("QEMU_EFI.fd", "QEMU_VARS.fd")
  77. class TestEdk2BuildArmVirtQemuKernel(TestEdk2BuildBase):
  78. config = TestEdk2BuildBase.base_config + \
  79. """
  80. BR2_aarch64=y
  81. BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL=y
  82. """
  83. def test_run(self) -> None:
  84. self.assertBinariesExist("QEMU_EFI.fd", "QEMU_VARS.fd")
  85. class TestEdk2BuildArmSgi575(TestEdk2BuildBase):
  86. config = TestEdk2BuildBase.base_config + \
  87. """
  88. BR2_aarch64=y
  89. BR2_TARGET_EDK2_PLATFORM_ARM_SGI575=y
  90. """
  91. def test_run(self) -> None:
  92. self.assertBinariesExist("BL33_AP_UEFI.fd")
  93. class TestEdk2BuildArmVexpressFvpAarch64(TestEdk2BuildBase):
  94. config = TestEdk2BuildBase.base_config + \
  95. """
  96. BR2_aarch64=y
  97. BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64=y
  98. """
  99. def test_run(self) -> None:
  100. self.assertBinariesExist("FVP_AARCH64_EFI.fd")
  101. class TestEdk2BuildQemuSbsa(TestEdk2BuildBase):
  102. # This configuration is not exactly identical to the configuration built
  103. # during TestEdk2, as we use the latest arm-trusted-firmware version, among
  104. # other things.
  105. config = TestEdk2BuildBase.base_config + \
  106. """
  107. BR2_aarch64=y
  108. BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y
  109. BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
  110. BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa"
  111. BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
  112. """
  113. def test_run(self) -> None:
  114. self.assertBinariesExist("SBSA_FLASH0.fd", "SBSA_FLASH1.fd", "fip.bin")
  115. class TestEdk2BuildSolidrunArmada80x0mcbin(TestEdk2BuildBase):
  116. config = TestEdk2BuildBase.base_config + \
  117. """
  118. BR2_aarch64=y
  119. BR2_cortex_a72=y
  120. BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN=y
  121. BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
  122. BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin"
  123. BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33=y
  124. BR2_TARGET_BINARIES_MARVELL=y
  125. BR2_TARGET_MV_DDR_MARVELL=y
  126. """
  127. def test_run(self) -> None:
  128. self.assertBinariesExist("ARMADA_EFI.fd", "fip.bin", "ble.bin",
  129. "scp-fw.bin")