[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