chore(ci): debug oe_test_nfs

This commit is contained in:
2026-04-17 14:35:56 +08:00
parent f4e76c8be3
commit cd0f47a448

View File

@@ -38,56 +38,76 @@ function pre_test() {
export LANG=en_US.UTF-8 export LANG=en_US.UTF-8
DNF_INSTALL "nfs-utils nfs4-acl-tools diffutils" DNF_INSTALL "nfs-utils nfs4-acl-tools diffutils"
useradd $test_user useradd $test_user
mkdir $server_dir $client_dir mkdir -p $server_dir $client_dir
test -f /etc/exports && cp /etc/exports . chmod 755 $server_dir $client_dir
echo "$server_dir *(rw,sync,no_root_squash)" >>/etc/exports
exportfs -avr test -f /etc/exports && cp /etc/exports ./exports.bak
echo "$server_dir *(rw,sync,no_root_squash,no_subtree_check)" > /etc/exports
exportfs -rav
CHECK_RESULT $?
systemctl enable --now nfs-server rpcbind
CHECK_RESULT $?
sleep 2
systemctl is-active nfs-server | grep -q active
CHECK_RESULT $? "nfs-server service is not running"
systemctl is-active rpcbind | grep -q active
CHECK_RESULT $? "rpcbind service is not running"
LOG_INFO "End of environmental preparation!" LOG_INFO "End of environmental preparation!"
} }
function run_test() { function run_test() {
LOG_INFO "Start testing..." LOG_INFO "Start testing..."
systemctl restart nfs-server
CHECK_RESULT $?
systemctl status nfs-server | grep 'Active: active'
CHECK_RESULT $?
systemctl restart rpcbind
CHECK_RESULT $?
systemctl status rpcbind | grep 'Active: active'
CHECK_RESULT $?
showmount -e localhost | grep -w "$server_dir" showmount -e localhost | grep -w "$server_dir"
CHECK_RESULT $? CHECK_RESULT $? "showmount failed to display export directory"
mount -t nfs4 localhost:$server_dir $client_dir mount -t nfs4 localhost:$server_dir $client_dir
CHECK_RESULT $? CHECK_RESULT $? "Failed to mount NFS share"
echo "$$" >$client_dir/file
echo "$$" > $client_dir/file
CHECK_RESULT $? "Failed to write file to NFS mount"
diff $server_dir/file $client_dir/file diff $server_dir/file $client_dir/file
CHECK_RESULT $? CHECK_RESULT $? "File content mismatch between server and client"
chmod 640 $client_dir/file chmod 640 $client_dir/file
sudo -u $test_user cat $client_dir/file 2>/tmp/error.log && return 1 sudo -u $test_user cat $client_dir/file 2>/tmp/error.log && return 1
grep "Permission denied" /tmp/error.log grep -q "Permission denied" /tmp/error.log
CHECK_RESULT $? CHECK_RESULT $? "Expected permission denied error not found"
uid=$(id -u $test_user) uid=$(id -u $test_user)
nfs4_setfacl -a "A::${uid}:r" $client_dir/file nfs4_setfacl -a "A::${uid}:r" $client_dir/file
CHECK_RESULT $? CHECK_RESULT $? "Failed to set NFS4 ACL"
nfs4_getfacl $client_dir/file | grep "A::${uid}:r" nfs4_getfacl $client_dir/file | grep "A::${uid}:r"
CHECK_RESULT $? CHECK_RESULT $? "NFS4 ACL verification failed"
sudo -u $test_user cat $client_dir/file sudo -u $test_user cat $client_dir/file
CHECK_RESULT $? "User cannot read file with ACL permissions"
umount $client_dir umount $client_dir
CHECK_RESULT $? CHECK_RESULT $? "Failed to unmount NFS share"
LOG_INFO "Finish test!" LOG_INFO "Finish test!"
} }
function post_test() { function post_test() {
LOG_INFO "start environment cleanup." LOG_INFO "start environment cleanup."
umount $client_dir umount $client_dir 2>/dev/null || true
rm -rf $client_dir $server_dir rm -rf $client_dir $server_dir
userdel -r $test_user userdel -r $test_user 2>/dev/null || true
rm -f /tmp/error.log rm -f /tmp/error.log
test -f exports && mv exports /etc/exports test -f exports.bak && mv exports.bak /etc/exports || rm -f /etc/exports
exportfs -rav 2>/dev/null || true
DNF_REMOVE "$@" DNF_REMOVE "$@"
export LANG=${OLD_LANG} export LANG=${OLD_LANG}
LOG_INFO "Finish environment cleanup!" LOG_INFO "Finish environment cleanup!"
} }
main "$@" main "$@"