test_iso9660.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import os
  2. import infra.basetest
  3. BASIC_CONFIG = \
  4. """
  5. BR2_x86_pentium4=y
  6. BR2_TOOLCHAIN_EXTERNAL=y
  7. BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
  8. BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
  9. BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2017.05-1078-g95b1dae.tar.bz2"
  10. BR2_TOOLCHAIN_EXTERNAL_GCC_6=y
  11. BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2=y
  12. BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
  13. # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
  14. BR2_TOOLCHAIN_EXTERNAL_CXX=y
  15. BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
  16. BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
  17. BR2_LINUX_KERNEL=y
  18. BR2_LINUX_KERNEL_CUSTOM_VERSION=y
  19. BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204"
  20. BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
  21. BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="{}"
  22. # BR2_TARGET_ROOTFS_TAR is not set
  23. """.format(infra.filepath("conf/minimal-x86-qemu-kernel.config"))
  24. def test_mount_internal_external(emulator, builddir, internal=True):
  25. img = os.path.join(builddir, "images", "rootfs.iso9660")
  26. emulator.boot(arch="i386", options=["-cdrom", img])
  27. emulator.login()
  28. if internal:
  29. cmd = "mount | grep 'rootfs on / type rootfs'"
  30. else:
  31. cmd = "mount | grep '/dev/root on / type iso9660'"
  32. _, exit_code = emulator.run(cmd)
  33. return exit_code
  34. def test_touch_file(emulator):
  35. _, exit_code = emulator.run("touch test")
  36. return exit_code
  37. #
  38. # Grub 2
  39. class TestIso9660Grub2External(infra.basetest.BRTest):
  40. config = BASIC_CONFIG + \
  41. """
  42. BR2_TARGET_ROOTFS_ISO9660=y
  43. # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
  44. BR2_TARGET_GRUB2=y
  45. BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
  46. BR2_TARGET_GRUB2_BUILTIN_MODULES="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
  47. BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
  48. """.format(infra.filepath("conf/grub2.cfg"))
  49. def test_run(self):
  50. exit_code = test_mount_internal_external(self.emulator,
  51. self.builddir, internal=False)
  52. self.assertEqual(exit_code, 0)
  53. exit_code = test_touch_file(self.emulator)
  54. self.assertEqual(exit_code, 1)
  55. class TestIso9660Grub2ExternalCompress(infra.basetest.BRTest):
  56. config = BASIC_CONFIG + \
  57. """
  58. BR2_TARGET_ROOTFS_ISO9660=y
  59. # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
  60. BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y
  61. BR2_TARGET_GRUB2=y
  62. BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
  63. BR2_TARGET_GRUB2_BUILTIN_MODULES="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
  64. BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
  65. """.format(infra.filepath("conf/grub2.cfg"))
  66. def test_run(self):
  67. exit_code = test_mount_internal_external(self.emulator,
  68. self.builddir, internal=False)
  69. self.assertEqual(exit_code, 0)
  70. exit_code = test_touch_file(self.emulator)
  71. self.assertEqual(exit_code, 1)
  72. class TestIso9660Grub2Internal(infra.basetest.BRTest):
  73. config = BASIC_CONFIG + \
  74. """
  75. BR2_TARGET_ROOTFS_ISO9660=y
  76. BR2_TARGET_ROOTFS_ISO9660_INITRD=y
  77. BR2_TARGET_GRUB2=y
  78. BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
  79. BR2_TARGET_GRUB2_BUILTIN_MODULES="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
  80. BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
  81. """.format(infra.filepath("conf/grub2.cfg"))
  82. def test_run(self):
  83. exit_code = test_mount_internal_external(self.emulator,
  84. self.builddir, internal=True)
  85. self.assertEqual(exit_code, 0)
  86. exit_code = test_touch_file(self.emulator)
  87. self.assertEqual(exit_code, 0)
  88. #
  89. # Syslinux
  90. class TestIso9660SyslinuxExternal(infra.basetest.BRTest):
  91. config = BASIC_CONFIG + \
  92. """
  93. BR2_TARGET_ROOTFS_ISO9660=y
  94. # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
  95. BR2_TARGET_ROOTFS_ISO9660_HYBRID=y
  96. BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
  97. BR2_TARGET_SYSLINUX=y
  98. """.format(infra.filepath("conf/isolinux.cfg"))
  99. def test_run(self):
  100. exit_code = test_mount_internal_external(self.emulator,
  101. self.builddir, internal=False)
  102. self.assertEqual(exit_code, 0)
  103. exit_code = test_touch_file(self.emulator)
  104. self.assertEqual(exit_code, 1)
  105. class TestIso9660SyslinuxExternalCompress(infra.basetest.BRTest):
  106. config = BASIC_CONFIG + \
  107. """
  108. BR2_TARGET_ROOTFS_ISO9660=y
  109. # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
  110. BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y
  111. BR2_TARGET_ROOTFS_ISO9660_HYBRID=y
  112. BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
  113. BR2_TARGET_SYSLINUX=y
  114. """.format(infra.filepath("conf/isolinux.cfg"))
  115. def test_run(self):
  116. exit_code = test_mount_internal_external(self.emulator,
  117. self.builddir, internal=False)
  118. self.assertEqual(exit_code, 0)
  119. exit_code = test_touch_file(self.emulator)
  120. self.assertEqual(exit_code, 1)
  121. class TestIso9660SyslinuxInternal(infra.basetest.BRTest):
  122. config = BASIC_CONFIG + \
  123. """
  124. BR2_TARGET_ROOTFS_ISO9660=y
  125. BR2_TARGET_ROOTFS_ISO9660_INITRD=y
  126. BR2_TARGET_ROOTFS_ISO9660_HYBRID=y
  127. BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
  128. BR2_TARGET_SYSLINUX=y
  129. """.format(infra.filepath("conf/isolinux.cfg"))
  130. def test_run(self):
  131. exit_code = test_mount_internal_external(self.emulator,
  132. self.builddir, internal=True)
  133. self.assertEqual(exit_code, 0)
  134. exit_code = test_touch_file(self.emulator)
  135. self.assertEqual(exit_code, 0)