Comments (5)
Hi,
first of all, I think a space in your board name is not something I properly care for here. Not sure what problems this will cause (if any), but to be safe I'd replace that with a '-'
.
Target uboot_testpy powers the board on before collecting the unit tests and powers it off before executing the unit tests. Obviously this leads to failures in all tests.
Powering on before starting test/py is expected. Then, after test/py has collected all testcases, it will issue a board reset. That's why the board is powered off again at the beginning of tests. If everything works, tbot will first call your poweroff()
method and then poweron()
. What is weird is that only the first command from your poweron()
method is sent.
Digging into your lab-config, I see
def build(self):
tbot.log.message(tbot.log.c("Message").yellow.bold + ": MyLabHost.build")
return self
Try making that a
def build(self):
tbot.log.message(tbot.log.c("Message").yellow.bold + ": MyLabHost.build")
return self.clone()
The problem here is that uboot_testpy
expects to have separate connections to lab-host and build-host but you gave it the same for both. So it's trying to execute the power commands on the same session where test/py is currently running! I thought, I had built in checks to catch that but apparently something slipped through ... I'll see how I can protect against this mistake.
Files u-boot-test-console u-boot-test-flash u-boot-test-quit u-boot-test-reset are missing.
Those are in /tmp/tbot-workdir/uboot-testpy-tbot
if you're curious.
from tbot.
Pushed commit 39f21f0 ("test/py: Issue a warning for incorrectly configured lab-hosts") which will warn about and attempt to fix such configurations.
from tbot.
@Rahix
Thank you for reviewing my code. With the suggested changes is works as expected.
Adding the following information to the online documentation would have helped me:
- description of the build() and enable() methods of a Lab instance detailing how they work
- how to setup a a build host that is not the lab host
- how to use DistroToolchain(). I never got it to use the cross-compiler for the board.
Best regards
Heinrich
from tbot.
Thanks for the feedback, I really appreciate it!
description of the build() and enable() methods of a Lab instance detailing how they work
Yeah, the docs about this could really use some touch up, I agree. I've been holding off from that because I don't like the current implementation (especially of build()
) very much and I am in the process of overhauling that to make it easier and more flexible.
how to setup a a build host that is not the lab host
Wow, the docs actually don't show any example of this ... I'll add one but in the mean time, I hope this helps:
class SomeBuildHost(connector.SSHConnector, linux.Bash, linux.Builder):
hostname = "some-build-host.example.com"
@property
def toolchains(self):
...
class SomeLabHost(..., linux.Lab):
def build(self):
SomeBuildHost(self)
and later, you can copy files back to the labhost in a testcase like this:
from tbot.tc import shell
...
target = lh.workdir / "some-file"
with lh.build() as bh:
source = bh.workdir / "some-file"
shell.copy(source, target)
how to use DistroToolchain(). I never got it to use the cross-compiler for the board.
Hmm, doing this in your labconfig doesn't work?
@property
def toolchains(self) -> typing.Dict[str, linux.build.Toolchain]:
""" Define Toolchains
"""
return {
"arm": linux.build.DistroToolchain("arm", "arm-linux-gnueabihf-"),
"arm64": linux.build.DistroToolchain("arm64", "aarch64-linux-gnu-"),
"riscv": linux.build.DistroToolchain("riscv", "riscv64-linux-gnu-"),
}
from tbot.
@Rahix
I just rechecked DistroToolchain. It is usable. Probably in my early experiments I had something wrong in introducing the toolchain.
from tbot.
Related Issues (20)
- Possible bug when auto login is used on the device HOT 3
- Timeout error while trying to reach the login prompt of the serial port over Paramiko Labhost HOT 8
- test/py test-framework hangs on some tests HOT 2
- shutil error while copying( fifo_console_send, fifo_console_recv, fifo_commands) in py/tests/test_cleanup_build.py HOT 6
- test/py wrapper should support out-of-tree U-Boot builds
- Send arbitrary commands via uboot console HOT 2
- Unable to retrieve the value of crc32 command in uboot with exec0. HOT 2
- At least Python 3.8 is required by tbot/newbot HOT 3
- Unhandled escape sequences clobber tbot output
- When running tests via SSH connector and SSH connection breaks due to device crash TBot hangs waiting indefinitely for SSH HOT 3
- shell.copy() does not accept globs in source path HOT 2
- Base exception classed raised HOT 3
- newbot CLI cannot generate log files
- Continuously print console to stdout
- Early load config when integrating tbot into pytest HOT 6
- Memory leak in SubprocessChannelIO HOT 3
- Processes not being terminated after SSH connection HOT 6
- Display SSH connection errors
- Timeout when waiting for a temination of a subprocess is hardcoded HOT 3
- Weird power cycle recursion HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tbot.