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 TestPy2BmapTools(TestBmapTools): 49 __test__ = True 50 config = TestBmapTools.config + \ 51 """ 52 BR2_PACKAGE_PYTHON=y 53 """ 54 55 56class TestPy3BmapTools(TestBmapTools): 57 __test__ = True 58 config = TestBmapTools.config + \ 59 """ 60 BR2_PACKAGE_PYTHON3=y 61 """ 62 63 64class TestHostBmapTools(BRTest): 65 config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ 66 """ 67 BR2_PACKAGE_HOST_BMAP_TOOLS=y 68 # BR2_TARGET_ROOTFS_TAR is not set 69 BR2_TARGET_ROOTFS_EXT2=y 70 """ 71 72 def test_run(self): 73 bmap_x = os.path.join(self.b.builddir, "host", "bin", "bmaptool") 74 src_f = os.path.join(self.b.builddir, "images", "rootfs.ext2") 75 dst_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.copy") 76 map_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.bmap") 77 78 ret = subprocess.call([bmap_x, "create", "-o", map_f, src_f], 79 stdout=self.b.logfile, 80 stderr=self.b.logfile) 81 self.assertEqual(ret, 0) 82 83 ret = subprocess.call([bmap_x, "copy", src_f, dst_f], 84 stdout=self.b.logfile, 85 stderr=self.b.logfile) 86 self.assertEqual(ret, 0) 87 88 with open(src_f, 'rb') as f: 89 src = f.read() 90 with open(dst_f, 'rb') as f: 91 dst = f.read() 92 self.assertEqual(src, dst) 93