For testing to be performed it must be easy. /dist/tools/compile_and_test_for_board was a stepping stone towards this.
Many boards can now run all tests in a row reliably. But there exception for boards that:
make reset does not workarduino, native, z1 (all passing by a BSL)make reset blocksesp32make reset causes serial disconnectatmega2560, mkrwanmake flash fails without manual interventionccs2538dk,stdin or stdoutmipsThis issue wants to track the needed efforts to be able to achieve this. The following list is not exhaustive at it only involves the issues I'm aware off
make reset does not worktest_interactive_sync_util in all possible test, i.e. test not disabling input/output #12461tests do this)make reset causes serial disconnectmake reset blocksmake flash fails without manual interventiontests/ssp)* `make reset` does not work
I wonder how we would do this on native. It is effectively a process running on the host system, so we somehow need to restart that without effecting make term.
The other question: is it necessary for native?
I wonder how we would do this on
native. It is effectively a process running on the host system, so we somehow need to restart that without effectingmake term.
We could trigger native's "reboot" (which does a self-exec) via signal. For that, there needs to be a way to export the pid, maybe through a CLI argument setting a pid filename...
Signaling and rebootstrapping (not necessarilly via reboot) was also my thought. But saving the PID, especially with multiple native sessions (which especially considering some of our networking test cases is desirable), seems like a challenge.
But saving the PID, especially with multiple
nativesessions (which especially considering some of our networking test cases is desirable), seems like a challenge.
How are multi-node native tests usually run?
On multiple terminals, currently. But having some kind of automation integration should be possible for future use cases.
Have a look at https://github.com/RIOT-OS/Release-Specs/pull/79 for specifics e. g.
See #12517 for a PoC for native reset.
We should also try to get rid of the unneeded sleeps, with the sync tests should run much faster.
The other question: is it necessary for native?
Coming back to this it isn't necessary, but make native resemble more to normal BOARD which also means the test running on native will be much more like the one running on a physical BOARD.
* `make reset` does not workI wonder how we would do this on
native. It is effectively a process running on the host system, so we somehow need to restart that without effectingmake term.
But make reset will still not work on native even while there isn't a process running (previous make term), which is not the case for a "physical" board where I can reset, and the call term. This difference needs to be handled.
But make reset will still not work on native even while there isn't a process running (previous make term), which is not the case for a "physical" board where I can reset, and the call term. This difference needs to be handled.
Thinking of it better, it would be the same as for z1, where it just does nothing.
make resetblocks
e.g.:esp32