[Fuego] [PATCH] nfs: Add test cases for nfs.

Wang Mingyu wangmy at cn.fujitsu.com
Wed Sep 4 01:09:21 UTC 2019


This test set is used to check service(nfs-mountd/nfs-statd) and commands(nfsiostat/nfsserver/nfsstat) of nfs.

Signed-off-by: Wang Mingyu <wangmy at cn.fujitsu.com>
---
 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





More information about the Fuego mailing list