xref: /OK3568_Linux_fs/buildroot/support/testing/tests/fs/test_jffs2.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunimport os
2*4882a593Smuzhiyun
3*4882a593Smuzhiyunimport infra.basetest
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun
6*4882a593Smuzhiyundef jffs2dump_find_file(files_list, fname):
7*4882a593Smuzhiyun    for file_name in files_list:
8*4882a593Smuzhiyun        file_name = file_name.strip()
9*4882a593Smuzhiyun        if file_name.startswith("Dirent") and file_name.endswith(fname):
10*4882a593Smuzhiyun            return True
11*4882a593Smuzhiyun    return False
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunclass TestJffs2(infra.basetest.BRTest):
15*4882a593Smuzhiyun    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
16*4882a593Smuzhiyun        """
17*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_JFFS2=y
18*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_JFFS2_CUSTOM=y
19*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE=0x40000
20*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y
21*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_JFFS2_PAD=y
22*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_JFFS2_PADSIZE=0x4000000
23*4882a593Smuzhiyun        # BR2_TARGET_ROOTFS_TAR is not set
24*4882a593Smuzhiyun        """
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun    # TODO: there are some scary JFFS2 messages when one starts to
27*4882a593Smuzhiyun    # write files in the rootfs: "jffs2: Newly-erased block contained
28*4882a593Smuzhiyun    # word 0x0 at offset 0x046c0000". To be investigated.
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun    def test_run(self):
31*4882a593Smuzhiyun        img = os.path.join(self.builddir, "images", "rootfs.jffs2")
32*4882a593Smuzhiyun        cmd = ["host/sbin/jffs2dump", "-c", img]
33*4882a593Smuzhiyun        out = infra.run_cmd_on_host(self.builddir, cmd)
34*4882a593Smuzhiyun        out = out.splitlines()
35*4882a593Smuzhiyun        self.assertTrue(jffs2dump_find_file(out, "busybox"))
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun        self.emulator.boot(arch="armv7",
38*4882a593Smuzhiyun                           kernel="builtin",
39*4882a593Smuzhiyun                           kernel_cmdline=["root=/dev/mtdblock0",
40*4882a593Smuzhiyun                                           "rootfstype=jffs2"],
41*4882a593Smuzhiyun                           options=["-drive", "file={},if=pflash".format(img)])
42*4882a593Smuzhiyun        self.emulator.login()
43*4882a593Smuzhiyun        cmd = "mount | grep '/dev/root on / type jffs2'"
44*4882a593Smuzhiyun        self.assertRunOk(cmd)
45