[Fuego] [PATCH] nfs: Add test cases for nfs.
Wang Mingyu <[email protected]>
| Newsgroups | dev.linux.lists.fuego |
|---|---|
| Message-ID | <[email protected]> |
This test set is used to check service(nfs-mountd/nfs-statd) and commands(nfsiostat/nfsserver/nfsstat) of nfs. Signed-off-by: Wang Mingyu <[email protected]> --- tests/Functional.nfs/fuego_test.sh | 22 +++++ tests/Functional.nfs/nfs_test.sh | 4 + tests/Functional.nfs/spec.json | 7 ++ tests/Functional.nfs/tests/nfs-mountd_ps.sh | 69 +++++++++++++++ tests/Functional.nfs/tests/nfs-statd_ps.sh | 50 +++++++++++ tests/Functional.nfs/tests/nfsiostat.sh | 60 +++++++++++++ tests/Functional.nfs/tests/nfsserver_ps.sh | 96 +++++++++++++++++++++ tests/Functional.nfs/tests/nfsstat.sh | 32 +++++++ 8 files changed, 340 insertions(+) create mode 100644 tests/Functional.nfs/fuego_test.sh create mode 100755 tests/Functional.nfs/nfs_test.sh create mode 100644 tests/Functional.nfs/spec.json create mode 100644 tests/Functional.nfs/tests/nfs-mountd_ps.sh create mode 100644 tests/Functional.nfs/tests/nfs-statd_ps.sh create mode 100644 tests/Functional.nfs/tests/nfsiostat.sh create mode 100644 tests/Functional.nfs/tests/nfsserver_ps.sh create mode 100644 tests/Functional.nfs/tests/nfsstat.sh diff --git a/tests/Functional.nfs/fuego_test.sh b/tests/Functional.nfs/fuego_test.sh new file mode 100644 index 0000000..624c25f --- /dev/null +++ b/tests/Functional.nfs/fuego_test.sh @@ -0,0 +1,22 @@ +function test_pre_check { + assert_has_program nfsstat + assert_has_program nfsiostat + assert_has_program rpc.nfsd + assert_has_program rpc.statd + assert_has_program rpc.mountd +} + +function test_deploy { + put $TEST_HOME/nfs_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/ + put $FUEGO_CORE/scripts/fuego_board_function_lib.sh $BOARD_TESTDIR/fuego.$TESTDIR + put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/ +} + +function test_run { + report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\ + ./nfs_test.sh" +} + +function test_processing { + log_compare "$TESTDIR" "0" "TEST-FAIL" "n" +} diff --git a/tests/Functional.nfs/nfs_test.sh b/tests/Functional.nfs/nfs_test.sh new file mode 100755 index 0000000..dd5ce37 --- /dev/null +++ b/tests/Functional.nfs/nfs_test.sh @@ -0,0 +1,4 @@ +#!/bin/sh +for i in tests/*.sh; do + sh $i +done diff --git a/tests/Functional.nfs/spec.json b/tests/Functional.nfs/spec.json new file mode 100644 index 0000000..69a241c --- /dev/null +++ b/tests/Functional.nfs/spec.json @@ -0,0 +1,7 @@ +{ + "testName": "Functional.nfs", + "specs": { + "default": {} + } +} + diff --git a/tests/Functional.nfs/tests/nfs-mountd_ps.sh b/tests/Functional.nfs/tests/nfs-mountd_ps.sh new file mode 100644 index 0000000..c24345e --- /dev/null +++ b/tests/Functional.nfs/tests/nfs-mountd_ps.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +# In the target start nfs-mountd, and confirm the process condition by command ps. + +test="nfs-mountd_ps" + +. ./fuego_board_function_lib.sh + +set_init_manager + +service_status=$(get_service_status nfs-mountd) +exec_service_on_target nfs-mountd stop + +if [ -f /etc/exports ] +then + mv /etc/exports /etc/exports_bak +fi + +touch /etc/exports + +restore_target() { + if [ -f /etc/exports_bak ] + then + mv /etc/exports_bak /etc/exports + else + rm -f /etc/exports + fi +} + +if exec_service_on_target nfs-mountd start +then + echo " -> start of nfs-mountd succeeded." +else + echo " -> start of nfs-mountd failed." + echo " -> $test: TEST-FAIL" + restore_target + exit +fi + +sleep 5 + +if ps aux | grep "[/]usr/sbin/rpc.mountd" +then + echo " -> get the process of rpc.mountd." +else + echo " -> can't get the process of rpc.mountd." + echo " -> $test: TEST-FAIL" + if [ "$service_status" = "inactive" ] + then + exec_service_on_target nfs-mountd stop + fi + restore_target + exit +fi + +exec_service_on_target nfs-mountd stop + +if ps aux | grep "[/]usr/sbin/rpc.mountd" +then + echo " -> $test: TEST-FAIL" +else + echo " -> $test: TEST-PASS" +fi + +if [ "$service_status" = "active" -o "$service_status" = "unknown"] +then + exec_service_on_target nfs-mountd start +fi +restore_target diff --git a/tests/Functional.nfs/tests/nfs-statd_ps.sh b/tests/Functional.nfs/tests/nfs-statd_ps.sh new file mode 100644 index 0000000..43dc43b --- /dev/null +++ b/tests/Functional.nfs/tests/nfs-statd_ps.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +# In the target start nfs-statd, and confirm the process condition by command ps. + +test="nfs-statd_ps" + +. ./fuego_board_function_lib.sh + +set_init_manager + +service_status=$(get_service_status nfs-statd) +exec_service_on_target nfs-statd stop + +if exec_service_on_target nfs-statd start +then + echo " -> start of nfs-statd succeeded." +else + echo " -> start of nfs-statd failed." + echo " -> $test: TEST-FAIL" + exit +fi + +sleep 5 + +if ps aux | grep "[/]usr/sbin/rpc.statd" +then + echo " -> get the process of rpc.statd." +else + echo " -> can't get the process of rpc.statd." + echo " -> $test: TEST-FAIL" + if [ "$service_status" = "inactive" ] + then + exec_service_on_target nfs-statd stop + fi + exit +fi + +exec_service_on_target nfs-statd stop + +if ps aux | grep "[/]usr/sbin/rpc.statd" +then + echo " -> $test: TEST-FAIL" +else + echo " -> $test: TEST-PASS" +fi + +if [ "$service_status" = "active" -o "$service_status" = "unknown" ] +then + exec_service_on_target nfs-statd start +fi diff --git a/tests/Functional.nfs/tests/nfsiostat.sh b/tests/Functional.nfs/tests/nfsiostat.sh new file mode 100644 index 0000000..c1a683d --- /dev/null +++ b/tests/Functional.nfs/tests/nfsiostat.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +# In the target run the command nfiosstat, and displays NFS client per-mount statisitics.. +# option : -a, -d, -h, -p, -s, --version + +test="nfsiostat" + +if nfsiostat -a | grep "attribute cache" +then + echo " -> Display statistics related to the attribute cache succeeded." +else + echo " -> Display statistics related to the attribute cache failed." + echo " -> $test: TEST-FAIL" + exit +fi + +if nfsiostat -d | grep "lookup" +then + echo " -> Display statistics related to directory operations succeeded." +else + echo " -> Display statistics related to directory operations failed." + echo " -> $test: TEST-FAIL" + exit +fi + +if nfsiostat -h | grep "Usage" +then + echo " -> Show help message succeeded." +else + echo " -> Show help message failed." + echo " -> $test: TEST-FAIL" + exit +fi + +if nfsiostat -p | grep "page" +then + echo " -> Display statistics related to the page cache succeeded." +else + echo " -> Display statistics related to the page cache failed." + echo " -> $test: TEST-FAIL" + exit +fi + + +if nfsiostat -s | grep "ops" +then + echo " -> Sort NFS mount points by ops/second succeeded." +else + echo " -> Sort NFS mount points by ops/second failed." + echo " -> $test: TEST-FAIL" + exit +fi + +if nfsiostat --version | grep "version" +then + echo " -> $test: TEST-PASS" +else + echo " -> Show version number failed." + echo " -> $test: TEST-FAIL" +fi diff --git a/tests/Functional.nfs/tests/nfsserver_ps.sh b/tests/Functional.nfs/tests/nfsserver_ps.sh new file mode 100644 index 0000000..ddb4483 --- /dev/null +++ b/tests/Functional.nfs/tests/nfsserver_ps.sh @@ -0,0 +1,96 @@ +#!/bin/sh + +# In the target start nfsserver, and confirm the process condition by command ps. + +test="nfsserver_ps" + +. ./fuego_board_function_lib.sh + +set_init_manager + +if [ "$init_manager" = "systemd" ] +then + service_name="nfs-server" +else + service_name="nfsserver" +fi + +nfs_status=$(get_service_status $service_name) + +rpcbind_status=$(get_service_status rpcbind) + +exec_service_on_target $service_name stop +exec_service_on_target rpcbind stop + +if [ -f /etc/exports ] +then + mv /etc/exports /etc/exports_bak +fi + +touch /etc/exports + +restore_target() { + if [ -f /etc/exports_bak ] + then + mv /etc/exports_bak /etc/exports + else + rm -f /etc/exports + fi +} + +exec_service_on_target rpcbind start +if exec_service_on_target $service_name start +then + echo " -> start of nfsserver succeeded." +else + echo " -> start of nfsserver failed." + echo " -> $test: TEST-FAIL" + if [ "$rpcbind_status" = "inactive" ] + then + exec_service_on_target rpcbind stop + fi + restore_target + exit +fi + +sleep 5 + +if ps aux | grep "[\[]nfsd" +then + echo " -> get the process of nfsd." +else + echo " -> can't get the process of nfsd." + echo " -> $test: TEST-FAIL" + if [ "$rpcbind_status" = "inactive" ] + then + exec_service_on_target rpcbind stop + fi + if [ "$nfs_status" = "inactive" ] + then + exec_service_on_target $service_name stop + fi + restore_target + exit +fi + +exec_service_on_target rpcbind stop +exec_service_on_target $service_name stop + +sleep 5 + +if ps aux | grep "[\[]nfsd" +then + echo " -> $test: TEST-FAIL" +else + echo " -> $test: TEST-PASS" +fi +restore_target +if [ "$rpcbind_status" = "active" -o "$rpcbind_status" = "unknown" ] +then + exec_service_on_target rpcbind start +fi + +if [ "$nfs_status" = "active" -o "$nfs_status" = "unknown" ] +then + exec_service_on_target $service_name start +fi diff --git a/tests/Functional.nfs/tests/nfsstat.sh b/tests/Functional.nfs/tests/nfsstat.sh new file mode 100644 index 0000000..b579206 --- /dev/null +++ b/tests/Functional.nfs/tests/nfsstat.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +# In the target run the command nfsstat, and display statistics kept about NFS client and server activity. +# option : -r, -c, -s + +test="nfsstat" + +if nfsstat -c | grep "Client" +then + echo " -> Print only client-side statistics succeeded." +else + echo " -> Print only client-side statistics failed." + echo " -> $test: TEST-FAIL" + exit +fi + +if nfsstat -r | grep "rpc" +then + echo " -> Print only RPC statistics succeeded." +else + echo " -> Print only RPC statistics failed." + echo " -> $test: TEST-FAIL" + exit +fi + +if nfsstat -s | grep "Server" +then + echo " -> $test: TEST-PASS" +else + echo " -> Print only server-side statistics failed." + echo " -> $test: TEST-FAIL" +fi -- 2.17.1