[LTP] [PATCH v2] commands/insmod: add new testcase to test insmod(8)
Guangwen Feng
fenggw-fnst@cn.fujitsu.com
Mon Apr 18 04:33:05 CEST 2016
Hi!
Ping! thanks.
Best Regards,
Guangwen Feng
On 03/15/2016 04:03 PM, Guangwen Feng wrote:
> Test the basic functionality of insmod(8) command.
>
> Signed-off-by: Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
> ---
> runtest/commands | 1 +
> testcases/commands/insmod/Makefile | 36 ++++++++++++++++
> testcases/commands/insmod/insmod01.sh | 71 ++++++++++++++++++++++++++++++++
> testcases/commands/insmod/ltp_insmod01.c | 35 ++++++++++++++++
> testcases/lib/test.sh | 28 +++++++++++++
> 5 files changed, 171 insertions(+)
> create mode 100644 testcases/commands/insmod/Makefile
> create mode 100755 testcases/commands/insmod/insmod01.sh
> create mode 100644 testcases/commands/insmod/ltp_insmod01.c
>
> diff --git a/runtest/commands b/runtest/commands
> index db89424..abbbd96 100644
> --- a/runtest/commands
> +++ b/runtest/commands
> @@ -41,3 +41,4 @@ mkfs01_ntfs mkfs01.sh -f ntfs
> mkswap01 mkswap01.sh
> which01 which01.sh
> lsmod01 lsmod01.sh
> +insmod01 insmod01.sh
> diff --git a/testcases/commands/insmod/Makefile b/testcases/commands/insmod/Makefile
> new file mode 100644
> index 0000000..e5e68b6
> --- /dev/null
> +++ b/testcases/commands/insmod/Makefile
> @@ -0,0 +1,36 @@
> +#
> +# Copyright (c) 2016 Fujitsu Ltd.
> +# Author:Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +
> +ifneq ($(KERNELRELEASE),)
> +
> +obj-m := ltp_insmod01.o
> +
> +else
> +
> +top_srcdir ?= ../../..
> +include $(top_srcdir)/include/mk/testcases.mk
> +
> +REQ_VERSION_MAJOR := 2
> +REQ_VERSION_PATCH := 6
> +MAKE_TARGETS := ltp_insmod01.ko
> +
> +include $(top_srcdir)/include/mk/env_pre.mk
> +
> +INSTALL_TARGETS := insmod01.sh
> +
> +include $(top_srcdir)/include/mk/module.mk
> +include $(top_srcdir)/include/mk/generic_leaf_target.mk
> +
> +endif
> diff --git a/testcases/commands/insmod/insmod01.sh b/testcases/commands/insmod/insmod01.sh
> new file mode 100755
> index 0000000..f19c068
> --- /dev/null
> +++ b/testcases/commands/insmod/insmod01.sh
> @@ -0,0 +1,71 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2016 Fujitsu Ltd.
> +# Author: Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
> +# the GNU General Public License for more details.
> +#
> +# Test the basic functionality of insmod command.
> +#
> +
> +TCID=insmod01
> +TST_TOTAL=1
> +. test.sh
> +
> +setup()
> +{
> + tst_require_root
> +
> + tst_check_cmds rmmod insmod
> +
> + tst_module_exists ltp_insmod01.ko
> +
> + inserted=0
> +
> + TST_CLEANUP="cleanup"
> +}
> +
> +cleanup()
> +{
> + if [ $inserted -ne 0 ]; then
> + echo "about to rmmod ltp_insmod01"
> + rmmod ltp_insmod01
> + if [ $? -ne 0 ]; then
> + echo "failed to rmmod ltp_insmod01"
> + fi
> + fi
> +}
> +
> +insmod_test()
> +{
> + insmod "$TST_MODPATH"
> + if [ $? -ne 0 ]; then
> + tst_resm TFAIL "'insmod' failed."
> + return
> + fi
> + inserted=1
> +
> + grep -q ltp_insmod01 /proc/modules
> +
> + if [ $? -ne 0 ]; then
> + tst_resm TINFO "ltp_insmod01 not found in /proc/modules"
> + tst_resm TFAIL "'insmod' failed, not expected."
> + return
> + fi
> +
> + tst_resm TPASS "'insmod' passed."
> +}
> +
> +setup
> +
> +insmod_test
> +
> +tst_exit
> diff --git a/testcases/commands/insmod/ltp_insmod01.c b/testcases/commands/insmod/ltp_insmod01.c
> new file mode 100644
> index 0000000..398714e
> --- /dev/null
> +++ b/testcases/commands/insmod/ltp_insmod01.c
> @@ -0,0 +1,35 @@
> +/*
> + * Copyright (c) 2016 Fujitsu Ltd.
> + * Author: Guangwen Feng <fenggw-fnst@cn.fujitsu.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
> + * the GNU General Public License for more details.
> + *
> + * Description:
> + * This is a kernel loadable module programme used by insmod01.sh
> + * testcase which inserts this module for test of insmod command.
> + */
> +
> +#include <linux/module.h>
> +#include <linux/init.h>
> +#include <linux/kernel.h>
> +
> +static int test_init(void)
> +{
> + return 0;
> +}
> +
> +static void test_exit(void)
> +{
> +
> +}
> +
> +module_init(test_init);
> +module_exit(test_exit);
> diff --git a/testcases/lib/test.sh b/testcases/lib/test.sh
> index 9b652c0..56e1c60 100644
> --- a/testcases/lib/test.sh
> +++ b/testcases/lib/test.sh
> @@ -352,6 +352,34 @@ tst_umount()
> tst_resm TWARN "Failed to umount($device) after 50 retries"
> }
>
> +# Check a module file existence
> +# Should be called after tst_tmpdir()
> +tst_module_exists()
> +{
> + local mod_name="$1"
> +
> + if [ -f "$mod_name" ]; then
> + TST_MODPATH="$mod_name"
> + return
> + fi
> +
> + local mod_path="$LTPROOT/testcases/bin/$mod_name"
> + if [ -f "$mod_path" ]; then
> + TST_MODPATH="$mod_path"
> + return
> + fi
> +
> + if [ -n "$TST_TMPDIR" ]; then
> + mod_path="$TST_TMPDIR/$mod_name"
> + if [ -f "$mod_path" ]; then
> + TST_MODPATH="$mod_path"
> + return
> + fi
> + fi
> +
> + tst_brkm TCONF "Failed to find module '$mod_name'"
> +}
> +
> # Check that test name is set
> if [ -z "$TCID" ]; then
> tst_brkm TBROK "TCID is not defined"
>
More information about the ltp
mailing list