On 09/18/2017 08:27 PM, Stephen Warren wrote: > On 09/17/2017 01:32 PM, Heinrich Schuchardt wrote: >> The necessary parameters for running Python tests on qemu are >> tediouus to find. > > Nit: tedious > > Let's wrap the commit description to 72-74 characters; it's rather > narrow right now. > >> >> The patch adds examples for u-boot-test-console and >> u-boot-test-reset. > >> diff --git a/test/py/README.md b/test/py/README.md >> index 829c7efbb2..f3ad10df5a 100644 >> --- a/test/py/README.md >> +++ b/test/py/README.md >> @@ -197,6 +197,23 @@ simulator includes a virtual reset button! If >> not, you can launch the >> simulator from `u-boot-test-reset` instead, while arranging for this >> console >> process to always communicate with the current simulator instance. > > Rather that adding these examples into a section that details one of the > individual hook scripts, let's create a new section "Simple qemu > example" and put it right before or after the existing "Examples" section. Ok
> >> +With qemu you can use the parameter -monitor to connect the control >> console to a >> +Unix socket, e.g. > > Let's state what filename the following example should be saved to; > u-boot-test-console. sure > >> + #!/bin/sh >> + touch /tmp/u-boot-monitor-socket >> + qemu-system-x86_64 -bios build-qemu-x86/u-boot.rom -nographic >> -netdev \ >> + >> user,id=eth0,tftp=../tftp,net=192.168.76.0/24,dhcpstart=192.168.76.9 \ > > Let's indent the continuation lines so it's more obvious this is a > multi-line command: > > asdfsd fsjkl fsfj lssfjdasdfsjl \ > asdfsd fsjkl fsfj lssfjdasdfsjl \ > asdfsd fsjkl fsfj lssfjdasdfsjl \ > > I think this (and the other) script should "exec" the commands to avoid > leaving the shell instance around. Is this really needed? It just adds complexity. You cannot execute anything in the lines after exec, e.g. deleting the socket file. > > This example seems to enable networking support in qemu, and a TFTP > server. I believe you'll need to provide an example Python board > configuration so that test/py knows to enable the network tests. tftp is used for testing bootefi hello Empty file __init__.py u_boot_boardenv_qemu_x86.py env__net_dhcp_server = True env__efi_loader_helloworld_file = { "fn": "helloworld.efi", "size": 4298, "crc32": "55d96ef8", } This is another file needed: u-boot-test-quit #!/bin/sh echo quit | socat - UNIX-CONNECT:/tmp/u-boot-monitor-socket The following script comes in handy to create the .py file: #!/bin/bash echo env__efi_loader_$(basename $1 | sed 's/\./_/g') = \{ echo ' "fn":' $(basename $1) echo ' "len":' $(stat --printf="%s" $1) echo ' "crc32":' $(crc32 $1) echo \} > >> + -device e1000,netdev=eth0 -machine pc-i440fx-2.8 \ >> + -monitor unix:/tmp/u-boot-monitor-socket,server,nowait >> + >> +In `u-boot-test-reset` call the socat command to send a system reset: >> + >> + #!/bin/sh >> + echo system_reset | socat - UNIX-CONNECT:/tmp/u-boot-monitor-socket >> + sleep 1 >> + true > > Why is the sleep needed? This avoids race conditions. Qemu will need some milliseconds to actually shut down qemu. I want to be sure that Python does not execute any command before this is completed. > The true command shouldn't have any effect > given set -e isn't in use. man dash: The shell will return the exit status of the last command executed. If the last command is false running the test suite fails. > > I only see examples for u-boot-test-console and u-boot-test-reset. I > believe you need to provide a dummy/empty u-boot-test-flash too. > Yes this is what I used: #!/bin/sh echo ... u-boot-test-flash ... _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot