aboutsummaryrefslogtreecommitdiffstats
path: root/lib/oeqa/controllers/zephyrtargetcontrol.py
blob: d3423145096b8ebbf34c9ea116cda1c86ea7eed4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Copyright (C) 2016-2017 Intel Corporation
# Released under the MIT license (see COPYING.MIT)

import os
import sys
import signal
import logging

from oeqa.core.target.__init__ import OETarget
from oeqa.utils.qemuzephyrrunner import QemuZephyrRunner
supported_fstypes = ['elf']

class QemuTargetZephyr(OETarget):
    def __init__(self, logger, ip, server_ip,
            machine='', rootfs='', tmpdir ='',dir_image ='',display=None,
            kernel='',boottime=60,bootlog='',kvm=False,slirp=False,
            dump_dir='',serial_ports=0,ovmf=None,tmpfsdir='' ,target_modules_path='',powercontrol_cmd='',powercontrol_extra_args='',
            serialcontrol_cmd=None,serialcontrol_extra_args='',testimage_dump_target='',testimage_dump_monitor=''):

        timeout =  300
        user = 'root'
        port = serial_ports
        dump_host_cmds = testimage_dump_target

        super(QemuTargetZephyr, self).__init__(logger, ip, server_ip, timeout,
                user, port)

        self.ip = ip
        self.server_ip = server_ip
        self.machine = machine
        self.rootfs = rootfs
        self.qemulog = bootlog
        self.kernel = kernel
        self.kvm = kvm

        # Log QemuRunner log output to a file
        import oe.path
        from oeqa.utils.qemuzephyrrunner import QemuZephyrRunner

        self.qemurunnerlog = bootlog
        logger = logging.getLogger('BitBake.QemuRunner')
        loggerhandler = logging.FileHandler(self.qemurunnerlog)
        loggerhandler.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
        logger.addHandler(loggerhandler)

        self.runner = QemuZephyrRunner(machine=machine, rootfs=rootfs, tmpdir=tmpdir,
                                 deploy_dir_image=dir_image, display=display,
                                 logfile=self.qemulog, boottime=boottime,
                                 use_kvm=kvm, dump_dir=dump_dir,
                                 dump_host_cmds=dump_host_cmds,
                                 logger = logger, tmpfsdir=tmpfsdir)


    def start(self, params=None, runqemuparams=None, extra_bootparams=None):
        if self.runner.start(params, extra_bootparams=extra_bootparams):
            self.ip = self.runner.ip
            self.server_ip = self.runner.server_ip
        else:
            raise RuntimeError("FAILED to start qemu - check the task log and the boot log")

    def serial_readline(self):
        return self.runner.serial_readline()