import os import subprocess import infra.basetest class InitSystemBase(infra.basetest.BRTest): def start_emulator(self, fs_type, kernel=None, dtb=None, init=None): img = os.path.join(self.builddir, "images", "rootfs.{}".format(fs_type)) subprocess.call(["truncate", "-s", "%1M", img]) options = ["-drive", "file={},if=sd,format=raw".format(img), "-M", "vexpress-a9"] if kernel is None: kernel = "builtin" else: kernel = os.path.join(self.builddir, "images", kernel) options.extend(["-dtb", os.path.join(self.builddir, "images", "{}.dtb".format(dtb))]) kernel_cmdline = ["root=/dev/mmcblk0", "rootfstype={}".format(fs_type), "rootwait", "ro", "console=ttyAMA0"] if init is not None: kernel_cmdline.extend(["init={}".format(init)]) self.emulator.boot(arch="armv7", kernel=kernel, kernel_cmdline=kernel_cmdline, options=options) if init is None: self.emulator.login() def check_init(self, path): cmd = "cmp /proc/1/exe {}".format(path) _, exit_code = self.emulator.run(cmd) self.assertEqual(exit_code, 0) def check_network(self, interface, exitCode=0): cmd = "ip addr show {} |grep inet".format(interface) _, exit_code = self.emulator.run(cmd) self.assertEqual(exit_code, exitCode)