xref: /OK3568_Linux_fs/buildroot/support/testing/tests/init/test_systemd.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunimport infra.basetest
2*4882a593Smuzhiyunfrom tests.init.base import InitSystemBase as InitSystemBase
3*4882a593Smuzhiyun
4*4882a593Smuzhiyun
5*4882a593Smuzhiyunclass InitSystemSystemdBase(InitSystemBase):
6*4882a593Smuzhiyun    config = \
7*4882a593Smuzhiyun        """
8*4882a593Smuzhiyun        BR2_arm=y
9*4882a593Smuzhiyun        BR2_cortex_a9=y
10*4882a593Smuzhiyun        BR2_ARM_ENABLE_VFP=y
11*4882a593Smuzhiyun        BR2_TOOLCHAIN_EXTERNAL=y
12*4882a593Smuzhiyun        BR2_INIT_SYSTEMD=y
13*4882a593Smuzhiyun        BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
14*4882a593Smuzhiyun        BR2_LINUX_KERNEL=y
15*4882a593Smuzhiyun        BR2_LINUX_KERNEL_CUSTOM_VERSION=y
16*4882a593Smuzhiyun        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204"
17*4882a593Smuzhiyun        BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
18*4882a593Smuzhiyun        BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}"
19*4882a593Smuzhiyun        BR2_LINUX_KERNEL_DTS_SUPPORT=y
20*4882a593Smuzhiyun        BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
21*4882a593Smuzhiyun        # BR2_TARGET_ROOTFS_TAR is not set
22*4882a593Smuzhiyun        """.format(infra.filepath("conf/binfmt-misc-kernel-fragment.config"))
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun    def check_init(self):
25*4882a593Smuzhiyun        super(InitSystemSystemdBase, self).check_init("/lib/systemd/systemd")
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun        # Test all units are OK
28*4882a593Smuzhiyun        output, _ = self.emulator.run("systemctl --no-pager --failed --no-legend")
29*4882a593Smuzhiyun        self.assertEqual(len(output), 0)
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun        # Test we can reach the DBus daemon
32*4882a593Smuzhiyun        self.assertRunOk("busctl --no-pager")
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun        # Test we can read at least one line from the journal
35*4882a593Smuzhiyun        output, _ = self.emulator.run("journalctl --no-pager --lines 1 --quiet")
36*4882a593Smuzhiyun        self.assertEqual(len(output), 1)
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun
39*4882a593Smuzhiyunclass TestInitSystemSystemdRoNetworkd(InitSystemSystemdBase):
40*4882a593Smuzhiyun    config = InitSystemSystemdBase.config + \
41*4882a593Smuzhiyun        """
42*4882a593Smuzhiyun        BR2_SYSTEM_DHCP="eth0"
43*4882a593Smuzhiyun        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
44*4882a593Smuzhiyun        BR2_ROOTFS_OVERLAY="{}"
45*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_SQUASHFS=y
46*4882a593Smuzhiyun        """.format(infra.filepath("tests/init/systemd-factory"))
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun    def test_run(self):
49*4882a593Smuzhiyun        self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9")
50*4882a593Smuzhiyun        self.check_init()
51*4882a593Smuzhiyun        self.check_network("eth0")
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun        # This one must be executed on the target, to check that
54*4882a593Smuzhiyun        # the factory feature works as expected
55*4882a593Smuzhiyun        out, exit_code = self.emulator.run("cat /var/foo/bar")
56*4882a593Smuzhiyun        self.assertEqual(exit_code, 0)
57*4882a593Smuzhiyun        self.assertEqual(out[0], "foobar")
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunclass TestInitSystemSystemdRwNetworkd(InitSystemSystemdBase):
61*4882a593Smuzhiyun    config = InitSystemSystemdBase.config + \
62*4882a593Smuzhiyun        """
63*4882a593Smuzhiyun        BR2_SYSTEM_DHCP="eth0"
64*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_EXT2=y
65*4882a593Smuzhiyun        """
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun    def test_run(self):
68*4882a593Smuzhiyun        self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9")
69*4882a593Smuzhiyun        self.check_init()
70*4882a593Smuzhiyun        self.check_network("eth0")
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun
73*4882a593Smuzhiyunclass TestInitSystemSystemdRoIfupdown(InitSystemSystemdBase):
74*4882a593Smuzhiyun    config = InitSystemSystemdBase.config + \
75*4882a593Smuzhiyun        """
76*4882a593Smuzhiyun        BR2_SYSTEM_DHCP="eth0"
77*4882a593Smuzhiyun        # BR2_PACKAGE_SYSTEMD_NETWORKD is not set
78*4882a593Smuzhiyun        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
79*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_SQUASHFS=y
80*4882a593Smuzhiyun        """
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun    def test_run(self):
83*4882a593Smuzhiyun        self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9")
84*4882a593Smuzhiyun        self.check_init()
85*4882a593Smuzhiyun        self.check_network("eth0")
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun
88*4882a593Smuzhiyunclass TestInitSystemSystemdRwIfupdown(InitSystemSystemdBase):
89*4882a593Smuzhiyun    config = InitSystemSystemdBase.config + \
90*4882a593Smuzhiyun        """
91*4882a593Smuzhiyun        BR2_SYSTEM_DHCP="eth0"
92*4882a593Smuzhiyun        # BR2_PACKAGE_SYSTEMD_NETWORKD is not set
93*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_EXT2=y
94*4882a593Smuzhiyun        """
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun    def test_run(self):
97*4882a593Smuzhiyun        self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9")
98*4882a593Smuzhiyun        self.check_init()
99*4882a593Smuzhiyun        self.check_network("eth0")
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun
102*4882a593Smuzhiyunclass TestInitSystemSystemdRoFull(InitSystemSystemdBase):
103*4882a593Smuzhiyun    config = InitSystemSystemdBase.config + \
104*4882a593Smuzhiyun        """
105*4882a593Smuzhiyun        BR2_SYSTEM_DHCP="eth0"
106*4882a593Smuzhiyun        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
107*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE=y
108*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_BACKLIGHT=y
109*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_BINFMT=y
110*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_COREDUMP=y
111*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y
112*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_HIBERNATE=y
113*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_IMPORTD=y
114*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_LOCALED=y
115*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_LOGIND=y
116*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_MACHINED=y
117*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_POLKIT=y
118*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_QUOTACHECK=y
119*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
120*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_RFKILL=y
121*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y
122*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_SYSUSERS=y
123*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_VCONSOLE=y
124*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_SQUASHFS=y
125*4882a593Smuzhiyun        """
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun    def test_run(self):
128*4882a593Smuzhiyun        self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9")
129*4882a593Smuzhiyun        self.check_init()
130*4882a593Smuzhiyun        self.check_network("eth0")
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun
133*4882a593Smuzhiyunclass TestInitSystemSystemdRwFull(InitSystemSystemdBase):
134*4882a593Smuzhiyun    config = InitSystemSystemdBase.config + \
135*4882a593Smuzhiyun        """
136*4882a593Smuzhiyun        BR2_SYSTEM_DHCP="eth0"
137*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE=y
138*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_BACKLIGHT=y
139*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_BINFMT=y
140*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_COREDUMP=y
141*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y
142*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_HIBERNATE=y
143*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_IMPORTD=y
144*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_LOCALED=y
145*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_LOGIND=y
146*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_MACHINED=y
147*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_POLKIT=y
148*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_QUOTACHECK=y
149*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_RANDOMSEED=y
150*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_RFKILL=y
151*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y
152*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_SYSUSERS=y
153*4882a593Smuzhiyun        BR2_PACKAGE_SYSTEMD_VCONSOLE=y
154*4882a593Smuzhiyun        BR2_TARGET_ROOTFS_EXT2=y
155*4882a593Smuzhiyun        """
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun    def test_run(self):
158*4882a593Smuzhiyun        self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9")
159*4882a593Smuzhiyun        self.check_init()
160*4882a593Smuzhiyun        self.check_network("eth0")
161