test_fwts.py 3.8 KB

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