123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import os
- import subprocess
- import infra.basetest
- VOLNAME_PROP = "Filesystem volume name"
- REVISION_PROP = "Filesystem revision #"
- FEATURES_PROP = "Filesystem features"
- BLOCKCNT_PROP = "Block count"
- INODECNT_PROP = "Inode count"
- RESBLKCNT_PROP = "Reserved block count"
- CHECK_FS_TYPE_CMD = "mount | grep '/dev/root on / type {}'"
- def dumpe2fs_run(builddir, image):
- cmd = ["host/usr/sbin/dumpe2fs", os.path.join("images", image)]
- ret = subprocess.check_output(cmd,
- stderr=open(os.devnull, "w"),
- cwd=builddir,
- env={"LANG": "C"})
- return ret.strip().splitlines()
- def dumpe2fs_getprop(out, prop):
- for line in out:
- fields = line.split(": ")
- if fields[0] == prop:
- return fields[1].strip()
- def boot_img_and_check_fs_type(emulator, builddir, fs_type):
- img = os.path.join(builddir, "images", "rootfs.{}".format(fs_type))
- emulator.boot(arch="armv7",
- kernel="builtin",
- kernel_cmdline=["root=/dev/mmcblk0",
- "rootfstype={}".format(fs_type)],
- options=["-drive", "file={},if=sd".format(img)])
- emulator.login()
- _, exit_code = emulator.run(CHECK_FS_TYPE_CMD.format(fs_type))
- return exit_code
- class TestExt2(infra.basetest.BRTest):
- config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
- """
- BR2_TARGET_ROOTFS_EXT2=y
- BR2_TARGET_ROOTFS_EXT2_2r0=y
- BR2_TARGET_ROOTFS_EXT2_LABEL="foobaz"
- # BR2_TARGET_ROOTFS_TAR is not set
- """
- def test_run(self):
- out = dumpe2fs_run(self.builddir, "rootfs.ext2")
- self.assertEqual(dumpe2fs_getprop(out, VOLNAME_PROP), "foobaz")
- self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "0 (original)")
- exit_code = boot_img_and_check_fs_type(self.emulator,
- self.builddir, "ext2")
- self.assertEqual(exit_code, 0)
- class TestExt2r1(infra.basetest.BRTest):
- config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
- """
- BR2_TARGET_ROOTFS_EXT2=y
- BR2_TARGET_ROOTFS_EXT2_2r1=y
- BR2_TARGET_ROOTFS_EXT2_LABEL="foobar"
- # BR2_TARGET_ROOTFS_TAR is not set
- """
- def test_run(self):
- out = dumpe2fs_run(self.builddir, "rootfs.ext2")
- self.assertEqual(dumpe2fs_getprop(out, VOLNAME_PROP), "foobar")
- self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)")
- self.assertNotIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP))
- exit_code = boot_img_and_check_fs_type(self.emulator,
- self.builddir, "ext2")
- self.assertEqual(exit_code, 0)
- class TestExt3(infra.basetest.BRTest):
- config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
- """
- BR2_TARGET_ROOTFS_EXT2=y
- BR2_TARGET_ROOTFS_EXT2_3=y
- # BR2_TARGET_ROOTFS_TAR is not set
- """
- def test_run(self):
- out = dumpe2fs_run(self.builddir, "rootfs.ext3")
- self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)")
- self.assertIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP))
- self.assertNotIn("extent", dumpe2fs_getprop(out, FEATURES_PROP))
- exit_code = boot_img_and_check_fs_type(self.emulator,
- self.builddir, "ext3")
- self.assertEqual(exit_code, 0)
- class TestExt4(infra.basetest.BRTest):
- config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
- """
- BR2_TARGET_ROOTFS_EXT2=y
- BR2_TARGET_ROOTFS_EXT2_4=y
- BR2_TARGET_ROOTFS_EXT2_BLOCKS=16384
- BR2_TARGET_ROOTFS_EXT2_INODES=3000
- BR2_TARGET_ROOTFS_EXT2_RESBLKS=10
- # BR2_TARGET_ROOTFS_TAR is not set
- """
- def test_run(self):
- out = dumpe2fs_run(self.builddir, "rootfs.ext4")
- self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)")
- self.assertEqual(dumpe2fs_getprop(out, BLOCKCNT_PROP), "16384")
- # Yes there are 8 more inodes than requested
- self.assertEqual(dumpe2fs_getprop(out, INODECNT_PROP), "3008")
- self.assertEqual(dumpe2fs_getprop(out, RESBLKCNT_PROP), "1638")
- self.assertIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP))
- self.assertIn("extent", dumpe2fs_getprop(out, FEATURES_PROP))
- exit_code = boot_img_and_check_fs_type(self.emulator,
- self.builddir, "ext4")
- self.assertEqual(exit_code, 0)
|