[PATCH 1/1] test: revert Don't unmount not (yet) mounted system

Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") the following tests are skipped:
test/py/tests/test_fs/test_basic.py test/py/tests/test_fs/test_ext.py
SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for filesystem: ext4. Command 'guestmount -a build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda build-sandbox/persistent-data/mnt' returned non-zero exit status 1.
Let's revert the patch to get our tests back.
Fixes: 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- test/py/tests/test_fs/conftest.py | 78 +++++++++---------------------- test/run | 8 ++-- 2 files changed, 26 insertions(+), 60 deletions(-)
diff --git a/test/py/tests/test_fs/conftest.py b/test/py/tests/test_fs/conftest.py index 50af9efcf7..ec70e8c4ef 100644 --- a/test/py/tests/test_fs/conftest.py +++ b/test/py/tests/test_fs/conftest.py @@ -270,20 +270,9 @@ def fs_obj_basic(request, u_boot_config):
# 3GiB volume fs_img = mk_fs(u_boot_config, fs_type, 0xc0000000, '3GB') - except CalledProcessError as err: - pytest.skip('Creating failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - - try: - check_call('mkdir -p %s' % mount_dir, shell=True) - except CalledProcessError as err: - pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - finally: - call('rm -f %s' % fs_img, shell=True)
- try: # Mount the image so we can populate it. + check_call('mkdir -p %s' % mount_dir, shell=True) mount_fs(fs_type, fs_img, mount_dir)
# Create a subdirectory. @@ -346,15 +335,18 @@ def fs_obj_basic(request, u_boot_config): % big_file, shell=True).decode() md5val.append(out.split()[0])
+ umount_fs(mount_dir) except CalledProcessError as err: - pytest.skip('Setup failed for filesystem: ' + fs_type + '. {}'.format(err)) + pytest.skip('Setup failed for filesystem: ' + fs_type + \ + '. {}'.format(err)) return else: yield [fs_ubtype, fs_img, md5val] finally: umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) - call('rm -f %s' % fs_img, shell=True) + if fs_img: + call('rm -f %s' % fs_img, shell=True)
# # Fixture for extended fs test @@ -386,20 +378,9 @@ def fs_obj_ext(request, u_boot_config):
# 128MiB volume fs_img = mk_fs(u_boot_config, fs_type, 0x8000000, '128MB') - except CalledProcessError as err: - pytest.skip('Creating failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - - try: - check_call('mkdir -p %s' % mount_dir, shell=True) - except CalledProcessError as err: - pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - finally: - call('rm -f %s' % fs_img, shell=True)
- try: # Mount the image so we can populate it. + check_call('mkdir -p %s' % mount_dir, shell=True) mount_fs(fs_type, fs_img, mount_dir)
# Create a test directory @@ -441,6 +422,7 @@ def fs_obj_ext(request, u_boot_config): md5val.append(out.split()[0])
check_call('rm %s' % tmp_file, shell=True) + umount_fs(mount_dir) except CalledProcessError: pytest.skip('Setup failed for filesystem: ' + fs_type) return @@ -449,7 +431,8 @@ def fs_obj_ext(request, u_boot_config): finally: umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) - call('rm -f %s' % fs_img, shell=True) + if fs_img: + call('rm -f %s' % fs_img, shell=True)
# # Fixture for mkdir test @@ -477,10 +460,11 @@ def fs_obj_mkdir(request, u_boot_config): fs_img = mk_fs(u_boot_config, fs_type, 0x8000000, '128MB') except: pytest.skip('Setup failed for filesystem: ' + fs_type) - return else: yield [fs_ubtype, fs_img] - call('rm -f %s' % fs_img, shell=True) + finally: + if fs_img: + call('rm -f %s' % fs_img, shell=True)
# # Fixture for unlink test @@ -509,20 +493,9 @@ def fs_obj_unlink(request, u_boot_config):
# 128MiB volume fs_img = mk_fs(u_boot_config, fs_type, 0x8000000, '128MB') - except CalledProcessError as err: - pytest.skip('Creating failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - - try: - check_call('mkdir -p %s' % mount_dir, shell=True) - except CalledProcessError as err: - pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - finally: - call('rm -f %s' % fs_img, shell=True)
- try: # Mount the image so we can populate it. + check_call('mkdir -p %s' % mount_dir, shell=True) mount_fs(fs_type, fs_img, mount_dir)
# Test Case 1 & 3 @@ -546,6 +519,7 @@ def fs_obj_unlink(request, u_boot_config): check_call('dd if=/dev/urandom of=%s/dir5/file1 bs=1K count=1' % mount_dir, shell=True)
+ umount_fs(mount_dir) except CalledProcessError: pytest.skip('Setup failed for filesystem: ' + fs_type) return @@ -554,7 +528,8 @@ def fs_obj_unlink(request, u_boot_config): finally: umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) - call('rm -f %s' % fs_img, shell=True) + if fs_img: + call('rm -f %s' % fs_img, shell=True)
# # Fixture for symlink fs test @@ -584,22 +559,11 @@ def fs_obj_symlink(request, u_boot_config):
try:
- # 1GiB volume + # 3GiB volume fs_img = mk_fs(u_boot_config, fs_type, 0x40000000, '1GB') - except CalledProcessError as err: - pytest.skip('Creating failed for filesystem: ' + fs_type + '. {}'.format(err)) - return
- try: - check_call('mkdir -p %s' % mount_dir, shell=True) - except CalledProcessError as err: - pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - finally: - call('rm -f %s' % fs_img, shell=True) - - try: # Mount the image so we can populate it. + check_call('mkdir -p %s' % mount_dir, shell=True) mount_fs(fs_type, fs_img, mount_dir)
# Create a subdirectory. @@ -623,6 +587,7 @@ def fs_obj_symlink(request, u_boot_config): % medium_file, shell=True).decode() md5val.extend([out.split()[0]])
+ umount_fs(mount_dir) except CalledProcessError: pytest.skip('Setup failed for filesystem: ' + fs_type) return @@ -631,4 +596,5 @@ def fs_obj_symlink(request, u_boot_config): finally: umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) - call('rm -f %s' % fs_img, shell=True) + if fs_img: + call('rm -f %s' % fs_img, shell=True) diff --git a/test/run b/test/run index 869406cd8d..04ec1a05e0 100755 --- a/test/run +++ b/test/run @@ -22,16 +22,16 @@ failures=0
if [ -z "$tools_only" ]; then # Run all tests that the standard sandbox build can support - run_test "sandbox" ./test/py/test.py --bd sandbox --build \ + run_test "sandbox" ./test/py/test.py -ra --bd sandbox --build \ -m "${mark_expr}" fi
# Run tests which require sandbox_spl -run_test "sandbox_spl" ./test/py/test.py --bd sandbox_spl --build \ +run_test "sandbox_spl" ./test/py/test.py -ra --bd sandbox_spl --build \ -k 'test_ofplatdata or test_handoff or test_spl'
# Run the sane tests with sandbox_noinst (i.e. without OF_PLATDATA_INST) -run_test "sandbox_spl" ./test/py/test.py --bd sandbox_noinst --build \ +run_test "sandbox_spl" ./test/py/test.py -ra --bd sandbox_noinst --build \ -k 'test_ofplatdata or test_handoff or test_spl'
if [ -z "$tools_only" ]; then @@ -39,7 +39,7 @@ if [ -z "$tools_only" ]; then # build which does not enable CONFIG_OF_LIVE for the live device tree, so we can # check that functionality is the same. The standard sandbox build (above) uses # CONFIG_OF_LIVE. - run_test "sandbox_flattree" ./test/py/test.py --bd sandbox_flattree \ + run_test "sandbox_flattree" ./test/py/test.py -ra --bd sandbox_flattree \ --build -k test_ut fi
-- 2.30.2

