"""Test firewalld for both systemd and sysvinit.""" import os import time import infra.basetest class TestFirewalldSystemd(infra.basetest.BRTest): """Build the kernel as firewalld requires several the nftable options.""" config = """ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_VFP=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y BR2_INIT_SYSTEMD=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.61" BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_PACKAGE_PYTHON3=y BR2_PACKAGE_FIREWALLD=y BR2_TARGET_ROOTFS_CPIO=y # BR2_TARGET_ROOTFS_TAR is not set """ def test_run(self): cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") kernel_file = os.path.join(self.builddir, "images", "zImage") dtb_file = os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb") self.emulator.boot(arch="armv7", kernel=kernel_file, kernel_cmdline=["console=ttyAMA0,115200"], options=[ "-initrd", cpio_file, "-dtb", dtb_file, "-M", "vexpress-a9" ]) # It takes quite some time for the system to boot with firewalld, self.emulator.login(timeout=120) # It may take some time for firewalld to finish startup. # Give it at least 15 seconds. is_active = False for i in range(15): output, _ = self.emulator.run("systemctl is-active firewalld") if output[0] == "active": is_active = True break time.sleep(1) if not is_active: self.fail("firewalld failed to activate!") cmd = "firewall-cmd --state" output, exit_code = self.emulator.run(cmd, timeout=10) self.assertIn("running", output[0]) self.assertEqual(exit_code, 0) class TestFirewalldSysVInit(infra.basetest.BRTest): """Build the kernel as firewalld requires several nftable options.""" config = """ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_VFP=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.61" BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_PACKAGE_PYTHON3=y BR2_PACKAGE_FIREWALLD=y BR2_TARGET_ROOTFS_CPIO=y # BR2_TARGET_ROOTFS_TAR is not set """ def test_run(self): cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") kernel_file = os.path.join(self.builddir, "images", "zImage") dtb_file = os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb") self.emulator.boot(arch="armv7", kernel=kernel_file, kernel_cmdline=["console=ttyAMA0,115200"], options=[ "-initrd", cpio_file, "-dtb", dtb_file, "-M", "vexpress-a9" ]) # It takes quite some time for the system to boot with firewalld. self.emulator.login(timeout=120) cmd = "firewall-cmd --state" output, exit_code = self.emulator.run(cmd, timeout=10) self.assertIn("running", output[0]) self.assertEqual(exit_code, 0)