test_bmap_tools.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import os
  2. import infra
  3. import subprocess
  4. from infra.basetest import BRTest
  5. class TestBmapTools(BRTest):
  6. __test__ = False
  7. sample_script = "tests/package/sample_bmap_tools.sh"
  8. copy_script = 'tests/package/copy-sample-script-to-target.sh'
  9. config = \
  10. """
  11. BR2_arm=y
  12. BR2_cortex_a8=y
  13. BR2_TOOLCHAIN_EXTERNAL=y
  14. BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
  15. BR2_PACKAGE_BMAP_TOOLS=y
  16. BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
  17. BR2_ROOTFS_POST_SCRIPT_ARGS="{}"
  18. BR2_TARGET_ROOTFS_EXT2=y
  19. BR2_TARGET_ROOTFS_EXT2_4=y
  20. BR2_TARGET_ROOTFS_EXT2_SIZE="65536"
  21. # BR2_TARGET_ROOTFS_TAR is not set
  22. BR2_PACKAGE_UTIL_LINUX=y
  23. BR2_PACKAGE_UTIL_LINUX_FALLOCATE=y
  24. BR2_PACKAGE_E2FSPROGS=y
  25. BR2_PACKAGE_UTIL_LINUX_LIBUUID=y
  26. """.format(infra.filepath(copy_script),
  27. infra.filepath(sample_script))
  28. timeout = 60
  29. def login(self):
  30. img = os.path.join(self.builddir, "images", "rootfs.ext4")
  31. self.emulator.boot(arch="armv7",
  32. kernel="builtin",
  33. kernel_cmdline=["root=/dev/mmcblk0",
  34. "rootfstype=ext4"],
  35. options=["-drive", "file={},if=sd,format=raw".format(img)])
  36. self.emulator.login()
  37. def test_run(self):
  38. self.login()
  39. cmd = "/root/{}".format(os.path.basename(self.sample_script))
  40. _, exit_code = self.emulator.run(cmd, timeout=20)
  41. self.assertEqual(exit_code, 0)
  42. class TestPy2BmapTools(TestBmapTools):
  43. __test__ = True
  44. config = TestBmapTools.config + \
  45. """
  46. BR2_PACKAGE_PYTHON=y
  47. """
  48. class TestPy3BmapTools(TestBmapTools):
  49. __test__ = True
  50. config = TestBmapTools.config + \
  51. """
  52. BR2_PACKAGE_PYTHON3=y
  53. """
  54. class TestHostBmapTools(BRTest):
  55. config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
  56. """
  57. BR2_PACKAGE_HOST_BMAP_TOOLS=y
  58. # BR2_TARGET_ROOTFS_TAR is not set
  59. BR2_TARGET_ROOTFS_EXT2=y
  60. """
  61. def test_run(self):
  62. bmap_x = os.path.join(self.b.builddir, "host", "bin", "bmaptool")
  63. src_f = os.path.join(self.b.builddir, "images", "rootfs.ext2")
  64. dst_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.copy")
  65. map_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.bmap")
  66. ret = subprocess.call([bmap_x, "create", "-o", map_f, src_f],
  67. stdout=self.b.logfile,
  68. stderr=self.b.logfile)
  69. self.assertEqual(ret, 0)
  70. ret = subprocess.call([bmap_x, "copy", src_f, dst_f],
  71. stdout=self.b.logfile,
  72. stderr=self.b.logfile)
  73. self.assertEqual(ret, 0)
  74. with open(src_f, 'rb') as f:
  75. src = f.read()
  76. with open(dst_f, 'rb') as f:
  77. dst = f.read()
  78. self.assertEqual(src, dst)