On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") the following tests are skipped:
test/py/tests/test_fs/test_basic.py test/py/tests/test_fs/test_ext.py
SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for filesystem: ext4. Command 'guestmount -a build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda build-sandbox/persistent-data/mnt' returned non-zero exit status 1.
Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?

On 17.05.21 08:33, Andy Shevchenko wrote:
On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") the following tests are skipped:
test/py/tests/test_fs/test_basic.py test/py/tests/test_fs/test_ext.py
SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for filesystem: ext4. Command 'guestmount -a build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda build-sandbox/persistent-data/mnt' returned non-zero exit status 1.
Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
Best regards
Heinrich

On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote:
On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") the following tests are skipped:
test/py/tests/test_fs/test_basic.py test/py/tests/test_fs/test_ext.py
SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for filesystem: ext4. Command 'guestmount -a build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda build-sandbox/persistent-data/mnt' returned non-zero exit status 1.
Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
And suddenly this is a fatal error for unknown reason.
I will check later when I have time how to work around, or if meanwhile somebody tells me what are the steps to fix it.
I'm using v2021.07-rc2

On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote:
On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") the following tests are skipped:
test/py/tests/test_fs/test_basic.py test/py/tests/test_fs/test_ext.py
SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for filesystem: ext4. Command 'guestmount -a build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda build-sandbox/persistent-data/mnt' returned non-zero exit status 1.
Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Best regards
Heinrich
And suddenly this is a fatal error for unknown reason.
I will check later when I have time how to work around, or if meanwhile somebody tells me what are the steps to fix it.
I'm using v2021.07-rc2

