buildroot/support/testing/tests/package/test_firewalld.py

103 lines
3.8 KiB
Python

"""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)