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