On Mon, May 17, 2021 at 2:35 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote:
On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") the following tests are skipped:
test/py/tests/test_fs/test_basic.py test/py/tests/test_fs/test_ext.py
SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for filesystem: ext4. Command 'guestmount -a build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda build-sandbox/persistent-data/mnt' returned non-zero exit status 1.
Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
(1)
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Thanks.
So, I have run above mentioned line (1) with current U-Boot (see above), everything is fine, then I have reverted the commit (as your patch does, correct), and oops
test/py/tests/test_efi_secboot/test_unsigned.py sss [ 88%] test/py/tests/test_fs/test_basic.py [sudo] password for andy: Sorry, try again. [sudo] password for andy: Sorry, try again. [sudo] password for andy: sssssssssssss[sudo] password for andy:
Now I'm waiting for a punishment from the admin, thanks to this test round.
I'm not going to repeat this again, please understand me correctly.
Best regards
Heinrich
And suddenly this is a fatal error for unknown reason.
I will check later when I have time how to work around, or if meanwhile somebody tells me what are the steps to fix it.
I'm using v2021.07-rc2

On 17.05.21 13:44, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 2:35 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote:
On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") the following tests are skipped:
test/py/tests/test_fs/test_basic.py test/py/tests/test_fs/test_ext.py
SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for filesystem: ext4. Command 'guestmount -a build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda build-sandbox/persistent-data/mnt' returned non-zero exit status 1.
Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
(1)
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Thanks.
So, I have run above mentioned line (1) with current U-Boot (see above), everything is fine, then I have reverted the commit (as your patch does, correct), and oops
test/py/tests/test_efi_secboot/test_unsigned.py sss [ 88%] test/py/tests/test_fs/test_basic.py [sudo] password for andy:
If you are asked for a sudo password, you have not install libguestfs.
Please, install the missing package.
Sorry, try again. [sudo] password for andy: Sorry, try again. [sudo] password for andy: sssssssssssss[sudo] password for andy:
Now I'm waiting for a punishment from the admin, thanks to this test round.
make tests (on my local machine)
with origin/master:
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py sssssssssssssssssssssssssssssssssssssss test/py/tests/test_fs/test_ext.py ssssssssssssssssssssss test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py ssss test/py/tests/test_fs/test_unlink.py ssssssssssssss
with your patch reverted
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py F............F......................... test/py/tests/test_fs/test_ext.py ...................... test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py .... test/py/tests/test_fs/test_unlink.py ..............
The failures are caused by dd being called with conv=fsync before mounting with guestfs.
Obviously we have two scenarios to test separately:
1) using sudo for mounting 2) using guestfs for mounting
I'm not going to repeat this again, please understand me correctly.
I assume that you possess a private laptop where your are the admin. Where is the problem?
Best regards
Heinrich

On Mon, May 17, 2021 at 4:21 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:44, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 2:35 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote:
On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote: > > Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") > the following tests are skipped: > > test/py/tests/test_fs/test_basic.py > test/py/tests/test_fs/test_ext.py > > SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for > filesystem: ext4. Command 'guestmount -a > build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda > build-sandbox/persistent-data/mnt' returned non-zero exit status 1. > > Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
(1)
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Thanks.
So, I have run above mentioned line (1) with current U-Boot (see above), everything is fine, then I have reverted the commit (as your patch does, correct), and oops
test/py/tests/test_efi_secboot/test_unsigned.py sss [ 88%] test/py/tests/test_fs/test_basic.py [sudo] password for andy:
If you are asked for a sudo password, you have not install libguestfs.
Please, install the missing package.
Sorry, try again. [sudo] password for andy: Sorry, try again. [sudo] password for andy: sssssssssssss[sudo] password for andy:
Now I'm waiting for a punishment from the admin, thanks to this test round.
make tests (on my local machine)
with origin/master:
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py sssssssssssssssssssssssssssssssssssssss test/py/tests/test_fs/test_ext.py ssssssssssssssssssssss test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py ssss test/py/tests/test_fs/test_unlink.py ssssssssssssss
Can you provide the reason why those tests were skipped?
with your patch reverted
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py F............F......................... test/py/tests/test_fs/test_ext.py ...................... test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py .... test/py/tests/test_fs/test_unlink.py ..............
The failures are caused by dd being called with conv=fsync before mounting with guestfs.
Obviously we have two scenarios to test separately:
- using sudo for mounting
- using guestfs for mounting
I'm not going to repeat this again, please understand me correctly.
I assume that you possess a private laptop where your are the admin.
Nope, it's a collaborative server.
Where is the problem?

