tbottest.boardlocking
¶
It is possible to lock a board in a lab, so only tbot
calls with a valid lockid
are started. A lockid
is a simple string, passed to tbot with the tbot flag
lablockid:<your locking ID>
Enable this feature in tbot.ini
file with
[LABHOST]
uselocking = yes
default is no
, so disabled.
Example run¶
reserve a board on the lab host¶
reserve a board on a lab host with lockid foobar
$ tbottest/newtbot_starter.py @tbotconfig/foo/args/argsfoo-noeth -f lablockid:foobar tbotconfig.interactive.lab
Now tbot created on your lab host the following lockfile lab.tmpdir/boardname-lablock
which contains the lockid string.
You can only access the board now with passing -f lablockid:foobar
, all
other tbot calls will fail!
start a tbot call with the wrong tbot flag
$ tbottest/newtbot_starter.py @tbotconfig/foo/args/argsfoo-noeth -f lablockid:foo tbotconfig.interactive.lab
tbot starting ...
├─TBOT.FLAGS ['boardfile:tbotconfig/foo/foo.ini', 'do_power', 'inifile:tbotconfig/foo/tbot.ini', 'lablockid:foo', 'noboardethinit', 'noethinit', 'picocom', 'useifconfig']
├─boardname now foo
[...]
├─Calling lab ...
[...]
│ │ ├─passed lockid foo is not the same as lockid in file /tmp/tbot/pi/foo/foo-lablock. Boardname foo is locked through ID foobar
│ │ └─Fail. (0.493s)
[...]
├─────────────────────────────────────────
└─FAILURE (3.484s)
call tbot without lockid fails too:
$ tbottest/newtbot_starter.py @tbotconfig/foo/args/argsfoo-noeth tbotconfig.interactive.lab
tbot starting ...
├─TBOT.FLAGS ['boardfile:tbotconfig/foo/foo.ini', 'do_power', 'inifile:tbotconfig/foo/tbot.ini', 'noboardethinit', 'noethinit', 'picocom', 'useifconfig']
├─boardname now foo
[...]
├─Calling lab ...
[...]
│ ├─Calling lab_get_lock ...
[...]
│ │ │ └─Done. (0.107s)
│ │ └─Fail. (0.496s)
│ └─Fail. (3.154s)
├─Exception:
│ Traceback (most recent call last):
[...]
│ RuntimeError: NO LABLOCKID passed, please pass tbot flag 'lablockid:<yourlockid>'
├─────────────────────────────────────────
└─FAILURE (3.329s)
remove the reservation¶
delete the lock with
$ tbottest/newtbot_starter.py @tbotconfig/foo/args/argsfoo-noeth -f lablockid:foobar tbottest.common.boardlocking.lab_rm_lock
tbot starting ...
├─TBOT.FLAGS ['boardfile:tbotconfig/foo/foo.ini', 'do_power', 'inifile:tbotconfig/foo/tbot.ini', 'lablockid:foobar', 'noboardethinit', 'noethinit', 'picocom', 'useifconfig']
├─boardname now foo
[...]
├─Calling lab_rm_lock ...
[...]
│ ├─[lab8] rm /tmp/tbot/pi/foo/foo-lablock
│ └─Done. (5.862s)
├─────────────────────────────────────────
└─SUCCESS (5.916s)