test_fwts.py 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import os
  2. import infra.basetest
  3. class TestFwts(infra.basetest.BRTest):
  4. config = \
  5. """
  6. BR2_aarch64=y
  7. BR2_TOOLCHAIN_EXTERNAL=y
  8. BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
  9. BR2_TARGET_ROOTFS_EXT2=y
  10. BR2_TARGET_ROOTFS_EXT2_4=y
  11. # BR2_TARGET_ROOTFS_TAR is not set
  12. BR2_TARGET_ROOTFS_EXT2_SIZE="128M"
  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.28"
  18. BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
  19. BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
  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.11"
  27. BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa"
  28. BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
  29. BR2_PACKAGE_FWTS=y
  30. BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE=y
  31. BR2_PACKAGE_HOST_GENIMAGE=y
  32. BR2_PACKAGE_HOST_DOSFSTOOLS=y
  33. BR2_PACKAGE_HOST_MTOOLS=y
  34. BR2_PACKAGE_HOST_QEMU=y
  35. BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
  36. """
  37. def __init__(self, names):
  38. """Setup common test variables."""
  39. super(TestFwts, self).__init__(names)
  40. """All EDK2 releases <= edk2-stable202408 can't be fetched from git
  41. anymore due to a missing git submodule as reported by [1].
  42. Usually Buildroot fall-back using https://sources.buildroot.net
  43. thanks to BR2_BACKUP_SITE where a backup of the generated archive
  44. is available. But the BRConfigTest remove BR2_BACKUP_SITE default
  45. value while generating the .config used by TestFwts.
  46. Replace the BR2_BACKUP_SITE override from BRConfigTest in order
  47. to continue testing EDK2 package using the usual backup site.
  48. To be removed with the next EDK2 version bump using this commit
  49. [2].
  50. [1] https://github.com/tianocore/edk2/issues/6398
  51. [2] https://github.com/tianocore/edk2/commit/95d8a1c255cfb8e063d679930d08ca6426eb5701
  52. """
  53. self.config = self.config.replace('BR2_BACKUP_SITE=""\n', '')
  54. def test_run(self):
  55. hda = os.path.join(self.builddir, "images", "disk.img")
  56. flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd")
  57. flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd")
  58. self.emulator.boot(arch="aarch64",
  59. options=["-M", "sbsa-ref",
  60. "-cpu", "cortex-a57",
  61. "-m", "512M",
  62. "-pflash", flash0,
  63. "-pflash", flash1,
  64. "-hda", hda])
  65. self.emulator.login()
  66. # Check the program can execute.
  67. self.assertRunOk("fwts --version")
  68. # We run a simple UEFI runtime service variable interface test
  69. # suite. Those tests are using the fwts efi_runtime kernel
  70. # module.
  71. self.assertRunOk("fwts -q uefirtvariable", timeout=30)
  72. # The previous fwts invocation is expected to have created a
  73. # "results.log" report. We check the file exists and contains
  74. # a known header string.
  75. expected_str = "Results generated by fwts:"
  76. cmd = f"grep -F '{expected_str}' results.log"
  77. out, ret = self.emulator.run(cmd)
  78. self.assertEqual(ret, 0)
  79. self.assertTrue(out[0].startswith(expected_str))