On Mon, May 17, 2021 at 03:21:41PM +0200, Heinrich Schuchardt wrote:
On 17.05.21 13:44, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 2:35 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote:
On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote: > > Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") > the following tests are skipped: > > test/py/tests/test_fs/test_basic.py > test/py/tests/test_fs/test_ext.py > > SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for > filesystem: ext4. Command 'guestmount -a > build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda > build-sandbox/persistent-data/mnt' returned non-zero exit status 1. > > Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
(1)
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Thanks.
So, I have run above mentioned line (1) with current U-Boot (see above), everything is fine, then I have reverted the commit (as your patch does, correct), and oops
test/py/tests/test_efi_secboot/test_unsigned.py sss [ 88%] test/py/tests/test_fs/test_basic.py [sudo] password for andy:
If you are asked for a sudo password, you have not install libguestfs.
Please, install the missing package.
Sorry, try again. [sudo] password for andy: Sorry, try again. [sudo] password for andy: sssssssssssss[sudo] password for andy:
Now I'm waiting for a punishment from the admin, thanks to this test round.
make tests (on my local machine)
with origin/master:
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py sssssssssssssssssssssssssssssssssssssss test/py/tests/test_fs/test_ext.py ssssssssssssssssssssss test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py ssss test/py/tests/test_fs/test_unlink.py ssssssssssssss
with your patch reverted
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py F............F......................... test/py/tests/test_fs/test_ext.py ...................... test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py .... test/py/tests/test_fs/test_unlink.py ..............
The failures are caused by dd being called with conv=fsync before mounting with guestfs.
Obviously we have two scenarios to test separately:
- using sudo for mounting
- using guestfs for mounting
I'm not going to repeat this again, please understand me correctly.
I assume that you possess a private laptop where your are the admin. Where is the problem?
The problem here is that we have a number of different development / testing scenarios that we need to support. Tests need to run in CI. They need to run in developer-controlled machines. They need to run in corporate-IT controlled machines.
The next problem is that as Andy has said, our python logic to handle these cases is, to be polite, not working. Check CI, we're skipping the tests again, which I had missed.
Once we get these the fs tests working finally in all cases, we need to update the relevant EFI tests too.
Finally, my python skills are not up to getting all of this correct, so help greatly appreciated here.

On Mon, May 17, 2021 at 4:29 PM Tom Rini trini@konsulko.com wrote:
On Mon, May 17, 2021 at 03:21:41PM +0200, Heinrich Schuchardt wrote:
On 17.05.21 13:44, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 2:35 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote: > On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote: >> >> Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") >> the following tests are skipped: >> >> test/py/tests/test_fs/test_basic.py >> test/py/tests/test_fs/test_ext.py >> >> SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for >> filesystem: ext4. Command 'guestmount -a >> build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda >> build-sandbox/persistent-data/mnt' returned non-zero exit status 1. >> >> Let's revert the patch to get our tests back. > > Probably we may understand first what is the root cause of this issue? > > In my case I can't allow this to happen, because it will annoy system > administrators as I mentioned earlier in the commit message. > > So, NAK from me and let's investigate. > Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
(1)
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Thanks.
So, I have run above mentioned line (1) with current U-Boot (see above), everything is fine, then I have reverted the commit (as your patch does, correct), and oops
test/py/tests/test_efi_secboot/test_unsigned.py sss [ 88%] test/py/tests/test_fs/test_basic.py [sudo] password for andy:
If you are asked for a sudo password, you have not install libguestfs.
Please, install the missing package.
Sorry, try again. [sudo] password for andy: Sorry, try again. [sudo] password for andy: sssssssssssss[sudo] password for andy:
Now I'm waiting for a punishment from the admin, thanks to this test round.
make tests (on my local machine)
with origin/master:
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py sssssssssssssssssssssssssssssssssssssss test/py/tests/test_fs/test_ext.py ssssssssssssssssssssss test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py ssss test/py/tests/test_fs/test_unlink.py ssssssssssssss
with your patch reverted
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py F............F......................... test/py/tests/test_fs/test_ext.py ...................... test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py .... test/py/tests/test_fs/test_unlink.py ..............
The failures are caused by dd being called with conv=fsync before mounting with guestfs.
Obviously we have two scenarios to test separately:
- using sudo for mounting
- using guestfs for mounting
I'm not going to repeat this again, please understand me correctly.
I assume that you possess a private laptop where your are the admin. Where is the problem?
The problem here is that we have a number of different development / testing scenarios that we need to support. Tests need to run in CI. They need to run in developer-controlled machines. They need to run in corporate-IT controlled machines.
The next problem is that as Andy has said, our python logic to handle these cases is, to be polite, not working. Check CI, we're skipping the tests again, which I had missed.
Once we get these the fs tests working finally in all cases, we need to update the relevant EFI tests too.
Finally, my python skills are not up to getting all of this correct, so help greatly appreciated here.
Thanks, Tom, for summarizing it.
I would like to be helpful here and when I have time, I'll look at it closer if nobody beats me up to it. Currently I checked the reason why we skip them in my scenario: ============================================ short test summary info ============================================ SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 16 /home/andy/prj/u-boot/build-sandbox/persistent-data/3GB.fat16.img' returned non-zero exit status 127. SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 32 /home/andy/prj/u-boot/build-sandbox/persistent-data/3GB.fat32.img' returned non-zero exit status 127. SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: ext4. Command 'mkfs.ext4 /ho me/andy/prj/u-boot/build-sandbox/persistent-data/3GB.ext4.img' returned non-zero exit status 127. SKIPPED [11] test/py/tests/test_fs/conftest.py:390: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 16 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat16.img' returned non-zero exit status 127. SKIPPED [11] test/py/tests/test_fs/conftest.py:390: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 32 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat32.img' returned non-zero exit status 127. SKIPPED [6] test/py/tests/test_fs/conftest.py:479: Setup failed for filesystem: fat16 SKIPPED [6] test/py/tests/test_fs/conftest.py:479: Setup failed for filesystem: fat32 SKIPPED [4] test/py/tests/test_fs/conftest.py:590: Creating failed for filesystem: ext4. Command 'mkfs.ext4 /hom e/andy/prj/u-boot/build-sandbox/persistent-data/1GB.ext4.img' returned non-zero exit status 127. SKIPPED [7] test/py/tests/test_fs/conftest.py:513: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 1 6 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat16.img' returned non-zero exit status 127. SKIPPED [7] test/py/tests/test_fs/conftest.py:513: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 3 2 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat32.img' returned non-zero exit status 127. ======================================== 3 passed, 91 skipped in 10.02s =========================================

