test: Don't unmount not (yet) mounted system
When test suite tries to create a file for a new filesystem test case and fails, the clean up of the exception tries to unmount the image, that has not yet been mounted. When it happens, the fuse_mounted global variable is set to False and inconveniently the test case tries to use sudo, so without this change the admin of the machine gets an (annoying) email: Subject: *** SECURITY information for example.com *** example.com : Feb 5 19:43:47 : ... COMMAND=/bin/umount .../build-sandbox/persistent-data/mnt and second run of the test cases on uncleaned build folder will ask for sudo which is not what expected. Besides that there is a double unmount calls during successfully run test case. All of these due to over engineered Python try-except clause and people didn't get it properly at all. The rule of thumb is that don't use more keywords than try-except in the exception handling code. Nevertheless, here we adjust code to be less intrusive to the initial logic behind that complex and unclear constructions in the test case, although it adds a lot of lines of the code, i.e. splits one exception handler to three, so on each step we know what cleanup shall perform. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
dd85c9500c
commit
1ba21bb06b
@ -270,9 +270,20 @@ def fs_obj_basic(request, u_boot_config):
|
|||||||
|
|
||||||
# 3GiB volume
|
# 3GiB volume
|
||||||
fs_img = mk_fs(u_boot_config, fs_type, 0xc0000000, '3GB')
|
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
|
||||||
|
|
||||||
# Mount the image so we can populate it.
|
try:
|
||||||
check_call('mkdir -p %s' % mount_dir, shell=True)
|
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.
|
||||||
mount_fs(fs_type, fs_img, mount_dir)
|
mount_fs(fs_type, fs_img, mount_dir)
|
||||||
|
|
||||||
# Create a subdirectory.
|
# Create a subdirectory.
|
||||||
@ -335,18 +346,15 @@ def fs_obj_basic(request, u_boot_config):
|
|||||||
% big_file, shell=True).decode()
|
% big_file, shell=True).decode()
|
||||||
md5val.append(out.split()[0])
|
md5val.append(out.split()[0])
|
||||||
|
|
||||||
umount_fs(mount_dir)
|
|
||||||
except CalledProcessError as err:
|
except CalledProcessError as err:
|
||||||
pytest.skip('Setup failed for filesystem: ' + fs_type + \
|
pytest.skip('Setup failed for filesystem: ' + fs_type + '. {}'.format(err))
|
||||||
'. {}'.format(err))
|
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
yield [fs_ubtype, fs_img, md5val]
|
yield [fs_ubtype, fs_img, md5val]
|
||||||
finally:
|
finally:
|
||||||
umount_fs(mount_dir)
|
umount_fs(mount_dir)
|
||||||
call('rmdir %s' % mount_dir, shell=True)
|
call('rmdir %s' % mount_dir, shell=True)
|
||||||
if fs_img:
|
call('rm -f %s' % fs_img, shell=True)
|
||||||
call('rm -f %s' % fs_img, shell=True)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Fixture for extended fs test
|
# Fixture for extended fs test
|
||||||
@ -378,9 +386,20 @@ def fs_obj_ext(request, u_boot_config):
|
|||||||
|
|
||||||
# 128MiB volume
|
# 128MiB volume
|
||||||
fs_img = mk_fs(u_boot_config, fs_type, 0x8000000, '128MB')
|
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
|
||||||
|
|
||||||
# Mount the image so we can populate it.
|
try:
|
||||||
check_call('mkdir -p %s' % mount_dir, shell=True)
|
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.
|
||||||
mount_fs(fs_type, fs_img, mount_dir)
|
mount_fs(fs_type, fs_img, mount_dir)
|
||||||
|
|
||||||
# Create a test directory
|
# Create a test directory
|
||||||
@ -422,7 +441,6 @@ def fs_obj_ext(request, u_boot_config):
|
|||||||
md5val.append(out.split()[0])
|
md5val.append(out.split()[0])
|
||||||
|
|
||||||
check_call('rm %s' % tmp_file, shell=True)
|
check_call('rm %s' % tmp_file, shell=True)
|
||||||
umount_fs(mount_dir)
|
|
||||||
except CalledProcessError:
|
except CalledProcessError:
|
||||||
pytest.skip('Setup failed for filesystem: ' + fs_type)
|
pytest.skip('Setup failed for filesystem: ' + fs_type)
|
||||||
return
|
return
|
||||||
@ -431,8 +449,7 @@ def fs_obj_ext(request, u_boot_config):
|
|||||||
finally:
|
finally:
|
||||||
umount_fs(mount_dir)
|
umount_fs(mount_dir)
|
||||||
call('rmdir %s' % mount_dir, shell=True)
|
call('rmdir %s' % mount_dir, shell=True)
|
||||||
if fs_img:
|
call('rm -f %s' % fs_img, shell=True)
|
||||||
call('rm -f %s' % fs_img, shell=True)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Fixture for mkdir test
|
# Fixture for mkdir test
|
||||||
@ -460,11 +477,10 @@ def fs_obj_mkdir(request, u_boot_config):
|
|||||||
fs_img = mk_fs(u_boot_config, fs_type, 0x8000000, '128MB')
|
fs_img = mk_fs(u_boot_config, fs_type, 0x8000000, '128MB')
|
||||||
except:
|
except:
|
||||||
pytest.skip('Setup failed for filesystem: ' + fs_type)
|
pytest.skip('Setup failed for filesystem: ' + fs_type)
|
||||||
|
return
|
||||||
else:
|
else:
|
||||||
yield [fs_ubtype, fs_img]
|
yield [fs_ubtype, fs_img]
|
||||||
finally:
|
call('rm -f %s' % fs_img, shell=True)
|
||||||
if fs_img:
|
|
||||||
call('rm -f %s' % fs_img, shell=True)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Fixture for unlink test
|
# Fixture for unlink test
|
||||||
@ -493,9 +509,20 @@ def fs_obj_unlink(request, u_boot_config):
|
|||||||
|
|
||||||
# 128MiB volume
|
# 128MiB volume
|
||||||
fs_img = mk_fs(u_boot_config, fs_type, 0x8000000, '128MB')
|
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
|
||||||
|
|
||||||
# Mount the image so we can populate it.
|
try:
|
||||||
check_call('mkdir -p %s' % mount_dir, shell=True)
|
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.
|
||||||
mount_fs(fs_type, fs_img, mount_dir)
|
mount_fs(fs_type, fs_img, mount_dir)
|
||||||
|
|
||||||
# Test Case 1 & 3
|
# Test Case 1 & 3
|
||||||
@ -519,7 +546,6 @@ def fs_obj_unlink(request, u_boot_config):
|
|||||||
check_call('dd if=/dev/urandom of=%s/dir5/file1 bs=1K count=1'
|
check_call('dd if=/dev/urandom of=%s/dir5/file1 bs=1K count=1'
|
||||||
% mount_dir, shell=True)
|
% mount_dir, shell=True)
|
||||||
|
|
||||||
umount_fs(mount_dir)
|
|
||||||
except CalledProcessError:
|
except CalledProcessError:
|
||||||
pytest.skip('Setup failed for filesystem: ' + fs_type)
|
pytest.skip('Setup failed for filesystem: ' + fs_type)
|
||||||
return
|
return
|
||||||
@ -528,8 +554,7 @@ def fs_obj_unlink(request, u_boot_config):
|
|||||||
finally:
|
finally:
|
||||||
umount_fs(mount_dir)
|
umount_fs(mount_dir)
|
||||||
call('rmdir %s' % mount_dir, shell=True)
|
call('rmdir %s' % mount_dir, shell=True)
|
||||||
if fs_img:
|
call('rm -f %s' % fs_img, shell=True)
|
||||||
call('rm -f %s' % fs_img, shell=True)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Fixture for symlink fs test
|
# Fixture for symlink fs test
|
||||||
@ -559,11 +584,22 @@ def fs_obj_symlink(request, u_boot_config):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
# 3GiB volume
|
# 1GiB volume
|
||||||
fs_img = mk_fs(u_boot_config, fs_type, 0x40000000, '1GB')
|
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
|
||||||
|
|
||||||
# Mount the image so we can populate it.
|
try:
|
||||||
check_call('mkdir -p %s' % mount_dir, shell=True)
|
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.
|
||||||
mount_fs(fs_type, fs_img, mount_dir)
|
mount_fs(fs_type, fs_img, mount_dir)
|
||||||
|
|
||||||
# Create a subdirectory.
|
# Create a subdirectory.
|
||||||
@ -587,7 +623,6 @@ def fs_obj_symlink(request, u_boot_config):
|
|||||||
% medium_file, shell=True).decode()
|
% medium_file, shell=True).decode()
|
||||||
md5val.extend([out.split()[0]])
|
md5val.extend([out.split()[0]])
|
||||||
|
|
||||||
umount_fs(mount_dir)
|
|
||||||
except CalledProcessError:
|
except CalledProcessError:
|
||||||
pytest.skip('Setup failed for filesystem: ' + fs_type)
|
pytest.skip('Setup failed for filesystem: ' + fs_type)
|
||||||
return
|
return
|
||||||
@ -596,5 +631,4 @@ def fs_obj_symlink(request, u_boot_config):
|
|||||||
finally:
|
finally:
|
||||||
umount_fs(mount_dir)
|
umount_fs(mount_dir)
|
||||||
call('rmdir %s' % mount_dir, shell=True)
|
call('rmdir %s' % mount_dir, shell=True)
|
||||||
if fs_img:
|
call('rm -f %s' % fs_img, shell=True)
|
||||||
call('rm -f %s' % fs_img, shell=True)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user