Logging¶
TBot logs to stdout and a logfile. The verbosity of stdout can be controlled with -v:
- Default: Show when a testcase starts and ends, when the board powerstate changes and messages from the testcases
-v
: Also showdebug()
messages-vv
: Show each command that is run-vvv
: Add the output to each command that is run-vvvv
: Debug, show everything that is received via SSH in it’s raw form
The logfile is formatted as json
. By default, this is log/<lab>-<board>-<run>.json
but this
can be changes using the -l
commandline parameter. This file contains detailed information about what
happened while running. It is structured as a json array of dictionaries containing information
about events in the order they happened. An event might look like this:
{
"name": "selftest",
"type": [
"testcase",
"begin"
],
"time": "Thu Jan 25 09:49:30 2018"
}
or this:
{
"success": true,
"type": ["tbot", "end"],
"time": "Thu Jan 25 09:49:39 2018"
}
Each event has at least a "type"
being an array of strings and a "time"
,
as an asctime()
. Other keys may exist, depending on the event type. The following event types exist
(But you can add your own, of course):
["testcase", "begin"]
: Start of a testcase, contains no further information than the testcase’s"name"
.["testcase", "end"]
: End of a testcase, contains"name"
and"duration"
of the testcase and whether it returned with"success"
(= no exception was thrown).["shell", ...]
: A shell command was executed. Contains the"command"
, its"exit_code"
and"output"
, a hint, whether documentation generation should include the command ("show"
) and whether the output should be included ("show_stdout"
).["type"][1:]
is the shelltype.["doc", "text"]
: A text message to be included in the tbot log. Conventionally this is interpreted as Markdown."text"
contains the actual message.["doc", "appendix"]
: An appendix to be added to the end of a documentation. For example a file needed for repeating the test run. Has a"title"
and a"text"
.["board", "powerup"]
: Marker that the board was powered on at this point,"board"
contains the name of the board. Usually followed by a shell event with the command used to do so.["board", "boot"]
: Boot"log"
of powering on the board.["board", "poweroff"]
: Marker that the board was powered off at this point."board"
contains the name of the board. Usually followed by a shell event with the command used to do so.["exception"]
: An exception occured at this point. This is not necessarily fatal, in some cases it even is required for a testcase to succeed. Contains the exceptions"name"
and a"trace"
.["msg", verbosity]
: A"text"
message.verbosity
is the Verbosity level.["tbot", "info"]
: Info about this test run:"lab"
and"board"
as specified on the command line,"lab-name"
and"board-name"
from the config and a list of the"testcases"
that were attempted to be run.["tbot", "end"]
: The very last event. Only information is, whether the test run was a"success"
.
As a demonstration of how this log might be used, take a look at the generator scripts:
Demo Backend¶
Demo backend that prints some stats about the U-Boot build
Generate a markdown documentation of the tbot run¶
This script will print out a markdown documentation describing how to reproduce the exact steps that happend during the run.
Generate an html log¶
Create an html representation of the log, using U-Boot’s python test suite’s html log generator as a base
Generate a JUnit XML file¶
Warning
Because JUnit’s design differs from TBot’s a lot, the output is a little bit unusual. It should show all information but not always where you would expect to find it.
-
class
generators.junit.
ShellStep
(command: str, output: str) → None[source]¶ A Shell command execution
-
generators.junit.
parse_log
(log: typing.List[typing.Dict[str, typing.Any]]) → typing.List[generators.junit.TestcaseExecution][source]¶ Parse json log