Re: [OE-core] [PATCH 4/6] oeqa/targetcontrol.py: modify it to test runqemu

2017-03-20 Thread Robert Yang



On 03/17/2017 07:54 PM, Richard Purdie wrote:

On Thu, 2017-03-16 at 03:13 -0700, Robert Yang wrote:

Modify the following files to test runqemu:
targetcontrol.py
utils/commands.py
utils/qemurunner.py

We need simulate how "runqemu" works in command line, so when test
"runqemu", the targetcontrol.py, utils/commands.py and
utils/qemurunner.py don't have to find the rootfs or set env vars.

[YOCTO #10249]

Signed-off-by: Robert Yang 
---
 meta/lib/oeqa/targetcontrol.py| 20 +++-
 meta/lib/oeqa/utils/commands.py   | 13 +++--
 meta/lib/oeqa/utils/qemurunner.py | 28 +---
 3 files changed, 43 insertions(+), 18 deletions(-)


This change breaks "oe-selftest -r wic.Wic.test_qemu_efi" which just
hangs afterwards.


Sorry, I will fix it.

// Robert



Cheers,

Richard


--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 4/6] oeqa/targetcontrol.py: modify it to test runqemu

2017-03-17 Thread Richard Purdie
On Thu, 2017-03-16 at 03:13 -0700, Robert Yang wrote:
> Modify the following files to test runqemu:
> targetcontrol.py
> utils/commands.py
> utils/qemurunner.py
> 
> We need simulate how "runqemu" works in command line, so when test
> "runqemu", the targetcontrol.py, utils/commands.py and
> utils/qemurunner.py don't have to find the rootfs or set env vars.
> 
> [YOCTO #10249]
> 
> Signed-off-by: Robert Yang 
> ---
>  meta/lib/oeqa/targetcontrol.py| 20 +++-
>  meta/lib/oeqa/utils/commands.py   | 13 +++--
>  meta/lib/oeqa/utils/qemurunner.py | 28 +---
>  3 files changed, 43 insertions(+), 18 deletions(-)

This change breaks "oe-selftest -r wic.Wic.test_qemu_efi" which just
hangs afterwards.

Cheers,

Richard
-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH 4/6] oeqa/targetcontrol.py: modify it to test runqemu

2017-03-16 Thread Robert Yang
Modify the following files to test runqemu:
targetcontrol.py
utils/commands.py
utils/qemurunner.py

We need simulate how "runqemu" works in command line, so when test
"runqemu", the targetcontrol.py, utils/commands.py and
utils/qemurunner.py don't have to find the rootfs or set env vars.

[YOCTO #10249]

Signed-off-by: Robert Yang 
---
 meta/lib/oeqa/targetcontrol.py| 20 +++-
 meta/lib/oeqa/utils/commands.py   | 13 +++--
 meta/lib/oeqa/utils/qemurunner.py | 28 +---
 3 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 0ad3a6b..8d11cf0 100644
--- a/meta/lib/oeqa/targetcontrol.py
+++ b/meta/lib/oeqa/targetcontrol.py
@@ -117,10 +117,15 @@ class QemuTarget(BaseTarget):
 
 super(QemuTarget, self).__init__(d)
 
-self.image_fstype = image_fstype or self.get_image_fstype(d)
+self.rootfs = ''
+self.kernel = ''
+self.image_fstype = ''
+
+if d.getVar('FIND_ROOTFS') == '1':
+self.image_fstype = image_fstype or self.get_image_fstype(d)
+self.rootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"),  
d.getVar("IMAGE_LINK_NAME") + '.' + self.image_fstype)
+self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), 
d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin')
 self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % 
self.datetime)
-self.rootfs = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"),  
d.getVar("IMAGE_LINK_NAME") + '.' + self.image_fstype)
-self.kernel = os.path.join(d.getVar("DEPLOY_DIR_IMAGE"), 
d.getVar("KERNEL_IMAGETYPE", False) + '-' + d.getVar('MACHINE', False) + '.bin')
 dump_target_cmds = d.getVar("testimage_dump_target")
 dump_host_cmds = d.getVar("testimage_dump_host")
 dump_dir = d.getVar("TESTIMAGE_DUMP_DIR")
@@ -176,8 +181,13 @@ class QemuTarget(BaseTarget):
 bb.note("Qemu log file: %s" % self.qemulog)
 super(QemuTarget, self).deploy()
 
-def start(self, params=None, ssh=True, extra_bootparams=None, 
runqemuparams=''):
-if self.runner.start(params, get_ip=ssh, 
extra_bootparams=extra_bootparams, runqemuparams=runqemuparams):
+def start(self, params=None, ssh=True, extra_bootparams='', 
runqemuparams='', launch_cmd=''):
+if launch_cmd:
+start = self.runner.launch(get_ip=ssh, launch_cmd=launch_cmd)
+else:
+start = self.runner.start(params, get_ip=ssh, 
extra_bootparams=extra_bootparams, runqemuparams=runqemuparams)
+
+if start:
 if ssh:
 self.ip = self.runner.ip
 self.server_ip = self.runner.server_ip
diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py
index 82c5908..6528a98 100644
--- a/meta/lib/oeqa/utils/commands.py
+++ b/meta/lib/oeqa/utils/commands.py
@@ -218,7 +218,10 @@ def create_temp_layer(templayerdir, templayername, 
priority=999, recipepathspec=
 
 
 @contextlib.contextmanager
-def runqemu(pn, ssh=True, runqemuparams='', image_fstype=None):
+def runqemu(pn, ssh=True, runqemuparams='', image_fstype=None, 
launch_cmd=None):
+"""
+launch_cmd means directly run the command, don't need set rootfs or env 
vars.
+"""
 
 import bb.tinfoil
 import bb.build
@@ -230,6 +233,12 @@ def runqemu(pn, ssh=True, runqemuparams='', 
image_fstype=None):
 import oeqa.targetcontrol
 tinfoil.config_data.setVar("TEST_LOG_DIR", "${WORKDIR}/testimage")
 tinfoil.config_data.setVar("TEST_QEMUBOOT_TIMEOUT", "1000")
+# Tell QemuTarget() whether need find rootfs/kernel or not
+if launch_cmd:
+tinfoil.config_data.setVar("FIND_ROOTFS", '0')
+else:
+tinfoil.config_data.setVar("FIND_ROOTFS", '1')
+
 recipedata = tinfoil.parse_recipe(pn)
 
 # The QemuRunner log is saved out, but we need to ensure it is at the 
right
@@ -260,7 +269,7 @@ def runqemu(pn, ssh=True, runqemuparams='', 
image_fstype=None):
 try:
 qemu.deploy()
 try:
-qemu.start(ssh=ssh, runqemuparams=runqemuparams)
+qemu.start(ssh=ssh, runqemuparams=runqemuparams, 
launch_cmd=launch_cmd)
 except bb.build.FuncFailed:
 raise Exception('Failed to start QEMU - see the logs in %s' % 
logdir)
 
diff --git a/meta/lib/oeqa/utils/qemurunner.py 
b/meta/lib/oeqa/utils/qemurunner.py
index 59dc11d..aebeaaf 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -95,7 +95,7 @@ class QemuRunner:
 self._dump_host()
 raise SystemExit
 
-def start(self, qemuparams = None, get_ip = True, extra_bootparams = None, 
runqemuparams=''):
+def start(self, qemuparams = None, get_ip = True, extra_bootparams = None, 
runqemuparams='', launch_cmd=None):
 if