[OE-core] [PATCH] testimage: Run commands in target and host when test fails

Paul Eggleton paul.eggleton at linux.intel.com
Tue Aug 18 15:23:36 UTC 2015


On Tuesday 18 August 2015 10:18:11 Mariano Lopez wrote:
> On 08/18/2015 03:33 AM, Paul Eggleton wrote:
> > On Monday 17 August 2015 12:41:42 mariano.lopez at linux.intel.com wrote:
> >> From: Mariano Lopez <mariano.lopez at linux.intel.com>
> >> 
> >> This patch modify three files altought two of them
> >> are minimal modifications:
> >> 
> >> testimage.bbclass:
> >>      Create new vars for easy modification of the dump
> >> 
> >> directory and commands to be run on host and target
> >> when a test fails
> >> 
> >>      TESTIMAGE_DUMP_DIR: Directory to save the dumps
> >>      TESTIMAGE_DUMP_TRG: Commands to run on target
> >>      TESTIMAGE_DUMP_HST: Commands to run on host
> > 
> > Can we please use full names (i.e. "...HOST" and "...TARGET")? We're not
> > short of space here ;)
> 
> Sure, no problem
> 
> >> targetcontrol.py:
> >>      Extract vars from the datastore for later use
> >> 
> >> oetest.py:
> >>      - Allow to use the vars defined in testimage class
> >>      - Now able to run commands in the host and dump the
> >>      
> >>        results
> >>      
> >>      - Fix an issue with the condition where to run the
> >>      
> >>        dump commands (Before it run the commands every
> >>        test after a failure, now it runs the commands only
> >>        in tests that failed)
> >>      
> >>      - Fix the output to stdout
> >> 
> >> [YOCTO #8118]
> >> 
> >> Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com>
> >> ---
> >> 
> >>   meta/classes/testimage.bbclass |  9 +++++++++
> >>   meta/lib/oeqa/oetest.py        | 42
> >> 
> >> +++++++++++++++++++++++++++--------------- meta/lib/oeqa/targetcontrol.py
> >> |
> >> 
> >>   3 +++
> >>   3 files changed, 39 insertions(+), 15 deletions(-)
> >> 
> >> diff --git a/meta/classes/testimage.bbclass
> >> b/meta/classes/testimage.bbclass index 140babe..1580a4e 100644
> >> --- a/meta/classes/testimage.bbclass
> >> +++ b/meta/classes/testimage.bbclass
> >> @@ -56,6 +56,15 @@ TESTIMAGEDEPENDS_qemuall =
> >> "qemu-native:do_populate_sysroot qemu-helper-native:d TESTIMAGELOCK =
> >> "${TMPDIR}/testimage.lock"
> >> 
> >>   TESTIMAGELOCK_qemuall = ""
> >> 
> >> +TESTIMAGE_DUMP_DIR ?= "/tmp/oe-saved-tests/"
> >> +
> >> +python () {
> >> +    target_cmds = ["top -bn1", "ps", "free", "df", "_ping", "dmesg",
> >> "netstat -an", "ip address", "_logs"] +    host_cmds = ["top -bn1", "ps",
> >> "free", "df", "memstat", "dmesg", "netstat -an"] +
> >> d.setVar("TESTIMAGE_DUMP_TRG", target_cmds)
> >> +    d.setVar("TESTIMAGE_DUMP_HST", host_cmds)
> >> +}
> > 
> > This is isn't how I would recommend doing this. What I suggested earlier
> > when we talked about this was:
> > 
> > testimage_dump_target() {
> > 
> > 	top -bn1
> > 	ps
> > 	free
> > 	df
> > 	...
> > 
> > }
> > 
> > Then you'd just d.getVar('testimage_dump_target', True), and treat the
> > contents as a complete shell script to be run - i.e. write it to a file
> > with #!/bin/sh as a prefix and run it. As a bonus, the value can be
> > overridden or appended to from elsewhere. (This is similar to how we deal
> > with
> > pkg_postinst_<packagename> for postinstall scripts.)
> 
> Implement this for the host wouldn't be a problem, it gets
> interesting for the target.These commands would be run from
>   the serial console, when the network fails, so it would be
> difficult to run as a shell script. And also would be difficult
> to install the scripts on the image because testimage would
> run after do_rootfs takes place.
> 
> What would be the best approach for the target case?

Alright, in that case just split it on newline and send each command one by 
one.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the Openembedded-core mailing list