On 17.05.21 16:06, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 4:29 PM Tom Rini trini@konsulko.com wrote:
On Mon, May 17, 2021 at 03:21:41PM +0200, Heinrich Schuchardt wrote:
On 17.05.21 13:44, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 2:35 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote: > On 17.05.21 08:33, Andy Shevchenko wrote: >> On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote: >>> >>> Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") >>> the following tests are skipped: >>> >>> test/py/tests/test_fs/test_basic.py >>> test/py/tests/test_fs/test_ext.py >>> >>> SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for >>> filesystem: ext4. Command 'guestmount -a >>> build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda >>> build-sandbox/persistent-data/mnt' returned non-zero exit status 1. >>> >>> Let's revert the patch to get our tests back. >> >> Probably we may understand first what is the root cause of this issue? >> >> In my case I can't allow this to happen, because it will annoy system >> administrators as I mentioned earlier in the commit message. >> >> So, NAK from me and let's investigate. >> Can you provide a command line that I may run on my environment w/o root access? > > Hello Andy, > > The tests don't require root access if you have installed the > libguestfs-tools package and a Linux kernel. > > How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
(1)
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Thanks.
So, I have run above mentioned line (1) with current U-Boot (see above), everything is fine, then I have reverted the commit (as your patch does, correct), and oops
test/py/tests/test_efi_secboot/test_unsigned.py sss [ 88%] test/py/tests/test_fs/test_basic.py [sudo] password for andy:
If you are asked for a sudo password, you have not install libguestfs.
Please, install the missing package.
Sorry, try again. [sudo] password for andy: Sorry, try again. [sudo] password for andy: sssssssssssss[sudo] password for andy:
Now I'm waiting for a punishment from the admin, thanks to this test round.
make tests (on my local machine)
with origin/master:
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py sssssssssssssssssssssssssssssssssssssss test/py/tests/test_fs/test_ext.py ssssssssssssssssssssss test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py ssss test/py/tests/test_fs/test_unlink.py ssssssssssssss
with your patch reverted
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py F............F......................... test/py/tests/test_fs/test_ext.py ...................... test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py .... test/py/tests/test_fs/test_unlink.py ..............
The failures are caused by dd being called with conv=fsync before mounting with guestfs.
Obviously we have two scenarios to test separately:
- using sudo for mounting
- using guestfs for mounting
I'm not going to repeat this again, please understand me correctly.
I assume that you possess a private laptop where your are the admin. Where is the problem?
The problem here is that we have a number of different development / testing scenarios that we need to support. Tests need to run in CI. They need to run in developer-controlled machines. They need to run in corporate-IT controlled machines.
The next problem is that as Andy has said, our python logic to handle these cases is, to be polite, not working. Check CI, we're skipping the tests again, which I had missed.
Once we get these the fs tests working finally in all cases, we need to update the relevant EFI tests too.
Finally, my python skills are not up to getting all of this correct, so help greatly appreciated here.
Thanks, Tom, for summarizing it.
I would like to be helpful here and when I have time, I'll look at it closer if nobody beats me up to it. Currently I checked the reason why we skip them in my scenario: ============================================ short test summary info ============================================ SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 16 /home/andy/prj/u-boot/build-sandbox/persistent-data/3GB.fat16.img' returned non-zero exit status 127. SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 32 /home/andy/prj/u-boot/build-sandbox/persistent-data/3GB.fat32.img' returned non-zero exit status 127. SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: ext4. Command 'mkfs.ext4 /ho me/andy/prj/u-boot/build-sandbox/persistent-data/3GB.ext4.img' returned non-zero exit status 127. SKIPPED [11] test/py/tests/test_fs/conftest.py:390: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 16 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat16.img' returned non-zero exit status 127. SKIPPED [11] test/py/tests/test_fs/conftest.py:390: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 32 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat32.img' returned non-zero exit status 127. SKIPPED [6] test/py/tests/test_fs/conftest.py:479: Setup failed for filesystem: fat16 SKIPPED [6] test/py/tests/test_fs/conftest.py:479: Setup failed for filesystem: fat32 SKIPPED [4] test/py/tests/test_fs/conftest.py:590: Creating failed for filesystem: ext4. Command 'mkfs.ext4 /hom e/andy/prj/u-boot/build-sandbox/persistent-data/1GB.ext4.img' returned non-zero exit status 127. SKIPPED [7] test/py/tests/test_fs/conftest.py:513: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 1 6 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat16.img' returned non-zero exit status 127. SKIPPED [7] test/py/tests/test_fs/conftest.py:513: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 3 2 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat32.img' returned non-zero exit status 127. ======================================== 3 passed, 91 skipped in 10.02s =========================================
Let's look at the code without your patch:
We have multiple functions ending with:
umount_fs(mount_dir) except CalledProcessError as err: pytest.skip('Setup failed for filesystem: ' + fs_type + \ '. {}'.format(err)) return else: yield [fs_ubtype, fs_img, md5val] finally: umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) if fs_img: call('rm -f %s' % fs_img, shell=True)
If no exception occurs, unmount_fs() is called twice.
Both the unmount_fs() before except and the return statement should be removed. Then umount_fs() will be called only in the finally branch.
I hope this change to the original code is enough to solve your problem.
I will look into creating a patch.
Best regards
Heinrich

