Whenever a failure, close NFS cleanly. Signed-off-by: Richard Haines <richard_c_haines@xxxxxxxxxxxxxx> --- V2 Changes: Revamp error handling to cover all cases tools/nfs.sh | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/tools/nfs.sh b/tools/nfs.sh index 314f898..7ba4cfc 100755 --- a/tools/nfs.sh +++ b/tools/nfs.sh @@ -1,14 +1,33 @@ #!/bin/sh -e MOUNT=`stat --print %m .` TESTDIR=`pwd` -systemctl start nfs-server +MAKE_TEST=0 + +function err_exit() { + if [ $MAKE_TEST -eq 1 ]; then + echo "Closing down NFS" + popd + else + echo "Error on line: $1 - Closing down NFS" + fi + umount /mnt/selinux-testsuite + exportfs -u localhost:$MOUNT + rmdir /mnt/selinux-testsuite + systemctl stop nfs-server + exit 1 +} + +trap 'err_exit $LINENO' ERR +systemctl start nfs-server # Run the full testsuite on a labeled NFS mount. exportfs -orw,no_root_squash,security_label localhost:$MOUNT mkdir -p /mnt/selinux-testsuite mount -t nfs -o vers=4.2 localhost:$TESTDIR /mnt/selinux-testsuite pushd /mnt/selinux-testsuite +MAKE_TEST=1 make test +MAKE_TEST=0 popd umount /mnt/selinux-testsuite @@ -18,7 +37,7 @@ echo "Testing context mount of a security_label export." fctx=`secon -t -f /mnt/selinux-testsuite` if [ "$fctx" != "etc_t" ]; then echo "Context mount failed: got $fctx instead of etc_t." - exit 1 + err_exit $LINENO fi umount /mnt/selinux-testsuite exportfs -u localhost:$MOUNT @@ -30,7 +49,7 @@ echo "Testing context mount of a non-security_label export." fctx=`secon -t -f /mnt/selinux-testsuite` if [ "$fctx" != "etc_t" ]; then echo "Context mount failed: got $fctx instead of etc_t." - exit 1 + err_exit $LINENO fi umount /mnt/selinux-testsuite @@ -40,7 +59,7 @@ echo "Testing non-context mount of a non-security_label export." fctx=`secon -t -f /mnt/selinux-testsuite` if [ "$fctx" != "nfs_t" ]; then echo "Context mount failed: got $fctx instead of nfs_t." - exit 1 + err_exit $LINENO fi umount /mnt/selinux-testsuite -- 2.24.1