diff options
| -rw-r--r-- | meta/classes/testimage.bbclass | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass index 9ecef68418..86bf22ef02 100644 --- a/meta/classes/testimage.bbclass +++ b/meta/classes/testimage.bbclass | |||
| @@ -85,6 +85,7 @@ def testimage_main(d): | |||
| 85 | import oeqa.runtime | 85 | import oeqa.runtime |
| 86 | import re | 86 | import re |
| 87 | import shutil | 87 | import shutil |
| 88 | import time | ||
| 88 | from oeqa.oetest import runTests | 89 | from oeqa.oetest import runTests |
| 89 | from oeqa.utils.sshcontrol import SSHControl | 90 | from oeqa.utils.sshcontrol import SSHControl |
| 90 | from oeqa.utils.qemurunner import QemuRunner | 91 | from oeqa.utils.qemurunner import QemuRunner |
| @@ -114,21 +115,23 @@ def testimage_main(d): | |||
| 114 | #will handle fs type eventually, stick with ext3 for now | 115 | #will handle fs type eventually, stick with ext3 for now |
| 115 | #make a copy of the original rootfs and use that for tests | 116 | #make a copy of the original rootfs and use that for tests |
| 116 | origrootfs=os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME",True) + '.ext3') | 117 | origrootfs=os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME",True) + '.ext3') |
| 117 | rootfs=os.path.join(testdir, d.getVar("IMAGE_LINK_NAME", True) + '-testimage.ext3') | 118 | testrootfs=os.path.join(testdir, d.getVar("IMAGE_LINK_NAME", True) + '-testimage.ext3') |
| 118 | try: | 119 | try: |
| 119 | shutil.copyfile(origrootfs, rootfs) | 120 | shutil.copyfile(origrootfs, testrootfs) |
| 120 | except Exception as e: | 121 | except Exception as e: |
| 121 | bb.fatal("Error copying rootfs: %s" % e) | 122 | bb.fatal("Error copying rootfs: %s" % e) |
| 122 | 123 | ||
| 123 | qemu = QemuRunner(machine, rootfs) | ||
| 124 | qemu.tmpdir = d.getVar("TMPDIR", True) | ||
| 125 | qemu.deploy_dir_image = d.getVar("DEPLOY_DIR_IMAGE", True) | ||
| 126 | qemu.display = d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True) | ||
| 127 | qemu.logfile = os.path.join(testdir, "qemu_boot_log.%s" % d.getVar('DATETIME', True)) | ||
| 128 | try: | 124 | try: |
| 129 | qemu.boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT", True)) | 125 | boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT", True)) |
| 130 | except ValueError: | 126 | except ValueError: |
| 131 | qemu.boottime = 500 | 127 | boottime = 1000 |
| 128 | |||
| 129 | qemu = QemuRunner(machine=machine, rootfs=testrootfs, | ||
| 130 | tmpdir = d.getVar("TMPDIR", True), | ||
| 131 | deploy_dir_image = d.getVar("DEPLOY_DIR_IMAGE", True), | ||
| 132 | display = d.getVar("BB_ORIGENV", False).getVar("DISPLAY", True), | ||
| 133 | logfile = os.path.join(testdir, "qemu_boot_log.%s" % d.getVar('DATETIME', True)), | ||
| 134 | boottime = boottime) | ||
| 132 | 135 | ||
| 133 | qemuloglink = os.path.join(testdir, "qemu_boot_log") | 136 | qemuloglink = os.path.join(testdir, "qemu_boot_log") |
| 134 | if os.path.islink(qemuloglink): | 137 | if os.path.islink(qemuloglink): |
| @@ -141,12 +144,12 @@ def testimage_main(d): | |||
| 141 | os.unlink(sshloglink) | 144 | os.unlink(sshloglink) |
| 142 | os.symlink(sshlog, sshloglink) | 145 | os.symlink(sshlog, sshloglink) |
| 143 | 146 | ||
| 144 | |||
| 145 | bb.note("DISPLAY value: %s" % qemu.display) | 147 | bb.note("DISPLAY value: %s" % qemu.display) |
| 146 | bb.note("rootfs file: %s" % rootfs) | 148 | bb.note("rootfs file: %s" % qemu.rootfs) |
| 147 | bb.note("Qemu log file: %s" % qemu.logfile) | 149 | bb.note("Qemu log file: %s" % qemu.logfile) |
| 148 | bb.note("SSH log file: %s" % sshlog) | 150 | bb.note("SSH log file: %s" % sshlog) |
| 149 | 151 | ||
| 152 | pn = d.getVar("PN", True) | ||
| 150 | #catch exceptions when loading or running tests (mostly our own errors) | 153 | #catch exceptions when loading or running tests (mostly our own errors) |
| 151 | try: | 154 | try: |
| 152 | if qemu.launch(): | 155 | if qemu.launch(): |
| @@ -156,14 +159,19 @@ def testimage_main(d): | |||
| 156 | tc.qemu = qemu | 159 | tc.qemu = qemu |
| 157 | tc.target = SSHControl(host=qemu.ip,logfile=sshlog) | 160 | tc.target = SSHControl(host=qemu.ip,logfile=sshlog) |
| 158 | # run tests and get the results | 161 | # run tests and get the results |
| 162 | starttime = time.time() | ||
| 159 | result = runTests(tc) | 163 | result = runTests(tc) |
| 160 | 164 | stoptime = time.time() | |
| 161 | if result.wasSuccessful(): | 165 | if result.wasSuccessful(): |
| 162 | bb.note("All required tests passed") | 166 | bb.plain("%s - Ran %d test%s in %.3fs" % (pn, result.testsRun, result.testsRun != 1 and "s" or "", stoptime - starttime)) |
| 167 | msg = "%s - OK - All required tests passed" % pn | ||
| 168 | skipped = len(result.skipped) | ||
| 169 | if skipped: | ||
| 170 | msg += " (skipped=%d)" % skipped | ||
| 171 | bb.plain(msg) | ||
| 163 | else: | 172 | else: |
| 164 | raise bb.build.FuncFailed("Some tests failed. You should check the task log and the ssh log. (ssh log is %s" % sshlog) | 173 | raise bb.build.FuncFailed("%s - FAILED - check the task log and the ssh log" % pn ) |
| 165 | |||
| 166 | else: | 174 | else: |
| 167 | raise bb.build.FuncFailed("Failed to start qemu. You should check the task log and the qemu boot log (qemu log is %s)" % qemu.logfile) | 175 | raise bb.build.FuncFailed("%s - FAILED to start qemu - check the task log and the boot log" % pn) |
| 168 | finally: | 176 | finally: |
| 169 | qemu.kill() | 177 | qemu.kill() |
