u-boot/test/py
Alper Nebi Yasak 99f5303c8b test/py: Wait for guestmount worker to exit after running guestunmount
Some filesystem tests are failing when their image is prepared with
guestmount, but succeeding if loop mounts are used instead. The reason
seems to be a race condition the guestmount(1) manual page explains:

    When guestunmount(1)/fusermount(1) exits, guestmount may still be
    running and cleaning up the mountpoint.  The disk image will not be
    fully finalized.

    This means that scripts like the following have a nasty race condition:

     guestmount -a disk.img -i /mnt
     # copy things into /mnt
     guestunmount /mnt
     # immediately try to use 'disk.img' ** UNSAFE **

    The solution is to use the --pid-file option to write the guestmount
    PID to a file, then after guestunmount spin waiting for this PID to
    exit.

The Python standard library has an os.waitpid() function for waiting a
child to terminate, but it cannot wait on non-child processes. Implement
a utility function that can do this by polling the process repeatedly
for a given duration, optionally killing the process if it won't
terminate on its own. Apply the suggested solution with this utility
function, which makes the failing tests succeed again.

Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2021-07-05 15:28:32 -04:00
..
tests test/py: Wait for guestmount worker to exit after running guestunmount 2021-07-05 15:28:32 -04:00
.gitignore test/py: Implement pytest infrastructure 2016-01-20 19:06:23 -07:00
conftest.py test/py: improve regular expression for ut subtest symbol matcher 2021-05-24 14:21:30 -04:00
multiplexed_log.css SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
multiplexed_log.py test/py: Manual python3 fixes 2019-10-30 17:48:47 -04:00
pytest.ini test/py: Manual python3 fixes 2019-10-30 17:48:47 -04:00
requirements.txt tests: patman: Add requests to the module list 2021-04-29 03:23:39 -07:00
test.py test: correct entry point to pytest 2021-01-29 10:36:49 -05:00
u_boot_console_base.py test/py: Add test support for three stage boot 2020-08-04 23:30:02 -04:00
u_boot_console_exec_attach.py SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
u_boot_console_sandbox.py test/py: Add a way to pass flags to sandbox 2018-11-26 08:25:35 -05:00
u_boot_spawn.py test/py: Use raw strings more to avoid deprecation warnings 2019-10-30 17:48:47 -04:00
u_boot_utils.py test/py: Wait for guestmount worker to exit after running guestunmount 2021-07-05 15:28:32 -04:00