[Fuego] [PATCH v4] Add test cases for commands of module-init-tools.

Zheng Ruoqin zhengrq.fnst at cn.fujitsu.com
Mon Feb 11 02:06:16 UTC 2019


In default, these cases test kernel module uvesafb defined in spec.json.
If there is no uvesafb in your board, you can modify spec.json to use an existing module instead of uvesafb.

Signed-off-by: Wang Mingyu <wangmy at cn.fujitsu.com>
Signed-off-by: Zheng Ruoqin <zhengrq.fnst at cn.fujitsu.com>
---
 tests/Functional.module_init_tools/fuego_test.sh   | 27 +++++++++++++
 .../module-init-tools_test.sh                      |  6 +++
 tests/Functional.module_init_tools/parser.py       | 22 +++++++++++
 tests/Functional.module_init_tools/spec.json       |  8 ++++
 .../tests/module-init-tools_depmod.sh              | 29 ++++++++++++++
 .../tests/module-init-tools_insmod.sh              | 38 +++++++++++++++++++
 .../tests/module-init-tools_lsmod.sh               | 39 +++++++++++++++++++
 .../tests/module-init-tools_modinfo.sh             | 15 ++++++++
 .../tests/module-init-tools_modprobe.sh            | 35 +++++++++++++++++
 .../tests/module-init-tools_rmmod.sh               | 44 ++++++++++++++++++++++
 10 files changed, 263 insertions(+)
 create mode 100644 tests/Functional.module_init_tools/fuego_test.sh
 create mode 100755 tests/Functional.module_init_tools/module-init-tools_test.sh
 create mode 100644 tests/Functional.module_init_tools/parser.py
 create mode 100644 tests/Functional.module_init_tools/spec.json
 create mode 100644 tests/Functional.module_init_tools/tests/module-init-tools_depmod.sh
 create mode 100644 tests/Functional.module_init_tools/tests/module-init-tools_insmod.sh
 create mode 100644 tests/Functional.module_init_tools/tests/module-init-tools_lsmod.sh
 create mode 100644 tests/Functional.module_init_tools/tests/module-init-tools_modinfo.sh
 create mode 100644 tests/Functional.module_init_tools/tests/module-init-tools_modprobe.sh
 create mode 100644 tests/Functional.module_init_tools/tests/module-init-tools_rmmod.sh

