diff options
author | Stefan Stanacar <stefanx.stanacar@intel.com> | 2013-07-10 14:33:32 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-07-16 10:04:15 +0100 |
commit | 9c4a02b6c6dd9c450791bde3e9acb61b85244fe1 (patch) | |
tree | 347e4172e77b3c525868cf373f5567ae43f1ee05 | |
parent | 1552f33a3e3daca1730e9fc781e51caf05e1c692 (diff) | |
download | poky-9c4a02b6c6dd9c450791bde3e9acb61b85244fe1.tar.gz |
testimage.bbclass, lib/oeqa/utils/qemurunner.py: make boot timeout configurable and increase it
On a loaded host (such as an AB setup where multiple builds run)
the 200 seconds timeout might not be enough to reach the login prompt.
Also make it configurable so we can set it from local.conf/auto.conf
(From OE-Core rev: e828571683333e6f18ed56a84e114b5e54975bc7)
Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/testimage.bbclass | 6 | ||||
-rw-r--r-- | meta/lib/oeqa/utils/qemurunner.py | 10 |
2 files changed, 11 insertions, 5 deletions
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass index 35c6811c89..f66f514904 100644 --- a/meta/classes/testimage.bbclass +++ b/meta/classes/testimage.bbclass | |||
@@ -7,6 +7,8 @@ DEFAULT_TEST_SUITES_pn-core-image-sato-sdk = "ping ssh connman rpm smart gcc xor | |||
7 | 7 | ||
8 | TEST_SUITES ?= "${DEFAULT_TEST_SUITES}" | 8 | TEST_SUITES ?= "${DEFAULT_TEST_SUITES}" |
9 | 9 | ||
10 | TEST_QEMUBOOT_TIMEOUT ?= "500" | ||
11 | |||
10 | python do_testimage() { | 12 | python do_testimage() { |
11 | testimage_main(d) | 13 | testimage_main(d) |
12 | } | 14 | } |
@@ -65,6 +67,10 @@ def testimage_main(d): | |||
65 | qemu.tmpdir = d.getVar("TMPDIR", True) | 67 | qemu.tmpdir = d.getVar("TMPDIR", True) |
66 | qemu.display = d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True) | 68 | qemu.display = d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True) |
67 | qemu.logfile = os.path.join(testdir, "qemu_boot_log.%s" % d.getVar('DATETIME', True)) | 69 | qemu.logfile = os.path.join(testdir, "qemu_boot_log.%s" % d.getVar('DATETIME', True)) |
70 | try: | ||
71 | qemu.boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT", True)) | ||
72 | except ValueError: | ||
73 | qemu.boottime = 500 | ||
68 | 74 | ||
69 | bb.note("DISPLAY value: %s" % qemu.display) | 75 | bb.note("DISPLAY value: %s" % qemu.display) |
70 | bb.note("rootfs file: %s" % rootfs) | 76 | bb.note("rootfs file: %s" % rootfs) |
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py index 3132b6871b..ec9298863a 100644 --- a/meta/lib/oeqa/utils/qemurunner.py +++ b/meta/lib/oeqa/utils/qemurunner.py | |||
@@ -10,7 +10,7 @@ from oeqa.utils.oeqemuconsole import oeQemuConsole | |||
10 | 10 | ||
11 | class QemuRunner: | 11 | class QemuRunner: |
12 | 12 | ||
13 | def __init__(self, machine, rootfs, display = None, tmpdir = None, logfile = None): | 13 | def __init__(self, machine, rootfs, display = None, tmpdir = None, logfile = None, boottime = 400): |
14 | # Popen object | 14 | # Popen object |
15 | self.runqemu = None | 15 | self.runqemu = None |
16 | 16 | ||
@@ -25,6 +25,7 @@ class QemuRunner: | |||
25 | self.display = display | 25 | self.display = display |
26 | self.tmpdir = tmpdir | 26 | self.tmpdir = tmpdir |
27 | self.logfile = logfile | 27 | self.logfile = logfile |
28 | self.boottime = boottime | ||
28 | 29 | ||
29 | def launch(self, qemuparams = None): | 30 | def launch(self, qemuparams = None): |
30 | 31 | ||
@@ -49,7 +50,6 @@ class QemuRunner: | |||
49 | self.runqemu = subprocess.Popen(launch_cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,preexec_fn=os.setpgrp) | 50 | self.runqemu = subprocess.Popen(launch_cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,preexec_fn=os.setpgrp) |
50 | 51 | ||
51 | bb.note("runqemu started, pid is %s" % self.runqemu.pid) | 52 | bb.note("runqemu started, pid is %s" % self.runqemu.pid) |
52 | # wait at most 30 seconds until qemu pid appears | ||
53 | bb.note("waiting at most 60 seconds for qemu pid") | 53 | bb.note("waiting at most 60 seconds for qemu pid") |
54 | endtime = time.time() + 60 | 54 | endtime = time.time() + 60 |
55 | while not self.is_alive() and time.time() < endtime: | 55 | while not self.is_alive() and time.time() < endtime: |
@@ -59,8 +59,8 @@ class QemuRunner: | |||
59 | bb.note("qemu started - qemu procces pid is %s" % self.qemupid) | 59 | bb.note("qemu started - qemu procces pid is %s" % self.qemupid) |
60 | 60 | ||
61 | console = oeQemuConsole(self.streampath, self.logfile) | 61 | console = oeQemuConsole(self.streampath, self.logfile) |
62 | bb.note("Waiting at most 200 seconds for login banner") | 62 | bb.note("Waiting at most %d seconds for login banner" % self.boottime ) |
63 | (match, text) = console.read_all_timeout("login:", 200) | 63 | (match, text) = console.read_all_timeout("login:", self.boottime) |
64 | 64 | ||
65 | if match: | 65 | if match: |
66 | bb.note("Reached login banner") | 66 | bb.note("Reached login banner") |
@@ -80,7 +80,7 @@ class QemuRunner: | |||
80 | return False | 80 | return False |
81 | else: | 81 | else: |
82 | console.close() | 82 | console.close() |
83 | bb.note("Target didn't reached login boot in 120 seconds") | 83 | bb.note("Target didn't reached login boot in %d seconds" % self.boottime) |
84 | lines = "\n".join(text.splitlines()[-5:]) | 84 | lines = "\n".join(text.splitlines()[-5:]) |
85 | bb.note("Last 5 lines of text:\n%s" % lines) | 85 | bb.note("Last 5 lines of text:\n%s" % lines) |
86 | bb.note("Check full boot log: %s" % self.logfile) | 86 | bb.note("Check full boot log: %s" % self.logfile) |