1import os 2import infra.basetest 3 4 5class InitSystemBase(infra.basetest.BRTest): 6 7 def start_emulator(self, fs_type, kernel=None, dtb=None, init=None): 8 img = os.path.join(self.builddir, "images", "rootfs.{}".format(fs_type)) 9 infra.img_round_power2(img) 10 11 options = ["-drive", 12 "file={},if=sd,format=raw".format(img), 13 "-M", "vexpress-a9"] 14 15 if kernel is None: 16 kernel = "builtin" 17 else: 18 kernel = os.path.join(self.builddir, "images", kernel) 19 options.extend(["-dtb", os.path.join(self.builddir, "images", 20 "{}.dtb".format(dtb))]) 21 22 kernel_cmdline = ["root=/dev/mmcblk0", 23 "rootfstype={}".format(fs_type), 24 "rootwait", 25 "ro", 26 "console=ttyAMA0"] 27 28 if init is not None: 29 kernel_cmdline.extend(["init={}".format(init)]) 30 31 self.emulator.boot(arch="armv7", 32 kernel=kernel, 33 kernel_cmdline=kernel_cmdline, 34 options=options) 35 36 if init is None: 37 self.emulator.login() 38 39 def check_init(self, path): 40 cmd = "cmp /proc/1/exe {}".format(path) 41 self.assertRunOk(cmd) 42 43 def check_network(self, interface, exitCode=0): 44 cmd = "ip addr show {} |grep inet".format(interface) 45 _, exit_code = self.emulator.run(cmd) 46 self.assertEqual(exit_code, exitCode) 47