All of lore.kernel.org
 help / color / mirror / Atom feed
* RFC: automated runtime testing on real hardware
@ 2013-08-13 11:00 Paul Eggleton
  2013-08-24  3:52 ` Darren Hart
  0 siblings, 1 reply; 5+ messages in thread
From: Paul Eggleton @ 2013-08-13 11:00 UTC (permalink / raw)
  To: yocto

Hi all,

As part of the feature development work for 1.5, we've recently added the 
ability to easily define runtime tests written in python, replacing the old 
shell-based imagetest.bbclass. However, for 1.5 this is limited to running the 
tests within a QEMU environment; the obvious and desirable next step is to be 
able to have these run on real hardware. Clearly this presents some 
challenges, such as how to manage access to the hardware if you have multiple 
builders potentially wanting to use the same board at around the same time.

Automated testing on real hardware is something that a lot of us do already, 
but the likelihood is that we've all been coming up with our own solutions for 
this, so it would be really great if we could have a single working solution 
to cover the generally applicable use cases. As a start though it would be 
interesting to hear from people who have existing test setups or who are 
generally interested in this area. I'd like to hear feedback on the following:

 * What hardware setup do you use for automated testing?

 * Do you use any software to manage the hardware? Does this include any 
existing open source tools?

 * What would you like to see in a common framework to enable this kind of 
testing?

For reference, some discussion on this started in another thread [1], but I'd 
like to throw this out to a more general audience.

Thanks,
Paul

[1] https://lists.yoctoproject.org/pipermail/yocto/2013-August/017687.html

-- 

Paul Eggleton
Intel Open Source Technology Centre


^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: RFC: automated runtime testing on real hardware
@ 2013-08-15 22:13 George Harris
  0 siblings, 0 replies; 5+ messages in thread
From: George Harris @ 2013-08-15 22:13 UTC (permalink / raw)
  To: paul.eggleton; +Cc: yocto

[-- Attachment #1: Type: text/plain, Size: 3000 bytes --]

To this point, our testing strategy uses Yocto, but is not contained within
Yocto. As part of a build, we produce two images: (1) device image, and (2)
image containing everything necessary to run tests against a device. The
second part is important to us, as we want a separation between the device
and tests run against the device. Tests against a device are always
performed across the network, between (1) and (2). We want anyone to easily
be able to run or develop tests without needing to setup a workstation or a
workspace. A separate testing image, runnable in QEMU, allows anyone to
pick up a build and start testing with minimal effort. We also build a
toolchain containing QEMU to ensure that everyone uses the same version and
features of QEMU. Finally, we have many tests, some which take longer than
24 hours to run. We want to parallelize these tests and run them across
multiple systems at the same time. Because of this, we take the output from
a build and run tests. Some tests may make sense to run every build, but
other tests are run periodically throughout the day independent of the
build.

Both our build system and test system are based on Jenkins. One job will
build the code, and another will run tests. The test job is configured to
run multiple types of tests in multiple configurations, all concurrently.

As our tests are always run across the network, tests need not know if the
device under test is a simulation or hardware. Jenkins is used to manage
requests for hardware; if a configuration requires the use of a piece of
hardware, that part of the job blocks until the hardware is available. When
the hardware becomes available, Jenkins will allow that part of the job to
start.

As for the arrangement of the hardware, we have a testbed consisting of
several devices. Each device is connected to the network and hooked up to a
power switch that is connected to the network. When a test is run against a
device, that device is reprogrammed, power cycled, then the tests are run.

To answer some of your specific questions:

 * What hardware setup do you use for automated testing?
>
There is a testbed of devices, each connected to the network with a fixed
IP address. Jenkins is used to run tests, and also manages access to
hardware via labels. When a Jenkins test job requires a piece of hardware
and that hardware is available, a configuration file is used to map the
device to use to its IP address. From there, tests are run against the
device.

 * Do you use any software to manage the hardware? Does this include any
> existing open source tools?
>
The only software we used to manage the hardware is Jenkins. We do use
other software to manipulate the hardware. For example, a power switch
accessible over the network, a DHCP server to assign the proper address,
etc.

Likely this will not help you develop a hardware testing solution in Yocto.
Maybe it will give you a data point though.

- George

[-- Attachment #2: Type: text/html, Size: 3460 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-08-27 15:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-13 11:00 RFC: automated runtime testing on real hardware Paul Eggleton
2013-08-24  3:52 ` Darren Hart
2013-08-27 11:11   ` Paul Eggleton
2013-08-27 15:20     ` Darren Hart
  -- strict thread matches above, loose matches on Subject: below --
2013-08-15 22:13 George Harris

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.