| import os |
| import infra |
| import subprocess |
| |
| from infra.basetest import BRTest |
| |
| |
| class TestBmapTools(BRTest): |
| __test__ = False |
| sample_script = "tests/package/sample_bmap_tools.sh" |
| copy_script = 'tests/package/copy-sample-script-to-target.sh' |
| config = \ |
| """ |
| BR2_arm=y |
| BR2_cortex_a8=y |
| BR2_TOOLCHAIN_EXTERNAL=y |
| BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y |
| BR2_PACKAGE_BMAP_TOOLS=y |
| BR2_ROOTFS_POST_BUILD_SCRIPT="{}" |
| BR2_ROOTFS_POST_SCRIPT_ARGS="{}" |
| BR2_TARGET_ROOTFS_EXT2=y |
| BR2_TARGET_ROOTFS_EXT2_4=y |
| BR2_TARGET_ROOTFS_EXT2_SIZE="65536" |
| # BR2_TARGET_ROOTFS_TAR is not set |
| BR2_PACKAGE_UTIL_LINUX=y |
| BR2_PACKAGE_UTIL_LINUX_FALLOCATE=y |
| BR2_PACKAGE_E2FSPROGS=y |
| BR2_PACKAGE_UTIL_LINUX_LIBUUID=y |
| """.format(infra.filepath(copy_script), |
| infra.filepath(sample_script)) |
| timeout = 60 |
| |
| def login(self): |
| img = os.path.join(self.builddir, "images", "rootfs.ext4") |
| self.emulator.boot(arch="armv7", |
| kernel="builtin", |
| kernel_cmdline=["root=/dev/mmcblk0", |
| "rootfstype=ext4"], |
| options=["-drive", "file={},if=sd,format=raw".format(img)]) |
| self.emulator.login() |
| |
| def test_run(self): |
| self.login() |
| cmd = "/root/{}".format(os.path.basename(self.sample_script)) |
| self.assertRunOk(cmd, timeout=20) |
| |
| |
| class TestPy3BmapTools(TestBmapTools): |
| __test__ = True |
| config = TestBmapTools.config + \ |
| """ |
| BR2_PACKAGE_PYTHON3=y |
| """ |
| |
| |
| class TestHostBmapTools(BRTest): |
| config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ |
| """ |
| BR2_PACKAGE_HOST_BMAP_TOOLS=y |
| # BR2_TARGET_ROOTFS_TAR is not set |
| BR2_TARGET_ROOTFS_EXT2=y |
| """ |
| |
| def test_run(self): |
| bmap_x = os.path.join(self.b.builddir, "host", "bin", "bmaptool") |
| src_f = os.path.join(self.b.builddir, "images", "rootfs.ext2") |
| dst_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.copy") |
| map_f = os.path.join(self.b.builddir, "images", "rootfs.ext2.bmap") |
| |
| ret = subprocess.call([bmap_x, "create", "-o", map_f, src_f], |
| stdout=self.b.logfile, |
| stderr=self.b.logfile) |
| self.assertEqual(ret, 0) |
| |
| ret = subprocess.call([bmap_x, "copy", src_f, dst_f], |
| stdout=self.b.logfile, |
| stderr=self.b.logfile) |
| self.assertEqual(ret, 0) |
| |
| with open(src_f, 'rb') as f: |
| src = f.read() |
| with open(dst_f, 'rb') as f: |
| dst = f.read() |
| self.assertEqual(src, dst) |