[Fuego] [PATCH v4] Add test cases for commands of module-init-tools.
Zheng, Ruoqin
zhengrq.fnst at cn.fujitsu.com
Tue Feb 19 01:37:31 UTC 2019
Hi Tim:
I have a different approach:
> +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"
> +}
Here I use modinfo instead of "test -f /lib/modules/\$(uname -r)/kernel/drivers/video/uvesafb.ko", as '$(uname -r)' will return the value of host, for example "/lib/modules/3.10.0-123.el7.x86_64".
> + "testName": "Functional.module_init_tools",
> + "specs": {
> + "default": {
> + "test_module_name": "uvesafb"
> + }
> + }
And here use "test_module_name": "uvesafb" instead of path "test_module_path":"kernel/drivers/video/uvesafb.ko"
Is this OK?
--------------------------------------------------
Zheng Ruoqin
Nanjing Fujitsu Nanda Software Tech. Co., Ltd.(FNST)
ADDR.: No.6 Wenzhu Road, Software Avenue,
Nanjing, 210012, China
MAIL : zhengrq.fnst at cn.fujistu.com
> -----Original Message-----
> From: Zheng, Ruoqin/郑 若钦
> Sent: Monday, February 11, 2019 10:06 AM
> To: fuego at lists.linuxfoundation.org
> Cc: Wang, Mingyu/王 鸣瑜 <wangmy at cn.fujitsu.com>; Zheng, Ruoqin/郑 若钦
> <zhengrq.fnst at cn.fujitsu.com>
> Subject: [Fuego] [PATCH v4] Add test cases for commands of module-init-tools.
>
> 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.s
> +++ h
> @@ -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_modprob
> +++ e.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.s
> +++ h
> @@ -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