On Mon, May 17, 2021 at 8:08 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 16:06, Andy Shevchenko wrote:
...
Let's look at the code without your patch:
We have multiple functions ending with:
umount_fs(mount_dir)
except CalledProcessError as err: pytest.skip('Setup failed for filesystem: ' + fs_type + \ '. {}'.format(err)) return else: yield [fs_ubtype, fs_img, md5val] finally: umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) if fs_img: call('rm -f %s' % fs_img, shell=True)
If no exception occurs, unmount_fs() is called twice.
Both the unmount_fs() before except and the return statement should be removed. Then umount_fs() will be called only in the finally branch.
I hope this change to the original code is enough to solve your problem.
Probably, but as I mentioned in the commit message that Pythonic exceptions are completely over engineered that no-one can get them. I think you missed the fact that the exception can happen at any time when FS is mounted and when it's not mounted yet. I suggest you think more of this code... (Yet it admits that I may have made mistake myself, see above)
I will look into creating a patch.

On Mon, May 17, 2021 at 8:57 PM Andy Shevchenko andy.shevchenko@gmail.com wrote:
On Mon, May 17, 2021 at 8:08 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 16:06, Andy Shevchenko wrote:
...
Let's look at the code without your patch:
We have multiple functions ending with:
umount_fs(mount_dir)
except CalledProcessError as err: pytest.skip('Setup failed for filesystem: ' + fs_type + \ '. {}'.format(err)) return else: yield [fs_ubtype, fs_img, md5val] finally: umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) if fs_img: call('rm -f %s' % fs_img, shell=True)
If no exception occurs, unmount_fs() is called twice.
Both the unmount_fs() before except and the return statement should be removed.
No, AFAIU the return must be there, otherwise you will go after that without properly prepared FS.
Then umount_fs() will be called only in the finally branch.
Btw, that's what my patch does, but at better granularity.
I hope this change to the original code is enough to solve your problem.
Probably, but as I mentioned in the commit message that Pythonic exceptions are completely over engineered that no-one can get them. I think you missed the fact that the exception can happen at any time when FS is mounted and when it's not mounted yet. I suggest you think more of this code... (Yet it admits that I may have made mistake myself, see above)
I will look into creating a patch.

