Configuration¶
Warning
This is the documentation for an old version of tbot. Please head over to
for the latest docs!
tbot’s configuration is also done in python. There are two parts that can
be configured: The lab and the board. If no lab is configured, tbot creates
a LocalLabHost
. If no board is configured,
testcases trying to access it simply fail.
Lab Config¶
The lab config can be chosen with the -l
commandline parameter. It should
be a python module with a global LAB
that is a class derived from
LabHost
. It might look like this:
import getpass
import tbot
from tbot.machine.linux import lab
from tbot.machine import linux
class PolluxLab(lab.SSHLabHost):
name = "pollux"
hostname = "pollux.denx.de"
username = getpass.getuser()
@property
def workdir(self) -> "linux.Path[PolluxLab]":
return linux.Workdir.static(self, f"/work/{self.username}/tbot-workdir")
LAB = PolluxLab
For the list of possible parameters, take a look at the LocalLabHost
and SSHLabHost
classes.
Board Config¶
The board config can be chosen with the -b
commandline parameter. It should
be a python module with at least a global BOARD
that is a class derived from
Board
. If applicable, it can also export the
UBOOT
global which should be a class derived from UBootMachine
and LINUX
which should be derived from LinuxMachine
.
If both UBOOT
and LINUX
are exported, LINUX
should be
a LinuxWithUBootMachine
. But this is not enforced.
An example board config might look like this:
from tbot.machine import board
from tbot.machine import linux
class BeagleBoneBlack(board.Board):
name = "bbb"
connect_wait = 3.0
def poweron(self) -> None:
self.lh.exec0("remote_power", self.name, "on")
def poweroff(self) -> None:
self.lh.exec0("remote_power", self.name, "off")
def connect(self) -> channel.Channel:
return self.lh.new_channel("connect", self.name)
class BeagleBoneUBoot(board.UBootMachine[BeagleBoneBlack]):
prompt = "=> "
class BeagleBoneLinux(board.LinuxWithUBootMachine[BeagleBoneBlack]):
uboot = BeagleBoneUBoot
username = "root"
password = None
shell = linux.shell.Bash # Setting the right shell is very important!
boot_commands = [
["setenv", "serverip", "192.168.1.1"],
["setenv", "netmask", "255.255.0.0"],
["setenv", "ipaddr", "192.168.20.95"],
["mw", "0x81000000", "0", "0x4000"],
["tftp", "0x81000000", "bbb/tbot/env.txt"],
["env", "import", "-t", "0x81000000"],
["setenv", "rootpath", "/opt/..."],
["run", "netnfsboot"],
]
BOARD = BeagleBoneBlack
UBOOT = BeagleBoneUBoot
LINUX = BeagleBoneLinux
For info on the possible configuration options, checkout the docs for
Board
,
UBootMachine
,
LinuxWithUBootMachine
, and
LinuxStandaloneMachine
.
Flags¶
Sometimes your config needs some flexibility. To keep you from having to edit the config
file every time, tbot has a feature called flags. Flags can be specified on the commandline
using -f flagname
and you can check if they are set in your config like this:
if "flagname" in tbot.flags:
tbot.log.message("Flag ist set!")
else:
tbot.log.message("Flag ist NOT set!")
To make flags easily discoverable, you should add all available flags to a global named FLAGS
:
FLAGS = {
"flagname": "Short description of this flag",
}
You can then list all available flags using tbot --list-flags
.