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