On 17/05/2021 17:06, Andy Shevchenko wrote:
I would like to be helpful here and when I have time, I'll look at it closer if nobody beats me up to it. Currently I checked the reason why we skip them in my scenario: ============================================ short test summary info ============================================ SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 16 /home/andy/prj/u-boot/build-sandbox/persistent-data/3GB.fat16.img' returned non-zero exit status 127. SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 32 /home/andy/prj/u-boot/build-sandbox/persistent-data/3GB.fat32.img' returned non-zero exit status 127. SKIPPED [13] test/py/tests/test_fs/conftest.py:274: Creating failed for filesystem: ext4. Command 'mkfs.ext4 /ho me/andy/prj/u-boot/build-sandbox/persistent-data/3GB.ext4.img' returned non-zero exit status 127. SKIPPED [11] test/py/tests/test_fs/conftest.py:390: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 16 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat16.img' returned non-zero exit status 127. SKIPPED [11] test/py/tests/test_fs/conftest.py:390: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 32 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat32.img' returned non-zero exit status 127. SKIPPED [6] test/py/tests/test_fs/conftest.py:479: Setup failed for filesystem: fat16 SKIPPED [6] test/py/tests/test_fs/conftest.py:479: Setup failed for filesystem: fat32 SKIPPED [4] test/py/tests/test_fs/conftest.py:590: Creating failed for filesystem: ext4. Command 'mkfs.ext4 /hom e/andy/prj/u-boot/build-sandbox/persistent-data/1GB.ext4.img' returned non-zero exit status 127. SKIPPED [7] test/py/tests/test_fs/conftest.py:513: Creating failed for filesystem: fat16. Command 'mkfs.vfat -F 1 6 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat16.img' returned non-zero exit status 127. SKIPPED [7] test/py/tests/test_fs/conftest.py:513: Creating failed for filesystem: fat32. Command 'mkfs.vfat -F 3 2 /home/andy/prj/u-boot/build-sandbox/persistent-data/128MB.fat32.img' returned non-zero exit status 127. ======================================== 3 passed, 91 skipped in 10.02s =========================================
I had similar errors as Debian has the mkfs.* executables in /usr/sbin but that wasn't in my PATH. Running 'export PATH="/usr/sbin:$PATH"' fixes these for me, maybe it's the same on your system?

On 17.05.21 15:21, Heinrich Schuchardt wrote:
On 17.05.21 13:44, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 2:35 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote:
On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote: > > Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") > the following tests are skipped: > > test/py/tests/test_fs/test_basic.py > test/py/tests/test_fs/test_ext.py > > SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for > filesystem: ext4. Command 'guestmount -a > build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda > build-sandbox/persistent-data/mnt' returned non-zero exit status 1. > > Let's revert the patch to get our tests back.
Probably we may understand first what is the root cause of this issue?
In my case I can't allow this to happen, because it will annoy system administrators as I mentioned earlier in the commit message.
So, NAK from me and let's investigate. Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
(1)
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Thanks.
So, I have run above mentioned line (1) with current U-Boot (see above), everything is fine, then I have reverted the commit (as your patch does, correct), and oops
test/py/tests/test_efi_secboot/test_unsigned.py sss [ 88%] test/py/tests/test_fs/test_basic.py [sudo] password for andy:
If you are asked for a sudo password, you have not install libguestfs.
Please, install the missing package.
Sorry, try again. [sudo] password for andy: Sorry, try again. [sudo] password for andy: sssssssssssss[sudo] password for andy:
Now I'm waiting for a punishment from the admin, thanks to this test round.
make tests (on my local machine)
with origin/master:
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py sssssssssssssssssssssssssssssssssssssss test/py/tests/test_fs/test_ext.py ssssssssssssssssssssss test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py ssss test/py/tests/test_fs/test_unlink.py ssssssssssssss
with your patch reverted
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py F............F......................... test/py/tests/test_fs/test_ext.py ...................... test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py .... test/py/tests/test_fs/test_unlink.py ..............
The failures are caused by dd being called with conv=fsync before mounting with guestfs.
Obviously we have two scenarios to test separately:
- using sudo for mounting
- using guestfs for mounting
I'm not going to repeat this again, please understand me correctly.
I assume that you possess a private laptop where your are the admin. Where is the problem?
Best regards
Heinrich
Here are the test results with guestfs-tools removed:
with origin/master
test/py/tests/test_efi_secboot/test_unsigned.py sss test/py/tests/test_fs/test_basic.py [sudo] password for user: sssssssssssssssssssssssssssssssssssssss test/py/tests/test_fs/test_ext.py ssssssssssssssssssssss test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py ssss test/py/tests/test_fs/test_unlink.py ssssssssssssss
with Andy's patch reverted
test/py/tests/test_efi_secboot/test_unsigned.py sss test/py/tests/test_fs/test_basic.py [sudo] password for user: ....................................... test/py/tests/test_fs/test_ext.py ...................... test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py .... test/py/tests/test_fs/test_unlink.py ..............
So the only effect of Andy's patch is to cause skipping tests. As a secondary effect this may have led to less log entries.
Best regards
Heinrich

