[U-Boot] U-Boot: using tbot for U-Boot tests was: [PATCH V2 1/7] test/py: Implement pytest infrastructure

Heiko Schocher hs at denx.de
Sat Jan 16 07:29:25 CET 2016


Hello Simon,

Am 15.01.2016 um 00:12 schrieb Simon Glass:
> Hi Heiko,
>
> On 16 December 2015 at 22:45, Heiko Schocher <hs at denx.de> wrote:
>> Hello Stephen,
>>
>>
>> Am 16.12.2015 um 17:27 schrieb Stephen Warren:
>>>
>>> On 12/16/2015 08:11 AM, Michal Simek wrote:
>>>>
>>>> On 9.12.2015 17:32, Stephen Warren wrote:
>>>>>
>>>>> On 12/02/2015 03:18 PM, Stephen Warren wrote:
[...]
>>> In my current setup I leave the board on all the time (or rather, manually
>>> turn on the power when
>>> I'm about to run the tests). Automating control of the power source is a
>>> step I'll take later.
>>
>>
>> Maybe you give tbot (I mentioned it in this thread) a chance?
>>
>> There, this things are automated, also you can do linux (and other console
>> based)
>> tests ... Currently added a testcase [1] which adds patches from patchwork,
>> which are in a users ToDo list, to a git tree! In this case it is a u-boot
>> git
>> tree ... checks them with checkpatch, compiles it, and tries the new image
>> on
>> the board and calls testcases ... fully automated in a now weekly build [2]
>> ...
>> (only weekly, but thats a setup parameter in buildbot, as I have tbot and
>> buildbot
>> running on a raspberry pi)
>> and don;t forget, I have the board not where I run tbot, the boards are
>> ~1000km
>> from me .. So, it is possible to add a U-Boot Testsetup on a server,
>> and test boards all over the world ...
>
> This sounds like a great development.

Thanks!

> How can we get this so that it can be used by U-Boot people? Do you
> think you could add a README to the mainline, or some scripts to aid
> setting it up? I would be interested in setting up a few boards that
> run continuous testing, and I suspect others would also if it were
> easier.

Yes, good idea!

I think about preparing ASAP a patch for U-Boot, creating:
u-boot:/tools/tbot/README -> common infos about tbot
u-boot:/tools/tbot/README.install -> HowTo install / using it
u-boot:/tools/tbot/README.create_a_testcase
u-boot:/tools/tbot/README-ToDo -> my current list of ToDo

Is this Ok?

As a motivation for using tbot ;-)  I just created a video from tbot
running the smartweb testcase:
https://github.com/hsdenx/tbot/blob/master/src/tc/tc_board_smartweb.py

https://www.youtube.com/watch?v=ZwUA0QNDnP4

Keep in mind, that I run tbot for the video here on my laptop at my home
in hungary, the smartweb board is in munich/germany.

I use this testcase also in my weekly buildbot setup on my raspberry pi [2].
Tbot logs (not only U-Boot also linux tests) can be found there for
interested people
(Remark: Wolfgang said, the logs are unreadable, because filled with a
lot of unnecessary developer output, Yes, he is correct!! I have on my
ToDo list, to add a new logging level, where only board input/output is
printed ... the loglevel tbot uses is definded in the board config file
https://github.com/hsdenx/tbot/blob/master/tbot_smartweb.cfg#L13 )

What is done in the smartweb testcase:
- rm old u-boot code, checkout current U-Boot master
   @ 00:14
- set a toolchain
   @ 00:18
- get all patchwork patches from my patchwork ToDo list
   calling testcase:
   https://github.com/hsdenx/tbot/blob/master/src/tc/tc_workfd_get_patchwork_number_list.py
   @ 00:18
- adding some patchwork patches, I have in a python list
   (This list is setup in the board config file:
    https://github.com/hsdenx/tbot/blob/master/tbot_smartweb.cfg#L34
   (Heiko speculating: it would be nice if tbot removes from
    this list a patchworkpatchnumber, if it detects, that this patch
    is already now in mainline ... )
- apply local patches (If there are)
- apply the patchwork patches
   https://github.com/hsdenx/tbot/blob/master/src/tc/tc_workfd_apply_patchwork_patches.py
   currently not failing, when checkpatch detects errors/warnings
   @ 00:59
- compile U-Boot
   @ 02:35
- update SPL on the board
   @ 03:26
- update U-Boot on the board
   @ 03:55
- start DFU testcase on the board
   @ 04:13
   https://github.com/hsdenx/tbot/blob/master/src/tc/tc_ub_dfu.py

   This testcase starts the "dfu" U-Boot command, which waits until Ctrl-C
   is pressed
   Then I start on the lab PC the Userspace tool "dfu-util" which communicates
   over USB with the smartweb board ... and do some dfu up and downloads.

- at the end save the SPL and U-Boot bins, so I always have the lastest
   working bins [1]

- power off the board

bye,
Heiko

[1] saving the latest working bins is interesting, because if a current
   U-Boot does not work on he board, I :
   - can restore the board with a debugger through a testcase, using the
     latest working bins.
   - and/or I can start a testcase which starts "git bisect" testcase:
     https://github.com/hsdenx/tbot/blob/master/src/tc/tc_board_git_bisect.py

     This testcase needs 3 variables:
     tb.board_git_bisect_get_source_tc: Name of testcase which get/switches
       into the source tree you want to start a git bisect session
     tb.board_git_bisect_call_tc: Name of testcase which gets started,
       when "git bisect" waits for good or bad ... This testcase must
       find out if current source is good or bad.
     tb.board_git_bisect_good_commit: last working bins (Therefore I save
       the bins -> so I have the commit ;-)

     This testcase is independent from U-Boot ... you can also use it
     in a linux tree or other source code ...

   I used this testcase for example here:
   http://xeidos.ddns.net/buildbot/builders/tqm5200s/builds/3/steps/shell/logs/tbotlog
   at the end it calls "git bisect log" (search for this string), and
   it found the first bad commit, and I did nothing else as starting
   this testcase :-D

[2]http://xeidos.ddns.net/buildbot/tgrid
    http://xeidos.ddns.net/buildbot/builders/smartweb_dfu
    (If you do not see a webpage, reload it ... my DSL upload speed
     is not the fastest, also if my kids play ps4 games, it is busy)
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list