diff --git a/tests/Functional.module_init_tools/fuego_test.sh b/tests/Functional.module_init_tools/fuego_test.sh
new file mode 100644
index 0000000..1e07a8f
--- /dev/null
+++ b/tests/Functional.module_init_tools/fuego_test.sh
@@ -0,0 +1,27 @@
+NEED_ROOT=1 
+MODULE_NAME=$FUNCTIONAL_MODULE_INIT_TOOLS_TEST_MODULE_NAME
+
+function test_pre_check {
+    assert_has_program depmod
+    assert_has_program insmod
+    assert_has_program lsmod
+    assert_has_program rmmod
+    assert_has_program modinfo
+    assert_has_program modprobe
+    cmd "modinfo $MODULE_NAME" || abort_job "Missing $MODULE_NAME.ko kernel module"
+}
+
+function test_deploy {
+    put $TEST_HOME/module-init-tools_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;\
+    ./module-init-tools_test.sh $MODULE_NAME"
+}
+
+function test_processing {
+    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
+}
diff --git a/tests/Functional.module_init_tools/module-init-tools_test.sh b/tests/Functional.module_init_tools/module-init-tools_test.sh
new file mode 100755
index 0000000..6579f7f
--- /dev/null
+++ b/tests/Functional.module_init_tools/module-init-tools_test.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+export MODULE_NAME=$1
+
+for i in tests/*.sh; do
+    sh $i
+done
diff --git a/tests/Functional.module_init_tools/parser.py b/tests/Functional.module_init_tools/parser.py
new file mode 100644
index 0000000..db3d69b
--- /dev/null
+++ b/tests/Functional.module_init_tools/parser.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python
+# See common.py for description of command-line arguments
+
+import os, sys, collections
+
+sys.path.insert(0, os.environ['FUEGO_CORE'] + '/scripts/parser')
+import common as plib
+
+measurements = {}
+measurements = collections.OrderedDict()
+
+regex_string = '^ -> (.*): TEST-(.*)$'
+matches = plib.parse_log(regex_string)
+
+if matches:
+    for m in matches:
+        measurements['default.' + m[0]] = 'PASS' if m[1] == 'PASS' else 'FAIL'
+
+# split the output for each testcase
+plib.split_output_per_testcase(regex_string, measurements)
+
+sys.exit(plib.process(measurements))
diff --git a/tests/Functional.module_init_tools/spec.json b/tests/Functional.module_init_tools/spec.json
new file mode 100644
index 0000000..532518c
--- /dev/null
+++ b/tests/Functional.module_init_tools/spec.json
@@ -0,0 +1,8 @@
+{
+    "testName": "Functional.module_init_tools",
+    "specs": {
+        "default": {
+            "test_module_name": "uvesafb"
+        }
+    }
+}
diff --git a/tests/Functional.module_init_tools/tests/module-init-tools_depmod.sh b/tests/Functional.module_init_tools/tests/module-init-tools_depmod.sh
new file mode 100644
index 0000000..29d31b6
--- /dev/null
+++ b/tests/Functional.module_init_tools/tests/module-init-tools_depmod.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+#  In target, run command depmod.
+#  option: none
+
+test="depmod"
+
+test_krnl_rel=$(uname -r)
+
+if [ -f /lib/modules/$test_krnl_rel/modules.dep ]
+then
+    mv /lib/modules/$test_krnl_rel/modules.dep /lib/modules/$test_krnl_rel/modules.dep_bak
+fi
+
+depmod
+
+if ls -l /lib/modules/$test_krnl_rel/modules.dep
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+if [ -f /lib/modules/$test_krnl_rel/modules.dep_bak ]
+then
+    mv /lib/modules/$test_krnl_rel/modules.dep_bak /lib/modules/$test_krnl_rel/modules.dep
+else
+    rm /lib/modules/$test_krnl_rel/modules.dep
+fi
diff --git a/tests/Functional.module_init_tools/tests/module-init-tools_insmod.sh b/tests/Functional.module_init_tools/tests/module-init-tools_insmod.sh
new file mode 100644
index 0000000..df5fdf6
--- /dev/null
+++ b/tests/Functional.module_init_tools/tests/module-init-tools_insmod.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+#  In target, run command insmod.
+#  option: none
+
+test="insmod"
+
+tst_mod_file="ko file of module"
+
+if modinfo $MODULE_NAME
+then
+    tst_mod_file=$(modinfo $MODULE_NAME | head -n 1 | cut -d' ' -f8)
+else
+    echo " -> module $MODULE_NAME is not exist."
+    echo " -> $test: TEST-FAIL"
+    exit
+fi
+
+mkdir test_dir
+cp $tst_mod_file test_dir/
+
+# If the module is already loaded, the insmod test goes pass.
+if lsmod | grep $MODULE_NAME
+then
+    echo " -> $test: TEST-PASS"
+    rm -fr test_dir
+    exit 0
+fi
+
+if insmod test_dir/*.ko
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+rmmod $tst_mod_file
+rm -fr test_dir
diff --git a/tests/Functional.module_init_tools/tests/module-init-tools_lsmod.sh b/tests/Functional.module_init_tools/tests/module-init-tools_lsmod.sh
new file mode 100644
index 0000000..9e4ed9f
--- /dev/null
+++ b/tests/Functional.module_init_tools/tests/module-init-tools_lsmod.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+#  In target, run command lsmod.
+#  option: none
+
+test="lsmod"
+
+tst_mod_file="ko file of module"
+
+if modinfo $MODULE_NAME
+then
+    tst_mod_file=$(modinfo $MODULE_NAME | head -n 1 | cut -d' ' -f8)
+else
+    echo " -> module $MODULE_NAME is not exist."
+    echo " -> $test: TEST-FAIL"
+    exit
+fi
+
+if lsmod | grep $MODULE_NAME
+then
+    echo " -> $test: TEST-PASS"
+    exit
+fi
+
+mkdir test_dir
+cp $tst_mod_file test_dir/
+
+insmod test_dir/*.ko
+
+if lsmod | grep $MODULE_NAME
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+rmmod $tst_mod_file
+rm -fr test_dir
+
diff --git a/tests/Functional.module_init_tools/tests/module-init-tools_modinfo.sh b/tests/Functional.module_init_tools/tests/module-init-tools_modinfo.sh
new file mode 100644
index 0000000..85c1656
--- /dev/null
+++ b/tests/Functional.module_init_tools/tests/module-init-tools_modinfo.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+#  In target, run command modinfo.
+#  option: none
+
+test="modinfo"
+
+if modinfo $MODULE_NAME | grep "filename"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> module $MODULE_NAME is not exist."
+    echo " -> $test: TEST-FAIL"
+    exit
+fi
diff --git a/tests/Functional.module_init_tools/tests/module-init-tools_modprobe.sh b/tests/Functional.module_init_tools/tests/module-init-tools_modprobe.sh
new file mode 100644
index 0000000..6ae675c
--- /dev/null
+++ b/tests/Functional.module_init_tools/tests/module-init-tools_modprobe.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+#  In target, run command modprobe.
+#  option: modprobe
+
+test="modprobe"
+
+tst_mod_file="ko file of module"
+test_krnl_rel=$(uname -r)
+
+if modinfo $MODULE_NAME
+then
+    tst_mod_file=$(modinfo $MODULE_NAME | head -n 1 | cut -d' ' -f8)
+else
+    echo " -> module $MODULE_NAME is not exist."
+    echo " -> $test: TEST-FAIL"
+    exit
+fi
+
+# '-D' means only print module dependencies and exit
+if modprobe -D uvesafb | grep "insmod $tst_mod_file"
+then
+    echo " -> $test: modprobe -D succeeded."
+else
+    echo " -> $test: modprobe -D failed."
+    echo " -> $test: TEST-FAIL"
+    exit
+fi
+
+if cat /lib/modules/$test_krnl_rel/modules.dep | grep "$MODULE_NAME.ko"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
diff --git a/tests/Functional.module_init_tools/tests/module-init-tools_rmmod.sh b/tests/Functional.module_init_tools/tests/module-init-tools_rmmod.sh
new file mode 100644
index 0000000..192bf4e
--- /dev/null
+++ b/tests/Functional.module_init_tools/tests/module-init-tools_rmmod.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+#  In target, run command rmmod.
+#  option: none
+
+test="rmmod"
+
+tst_mod_file="ko file of module"
+tst_mod_flag=0
+
+if modinfo $MODULE_NAME
+then
+    tst_mod_file=$(modinfo $MODULE_NAME | sed -n 1p | cut -d' ' -f8)
+else
+    echo " -> module $MODULE_NAME is not exist."
+    echo " -> $test: TEST-FAIL"
+    exit
+fi
+
+mkdir test_dir
+cp $tst_mod_file test_dir/
+
+if lsmod | grep $MODULE_NAME
+then
+    tst_mod_flag=1
+    rmmod $tst_mod_file
+else 
+    insmod test_dir/*.ko
+    rmmod $tst_mod_file
+fi
+
+
+if lsmod | grep $MODULE_NAME
+then
+    echo " -> $test: TEST-FAIL"
+else
+    echo " -> $test: TEST-PASS"
+fi
+
+if [ $tst_mod_flag=1 ]
+then
+    insmod $tst_mod_file
+fi
+rm -fr test_dir
-- 
1.8.3.1





More information about the Fuego mailing list