On Mon, May 17, 2021 at 04:24:46PM +0200, Heinrich Schuchardt wrote:
On 17.05.21 15:21, Heinrich Schuchardt wrote:
On 17.05.21 13:44, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 2:35 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 17.05.21 13:16, Andy Shevchenko wrote:
On Mon, May 17, 2021 at 10:48:33AM +0200, Heinrich Schuchardt wrote:
On 17.05.21 08:33, Andy Shevchenko wrote: > On Thu, May 13, 2021 at 2:41 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote: >> >> Since commit 1ba21bb06b08 ("test: Don't unmount not (yet) mounted system") >> the following tests are skipped: >> >> test/py/tests/test_fs/test_basic.py >> test/py/tests/test_fs/test_ext.py >> >> SKIPPED [13] test/py/tests/test_fs/conftest.py:350: Setup failed for >> filesystem: ext4. Command 'guestmount -a >> build-sandbox/persistent-data/3GB.ext4.img -m /dev/sda >> build-sandbox/persistent-data/mnt' returned non-zero exit status 1. >> >> Let's revert the patch to get our tests back. > > Probably we may understand first what is the root cause of this issue? > > In my case I can't allow this to happen, because it will annoy system > administrators as I mentioned earlier in the commit message. > > So, NAK from me and let's investigate. > Can you provide a command line that I may run on my environment w/o root access?
Hello Andy,
The tests don't require root access if you have installed the libguestfs-tools package and a Linux kernel.
How can I reproduce the problem with duplicate umount?
I was running this 2+ times in a row (*)
./test/py/test.py --bd sandbox --build
(1)
*) I can't run tests right now due to they are more or less constantly broken one way or the other, now
============================================== test session starts ============================================== platform linux -- Python 3.9.2, pytest-6.0.2, py-1.10.0, pluggy-0.13.0 rootdir: /home/andy/prj/u-boot/test/py, configfile: pytest.ini collected 810 items / 1 error / 809 selected
___________________________________ ERROR collecting tests/test_fit_ecdsa.py ____________________________________ E ModuleNotFoundError: No module named 'Cryptodome'
The missing package is available via
apt-get install python3-pycryptodome # Debian/Ubuntu
or
dnf install python3-pycryptodomex # Fedora
Thanks.
So, I have run above mentioned line (1) with current U-Boot (see above), everything is fine, then I have reverted the commit (as your patch does, correct), and oops
test/py/tests/test_efi_secboot/test_unsigned.py sss [ 88%] test/py/tests/test_fs/test_basic.py [sudo] password for andy:
If you are asked for a sudo password, you have not install libguestfs.
Please, install the missing package.
Sorry, try again. [sudo] password for andy: Sorry, try again. [sudo] password for andy: sssssssssssss[sudo] password for andy:
Now I'm waiting for a punishment from the admin, thanks to this test round.
make tests (on my local machine)
with origin/master:
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py sssssssssssssssssssssssssssssssssssssss test/py/tests/test_fs/test_ext.py ssssssssssssssssssssss test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py ssss test/py/tests/test_fs/test_unlink.py ssssssssssssss
with your patch reverted
test/py/tests/test_efi_secboot/test_unsigned.py ... test/py/tests/test_fs/test_basic.py F............F......................... test/py/tests/test_fs/test_ext.py ...................... test/py/tests/test_fs/test_fs_cmd.py . test/py/tests/test_fs/test_mkdir.py ............ test/py/tests/test_fs/test_symlink.py .... test/py/tests/test_fs/test_unlink.py ..............
The failures are caused by dd being called with conv=fsync before mounting with guestfs.
Obviously we have two scenarios to test separately:
- using sudo for mounting
- using guestfs for mounting
I'm not going to repeat this again, please understand me correctly.
I assume that you possess a private laptop where your are the admin. Where is the problem?
Best regards
Heinrich
Here are the test results with guestfs-tools removed:
with origin/master
test/py/tests/test_efi_secboot/test_unsigned.py sss test/py/tests/test_fs/test_basic.py [sudo] password for user: sssssssssssssssssssssssssssssssssssssss
Which means it runs for nopassword groups in sudo, which can be a reasonable thing to do in some cases / machine configurations.

On 17/05/2021 16:21, Heinrich Schuchardt wrote:
If you are asked for a sudo password, you have not install libguestfs.
Please, install the missing package.
This also might have ended up not in PATH like mkfs.* weren't in mine, does e.g. "guestmount --version" work from your shell?

Am 20. Mai 2021 21:33:42 MESZ schrieb Alper Nebi Yasak alpernebiyasak@gmail.com:
On 17/05/2021 16:21, Heinrich Schuchardt wrote:
If you are asked for a sudo password, you have not install
libguestfs.
Please, install the missing package.
This also might have ended up not in PATH like mkfs.* weren't in mine, does e.g. "guestmount --version" work from your shell?
On Debian I had to add /sbin and /usr/sbin to the path to run all tests.
Best regards
Heinrich
participants (4)
-
Alper Nebi Yasak
-
Andy Shevchenko
-
Heinrich Schuchardt
-
Tom Rini