* [LTP] [PATCH 1/2] fs/binfmt_misc_lib.sh: Add common remove_binary_type()
@ 2019-02-22 9:59 Xiao Yang
2019-02-22 9:59 ` [LTP] [PATCH 2/2] fs/binfmt_misc02.sh: Add new test for basic functionality Xiao Yang
0 siblings, 1 reply; 6+ messages in thread
From: Xiao Yang @ 2019-02-22 9:59 UTC (permalink / raw)
To: ltp
1) Add common remove_binary_type() so that we can remove the
registered binary type by it.
2) Take use of remove_binary_type() in binfmt_misc01.sh.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
testcases/kernel/fs/binfmt_misc/binfmt_misc01.sh | 7 ++-----
testcases/kernel/fs/binfmt_misc/binfmt_misc_lib.sh | 9 +++++++++
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/testcases/kernel/fs/binfmt_misc/binfmt_misc01.sh b/testcases/kernel/fs/binfmt_misc/binfmt_misc01.sh
index 6c9aa64..06106e8 100755
--- a/testcases/kernel/fs/binfmt_misc/binfmt_misc01.sh
+++ b/testcases/kernel/fs/binfmt_misc/binfmt_misc01.sh
@@ -42,11 +42,8 @@ verify_binfmt_misc()
cat "$mntpoint/$name" >/dev/null 2>&1
tst_res TFAIL "Register a binary type successfully"
- if [ -f "$mntpoint/$name" ]; then
- (echo -1 >"$mntpoint/$name") 2>/dev/null
- [ $? -ne 0 -o -f "$mntpoint/$name" ] && \
- tst_res TWARN "Failed to remove a binary type"
- fi
+ [ -f "$mntpoint/$name" ] && \
+ remove_binary_type "$mntpoint/$name"
}
do_test()
diff --git a/testcases/kernel/fs/binfmt_misc/binfmt_misc_lib.sh b/testcases/kernel/fs/binfmt_misc/binfmt_misc_lib.sh
index 5d00ab6..4976825 100755
--- a/testcases/kernel/fs/binfmt_misc/binfmt_misc_lib.sh
+++ b/testcases/kernel/fs/binfmt_misc/binfmt_misc_lib.sh
@@ -17,6 +17,15 @@ rmod_binfmt_misc=0
umount_binfmt_misc=0
binfmt_misc_mntpoint="ltp_binfmt_misc"
+remove_binary_type()
+{
+ local name=$1
+
+ (echo -1 >"$name") 2>/dev/null
+ [ $? -ne 0 -o -f "$name" ] && \
+ tst_res TWARN "Fail to remove a binary type"
+}
+
get_binfmt_misc_mntpoint()
{
local mntpoint
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [LTP] [PATCH 2/2] fs/binfmt_misc02.sh: Add new test for basic functionality
2019-02-22 9:59 [LTP] [PATCH 1/2] fs/binfmt_misc_lib.sh: Add common remove_binary_type() Xiao Yang
@ 2019-02-22 9:59 ` Xiao Yang
2019-02-26 19:06 ` Cyril Hrubis
0 siblings, 1 reply; 6+ messages in thread
From: Xiao Yang @ 2019-02-22 9:59 UTC (permalink / raw)
To: ltp
Register a new binary type and then check if binfmt_misc
recognises the binary type in some conditions.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
runtest/fs | 1 +
testcases/kernel/fs/binfmt_misc/Makefile | 4 +-
testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh | 107 +++++++++++++++++++++
testcases/kernel/fs/binfmt_misc/datafiles/Makefile | 13 +++
.../kernel/fs/binfmt_misc/datafiles/file.extension | 1 +
.../kernel/fs/binfmt_misc/datafiles/file.magic | 1 +
6 files changed, 125 insertions(+), 2 deletions(-)
create mode 100755 testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
create mode 100644 testcases/kernel/fs/binfmt_misc/datafiles/Makefile
create mode 100755 testcases/kernel/fs/binfmt_misc/datafiles/file.extension
create mode 100755 testcases/kernel/fs/binfmt_misc/datafiles/file.magic
diff --git a/runtest/fs b/runtest/fs
index 227c186..ef2e848 100644
--- a/runtest/fs
+++ b/runtest/fs
@@ -84,3 +84,4 @@ isofs isofs.sh
fs_fill fs_fill
binfmt_misc01 binfmt_misc01.sh
+binfmt_misc02 binfmt_misc02.sh
diff --git a/testcases/kernel/fs/binfmt_misc/Makefile b/testcases/kernel/fs/binfmt_misc/Makefile
index f9819ad..14437b5 100644
--- a/testcases/kernel/fs/binfmt_misc/Makefile
+++ b/testcases/kernel/fs/binfmt_misc/Makefile
@@ -7,6 +7,6 @@ top_srcdir ?= ../../../..
include $(top_srcdir)/include/mk/env_pre.mk
-INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc_lib.sh
+INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc02.sh binfmt_misc_lib.sh
-include $(top_srcdir)/include/mk/generic_leaf_target.mk
+include $(top_srcdir)/include/mk/generic_trunk_target.mk
diff --git a/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
new file mode 100755
index 0000000..5eb6bb8
--- /dev/null
+++ b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
@@ -0,0 +1,107 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
+# Author: Xiao Yang <yangx.jy@cn.fujitsu.com>
+#
+# Description:
+# Register a new binary type and then check if binfmt_misc
+# recognises the binary type in some conditions.
+# 1) binfmt_misc should recognise the binary type when extension
+# or magic is matched.
+# 2) binfmt_misc should not recognise the binary type when extension
+# or magic is mismatched.
+# 3) binfmt_misc should not recognise the binary type when it is
+# disabled.
+#
+# Note:
+# We use various delimiteris to register a new binary type.
+
+TST_CNT=8
+TST_TESTFUNC=do_test
+TST_NEEDS_CMDS="perl"
+
+. binfmt_misc_lib.sh
+
+expect_recognised()
+{
+ local file=$1
+ local string=$2
+
+ eval $file >temp 2>&1
+ if [ $? -eq 0 ] && grep -q "$string" temp; then
+ tst_res TPASS "Register and recognise a binary type successfully"
+ else
+ tst_res TFAIL "Fail to recognise a binary type"
+ fi
+}
+
+expect_unrecognised()
+{
+ local file=$1
+ local string=$2
+
+ eval $file >temp 2>&1
+ if [ $? -ne 0 ] && ! grep -q "$string" temp; then
+ tst_res TPASS "Fail to recognise a binary type"
+ else
+ tst_res TFAIL "Recognise a binary type successfully"
+ fi
+}
+
+verify_binfmt_misc()
+{
+ local delimiter=${1:0:1}
+ local name=$(echo "$1" | awk -F $delimiter '{print $2}')
+ local ttype=$(echo "$1" | awk -F $delimiter '{print $3}')
+ local tfile=$2
+ local disabled=$3
+ local mntpoint=$(get_binfmt_misc_mntpoint)
+
+ (echo "$1" >"$mntpoint/register") 2>/dev/null
+ if [ $? -ne 0 -o ! -f "$mntpoint/$name" ]; then
+ tst_res TFAIL "Fail to register a binary type"
+ return
+ fi
+
+ [ "$ttype" = "E" ] && local tstring="This is test for extension"
+ [ "$ttype" = "M" ] && local tstring="This is test for magic"
+
+ if [ "$disabled" = "1" ]; then
+ (echo 0 >"$mntpoint/$name") 2>/dev/null
+ if [ $? -ne 0 ] || grep -q enable "$mntpoint/$name"; then
+ remove_binary_type "$mntpoint/$name"
+ tst_res TFAIL "Fail to disable a binary type"
+ return
+ fi
+ fi
+
+ [ -z "$disabled" ] && expect_recognised "$tfile" "$tstring"
+ [ -n "$disabled" ] && expect_unrecognised "$tfile" "$tstring"
+
+ remove_binary_type "$mntpoint/$name"
+}
+
+do_test()
+{
+ case $1 in
+ 1) verify_binfmt_misc ":textension:E::extension::$(which perl):" \
+ "$TST_DATAROOT/file.extension";;
+ 2) verify_binfmt_misc ":tmagic:M:1:print::$(which perl):" \
+ "$TST_DATAROOT/file.magic";;
+ 3) verify_binfmt_misc ".textension.E..extension..$(which perl)." \
+ "$TST_DATAROOT/file.extension";;
+ 4) verify_binfmt_misc ",tmagic,M,1,print,,$(which perl)," \
+ "$TST_DATAROOT/file.magic";;
+ 5) verify_binfmt_misc ":textension:E::ltp::$(which perl):" \
+ "$TST_DATAROOT/file.extension" "0";;
+ 6) verify_binfmt_misc ":tmagic:M:0:print::$(which perl):" \
+ "$TST_DATAROOT/file.magic" "0";;
+ 7) verify_binfmt_misc ":textension:E::extension::$(which perl):" \
+ "$TST_DATAROOT/file.extension" "1";;
+ 8) verify_binfmt_misc ":tmagic:M:1:print::$(which perl):" \
+ "$TST_DATAROOT/file.magic" "1";;
+ esac
+}
+
+tst_run
diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/Makefile b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile
new file mode 100644
index 0000000..e6d1487
--- /dev/null
+++ b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
+# Author: Xiao Yang <yangx.jy@cn.fujitsu.com>
+
+top_srcdir ?= ../../../../..
+
+include $(top_srcdir)/include/mk/env_pre.mk
+
+INSTALL_DIR := testcases/data/binfmt_misc02
+INSTALL_TARGETS := file.extension file.magic
+
+include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.extension b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension
new file mode 100755
index 0000000..054ee07
--- /dev/null
+++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension
@@ -0,0 +1 @@
+print "This is test for extension\n"
diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.magic b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic
new file mode 100755
index 0000000..a018abf
--- /dev/null
+++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic
@@ -0,0 +1 @@
+ print "This is test for magic\n"
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [LTP] [PATCH 2/2] fs/binfmt_misc02.sh: Add new test for basic functionality
2019-02-22 9:59 ` [LTP] [PATCH 2/2] fs/binfmt_misc02.sh: Add new test for basic functionality Xiao Yang
@ 2019-02-26 19:06 ` Cyril Hrubis
2019-02-27 3:53 ` Xiao Yang
2019-02-27 6:01 ` [LTP] [PATCH v2 " Xiao Yang
0 siblings, 2 replies; 6+ messages in thread
From: Cyril Hrubis @ 2019-02-26 19:06 UTC (permalink / raw)
To: ltp
Hi!
> Register a new binary type and then check if binfmt_misc
> recognises the binary type in some conditions.
Generally looks good, couple of comments below.
> Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
> ---
> runtest/fs | 1 +
> testcases/kernel/fs/binfmt_misc/Makefile | 4 +-
> testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh | 107 +++++++++++++++++++++
> testcases/kernel/fs/binfmt_misc/datafiles/Makefile | 13 +++
> .../kernel/fs/binfmt_misc/datafiles/file.extension | 1 +
> .../kernel/fs/binfmt_misc/datafiles/file.magic | 1 +
> 6 files changed, 125 insertions(+), 2 deletions(-)
> create mode 100755 testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
> create mode 100644 testcases/kernel/fs/binfmt_misc/datafiles/Makefile
> create mode 100755 testcases/kernel/fs/binfmt_misc/datafiles/file.extension
> create mode 100755 testcases/kernel/fs/binfmt_misc/datafiles/file.magic
>
> diff --git a/runtest/fs b/runtest/fs
> index 227c186..ef2e848 100644
> --- a/runtest/fs
> +++ b/runtest/fs
> @@ -84,3 +84,4 @@ isofs isofs.sh
> fs_fill fs_fill
>
> binfmt_misc01 binfmt_misc01.sh
> +binfmt_misc02 binfmt_misc02.sh
> diff --git a/testcases/kernel/fs/binfmt_misc/Makefile b/testcases/kernel/fs/binfmt_misc/Makefile
> index f9819ad..14437b5 100644
> --- a/testcases/kernel/fs/binfmt_misc/Makefile
> +++ b/testcases/kernel/fs/binfmt_misc/Makefile
> @@ -7,6 +7,6 @@ top_srcdir ?= ../../../..
>
> include $(top_srcdir)/include/mk/env_pre.mk
>
> -INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc_lib.sh
> +INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc02.sh binfmt_misc_lib.sh
>
> -include $(top_srcdir)/include/mk/generic_leaf_target.mk
> +include $(top_srcdir)/include/mk/generic_trunk_target.mk
> diff --git a/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
> new file mode 100755
> index 0000000..5eb6bb8
> --- /dev/null
> +++ b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
> @@ -0,0 +1,107 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +#
> +# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
> +# Author: Xiao Yang <yangx.jy@cn.fujitsu.com>
> +#
> +# Description:
> +# Register a new binary type and then check if binfmt_misc
> +# recognises the binary type in some conditions.
> +# 1) binfmt_misc should recognise the binary type when extension
> +# or magic is matched.
> +# 2) binfmt_misc should not recognise the binary type when extension
> +# or magic is mismatched.
> +# 3) binfmt_misc should not recognise the binary type when it is
> +# disabled.
> +#
> +# Note:
> +# We use various delimiteris to register a new binary type.
> +
> +TST_CNT=8
> +TST_TESTFUNC=do_test
> +TST_NEEDS_CMDS="perl"
I wonder if we can avoid perl dependency by (mis)using cat instead of
proper interpreter.
> +. binfmt_misc_lib.sh
> +
> +expect_recognised()
> +{
> + local file=$1
> + local string=$2
> +
> + eval $file >temp 2>&1
> + if [ $? -eq 0 ] && grep -q "$string" temp; then
> + tst_res TPASS "Register and recognise a binary type successfully"
> + else
> + tst_res TFAIL "Fail to recognise a binary type"
> + fi
> +}
> +
> +expect_unrecognised()
> +{
> + local file=$1
> + local string=$2
> +
> + eval $file >temp 2>&1
> + if [ $? -ne 0 ] && ! grep -q "$string" temp; then
> + tst_res TPASS "Fail to recognise a binary type"
> + else
> + tst_res TFAIL "Recognise a binary type successfully"
> + fi
> +}
> +
> +verify_binfmt_misc()
> +{
> + local delimiter=${1:0:1}
^
This is bashism should be replaced for example
with $(echo "$a" | head -c1)
> + local name=$(echo "$1" | awk -F $delimiter '{print $2}')
> + local ttype=$(echo "$1" | awk -F $delimiter '{print $3}')
> + local tfile=$2
> + local disabled=$3
Can't we just run each test twice once with enabled and once with
disabled binfmt handler?
> + local mntpoint=$(get_binfmt_misc_mntpoint)
> +
> + (echo "$1" >"$mntpoint/register") 2>/dev/null
> + if [ $? -ne 0 -o ! -f "$mntpoint/$name" ]; then
> + tst_res TFAIL "Fail to register a binary type"
> + return
> + fi
> +
> + [ "$ttype" = "E" ] && local tstring="This is test for extension"
> + [ "$ttype" = "M" ] && local tstring="This is test for magic"
> +
> + if [ "$disabled" = "1" ]; then
> + (echo 0 >"$mntpoint/$name") 2>/dev/null
> + if [ $? -ne 0 ] || grep -q enable "$mntpoint/$name"; then
> + remove_binary_type "$mntpoint/$name"
> + tst_res TFAIL "Fail to disable a binary type"
> + return
> + fi
> + fi
> +
> + [ -z "$disabled" ] && expect_recognised "$tfile" "$tstring"
> + [ -n "$disabled" ] && expect_unrecognised "$tfile" "$tstring"
> +
> + remove_binary_type "$mntpoint/$name"
> +}
> +
> +do_test()
> +{
> + case $1 in
> + 1) verify_binfmt_misc ":textension:E::extension::$(which perl):" \
> + "$TST_DATAROOT/file.extension";;
> + 2) verify_binfmt_misc ":tmagic:M:1:print::$(which perl):" \
> + "$TST_DATAROOT/file.magic";;
> + 3) verify_binfmt_misc ".textension.E..extension..$(which perl)." \
> + "$TST_DATAROOT/file.extension";;
> + 4) verify_binfmt_misc ",tmagic,M,1,print,,$(which perl)," \
> + "$TST_DATAROOT/file.magic";;
> + 5) verify_binfmt_misc ":textension:E::ltp::$(which perl):" \
> + "$TST_DATAROOT/file.extension" "0";;
> + 6) verify_binfmt_misc ":tmagic:M:0:print::$(which perl):" \
> + "$TST_DATAROOT/file.magic" "0";;
> + 7) verify_binfmt_misc ":textension:E::extension::$(which perl):" \
> + "$TST_DATAROOT/file.extension" "1";;
> + 8) verify_binfmt_misc ":tmagic:M:1:print::$(which perl):" \
> + "$TST_DATAROOT/file.magic" "1";;
> + esac
> +}
> +
> +tst_run
> diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/Makefile b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile
> new file mode 100644
> index 0000000..e6d1487
> --- /dev/null
> +++ b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile
> @@ -0,0 +1,13 @@
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +#
> +# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
> +# Author: Xiao Yang <yangx.jy@cn.fujitsu.com>
> +
> +top_srcdir ?= ../../../../..
> +
> +include $(top_srcdir)/include/mk/env_pre.mk
> +
> +INSTALL_DIR := testcases/data/binfmt_misc02
> +INSTALL_TARGETS := file.extension file.magic
> +
> +include $(top_srcdir)/include/mk/generic_leaf_target.mk
> diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.extension b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension
> new file mode 100755
> index 0000000..054ee07
> --- /dev/null
> +++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension
> @@ -0,0 +1 @@
> +print "This is test for extension\n"
> diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.magic b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic
> new file mode 100755
> index 0000000..a018abf
> --- /dev/null
> +++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic
> @@ -0,0 +1 @@
> + print "This is test for magic\n"
> --
> 1.8.3.1
>
>
>
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 6+ messages in thread
* [LTP] [PATCH 2/2] fs/binfmt_misc02.sh: Add new test for basic functionality
2019-02-26 19:06 ` Cyril Hrubis
@ 2019-02-27 3:53 ` Xiao Yang
2019-02-27 6:01 ` [LTP] [PATCH v2 " Xiao Yang
1 sibling, 0 replies; 6+ messages in thread
From: Xiao Yang @ 2019-02-27 3:53 UTC (permalink / raw)
To: ltp
On 2019/02/27 3:06, Cyril Hrubis wrote:
> Hi!
>> Register a new binary type and then check if binfmt_misc
>> recognises the binary type in some conditions.
> Generally looks good, couple of comments below.
>
>> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com>
>> ---
>> runtest/fs | 1 +
>> testcases/kernel/fs/binfmt_misc/Makefile | 4 +-
>> testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh | 107 +++++++++++++++++++++
>> testcases/kernel/fs/binfmt_misc/datafiles/Makefile | 13 +++
>> .../kernel/fs/binfmt_misc/datafiles/file.extension | 1 +
>> .../kernel/fs/binfmt_misc/datafiles/file.magic | 1 +
>> 6 files changed, 125 insertions(+), 2 deletions(-)
>> create mode 100755 testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
>> create mode 100644 testcases/kernel/fs/binfmt_misc/datafiles/Makefile
>> create mode 100755 testcases/kernel/fs/binfmt_misc/datafiles/file.extension
>> create mode 100755 testcases/kernel/fs/binfmt_misc/datafiles/file.magic
>>
>> diff --git a/runtest/fs b/runtest/fs
>> index 227c186..ef2e848 100644
>> --- a/runtest/fs
>> +++ b/runtest/fs
>> @@ -84,3 +84,4 @@ isofs isofs.sh
>> fs_fill fs_fill
>>
>> binfmt_misc01 binfmt_misc01.sh
>> +binfmt_misc02 binfmt_misc02.sh
>> diff --git a/testcases/kernel/fs/binfmt_misc/Makefile b/testcases/kernel/fs/binfmt_misc/Makefile
>> index f9819ad..14437b5 100644
>> --- a/testcases/kernel/fs/binfmt_misc/Makefile
>> +++ b/testcases/kernel/fs/binfmt_misc/Makefile
>> @@ -7,6 +7,6 @@ top_srcdir ?= ../../../..
>>
>> include $(top_srcdir)/include/mk/env_pre.mk
>>
>> -INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc_lib.sh
>> +INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc02.sh binfmt_misc_lib.sh
>>
>> -include $(top_srcdir)/include/mk/generic_leaf_target.mk
>> +include $(top_srcdir)/include/mk/generic_trunk_target.mk
>> diff --git a/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
>> new file mode 100755
>> index 0000000..5eb6bb8
>> --- /dev/null
>> +++ b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
>> @@ -0,0 +1,107 @@
>> +#!/bin/sh
>> +# SPDX-License-Identifier: GPL-2.0-or-later
>> +#
>> +# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
>> +# Author: Xiao Yang<yangx.jy@cn.fujitsu.com>
>> +#
>> +# Description:
>> +# Register a new binary type and then check if binfmt_misc
>> +# recognises the binary type in some conditions.
>> +# 1) binfmt_misc should recognise the binary type when extension
>> +# or magic is matched.
>> +# 2) binfmt_misc should not recognise the binary type when extension
>> +# or magic is mismatched.
>> +# 3) binfmt_misc should not recognise the binary type when it is
>> +# disabled.
>> +#
>> +# Note:
>> +# We use various delimiteris to register a new binary type.
>> +
>> +TST_CNT=8
>> +TST_TESTFUNC=do_test
>> +TST_NEEDS_CMDS="perl"
> I wonder if we can avoid perl dependency by (mis)using cat instead of
> proper interpreter.
Hi Cyril,
Yes, we can use cat instead. :-)
>> +. binfmt_misc_lib.sh
>> +
>> +expect_recognised()
>> +{
>> + local file=$1
>> + local string=$2
>> +
>> + eval $file>temp 2>&1
>> + if [ $? -eq 0 ]&& grep -q "$string" temp; then
>> + tst_res TPASS "Register and recognise a binary type successfully"
>> + else
>> + tst_res TFAIL "Fail to recognise a binary type"
>> + fi
>> +}
>> +
>> +expect_unrecognised()
>> +{
>> + local file=$1
>> + local string=$2
>> +
>> + eval $file>temp 2>&1
>> + if [ $? -ne 0 ]&& ! grep -q "$string" temp; then
>> + tst_res TPASS "Fail to recognise a binary type"
>> + else
>> + tst_res TFAIL "Recognise a binary type successfully"
>> + fi
>> +}
>> +
>> +verify_binfmt_misc()
>> +{
>> + local delimiter=${1:0:1}
> ^
> This is bashism should be replaced for example
> with $(echo "$a" | head -c1)
>
>> + local name=$(echo "$1" | awk -F $delimiter '{print $2}')
>> + local ttype=$(echo "$1" | awk -F $delimiter '{print $3}')
>> + local tfile=$2
>> + local disabled=$3
> Can't we just run each test twice once with enabled and once with
> disabled binfmt handler?
For matched binary types, we can run test twice by enabled and disabled
binfmt handler.
For mismatched binary types, it seems enough to run test once by
enabled binfmt handler.
Best Regards,
Xiao Yang
>> + local mntpoint=$(get_binfmt_misc_mntpoint)
>> +
>> + (echo "$1">"$mntpoint/register") 2>/dev/null
>> + if [ $? -ne 0 -o ! -f "$mntpoint/$name" ]; then
>> + tst_res TFAIL "Fail to register a binary type"
>> + return
>> + fi
>> +
>> + [ "$ttype" = "E" ]&& local tstring="This is test for extension"
>> + [ "$ttype" = "M" ]&& local tstring="This is test for magic"
>> +
>> + if [ "$disabled" = "1" ]; then
>> + (echo 0>"$mntpoint/$name") 2>/dev/null
>> + if [ $? -ne 0 ] || grep -q enable "$mntpoint/$name"; then
>> + remove_binary_type "$mntpoint/$name"
>> + tst_res TFAIL "Fail to disable a binary type"
>> + return
>> + fi
>> + fi
>> +
>> + [ -z "$disabled" ]&& expect_recognised "$tfile" "$tstring"
>> + [ -n "$disabled" ]&& expect_unrecognised "$tfile" "$tstring"
>> +
>> + remove_binary_type "$mntpoint/$name"
>> +}
>> +
>> +do_test()
>> +{
>> + case $1 in
>> + 1) verify_binfmt_misc ":textension:E::extension::$(which perl):" \
>> + "$TST_DATAROOT/file.extension";;
>> + 2) verify_binfmt_misc ":tmagic:M:1:print::$(which perl):" \
>> + "$TST_DATAROOT/file.magic";;
>> + 3) verify_binfmt_misc ".textension.E..extension..$(which perl)." \
>> + "$TST_DATAROOT/file.extension";;
>> + 4) verify_binfmt_misc ",tmagic,M,1,print,,$(which perl)," \
>> + "$TST_DATAROOT/file.magic";;
>> + 5) verify_binfmt_misc ":textension:E::ltp::$(which perl):" \
>> + "$TST_DATAROOT/file.extension" "0";;
>> + 6) verify_binfmt_misc ":tmagic:M:0:print::$(which perl):" \
>> + "$TST_DATAROOT/file.magic" "0";;
>> + 7) verify_binfmt_misc ":textension:E::extension::$(which perl):" \
>> + "$TST_DATAROOT/file.extension" "1";;
>> + 8) verify_binfmt_misc ":tmagic:M:1:print::$(which perl):" \
>> + "$TST_DATAROOT/file.magic" "1";;
>> + esac
>> +}
>> +
>> +tst_run
>> diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/Makefile b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile
>> new file mode 100644
>> index 0000000..e6d1487
>> --- /dev/null
>> +++ b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile
>> @@ -0,0 +1,13 @@
>> +# SPDX-License-Identifier: GPL-2.0-or-later
>> +#
>> +# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
>> +# Author: Xiao Yang<yangx.jy@cn.fujitsu.com>
>> +
>> +top_srcdir ?= ../../../../..
>> +
>> +include $(top_srcdir)/include/mk/env_pre.mk
>> +
>> +INSTALL_DIR := testcases/data/binfmt_misc02
>> +INSTALL_TARGETS := file.extension file.magic
>> +
>> +include $(top_srcdir)/include/mk/generic_leaf_target.mk
>> diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.extension b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension
>> new file mode 100755
>> index 0000000..054ee07
>> --- /dev/null
>> +++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension
>> @@ -0,0 +1 @@
>> +print "This is test for extension\n"
>> diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.magic b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic
>> new file mode 100755
>> index 0000000..a018abf
>> --- /dev/null
>> +++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic
>> @@ -0,0 +1 @@
>> + print "This is test for magic\n"
>> --
>> 1.8.3.1
>>
>>
>>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [LTP] [PATCH v2 2/2] fs/binfmt_misc02.sh: Add new test for basic functionality
2019-02-26 19:06 ` Cyril Hrubis
2019-02-27 3:53 ` Xiao Yang
@ 2019-02-27 6:01 ` Xiao Yang
2019-03-05 13:24 ` Cyril Hrubis
1 sibling, 1 reply; 6+ messages in thread
From: Xiao Yang @ 2019-02-27 6:01 UTC (permalink / raw)
To: ltp
Register a new binary type and then check if binfmt_misc
recognises the binary type in some conditions.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
runtest/fs | 1 +
testcases/kernel/fs/binfmt_misc/Makefile | 4 +-
testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh | 107 +++++++++++++++++++++
testcases/kernel/fs/binfmt_misc/datafiles/Makefile | 13 +++
.../kernel/fs/binfmt_misc/datafiles/file.extension | 1 +
.../kernel/fs/binfmt_misc/datafiles/file.magic | 1 +
6 files changed, 125 insertions(+), 2 deletions(-)
create mode 100755 testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
create mode 100644 testcases/kernel/fs/binfmt_misc/datafiles/Makefile
create mode 100755 testcases/kernel/fs/binfmt_misc/datafiles/file.extension
create mode 100755 testcases/kernel/fs/binfmt_misc/datafiles/file.magic
diff --git a/runtest/fs b/runtest/fs
index 227c186..ef2e848 100644
--- a/runtest/fs
+++ b/runtest/fs
@@ -84,3 +84,4 @@ isofs isofs.sh
fs_fill fs_fill
binfmt_misc01 binfmt_misc01.sh
+binfmt_misc02 binfmt_misc02.sh
diff --git a/testcases/kernel/fs/binfmt_misc/Makefile b/testcases/kernel/fs/binfmt_misc/Makefile
index f9819ad..14437b5 100644
--- a/testcases/kernel/fs/binfmt_misc/Makefile
+++ b/testcases/kernel/fs/binfmt_misc/Makefile
@@ -7,6 +7,6 @@ top_srcdir ?= ../../../..
include $(top_srcdir)/include/mk/env_pre.mk
-INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc_lib.sh
+INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc02.sh binfmt_misc_lib.sh
-include $(top_srcdir)/include/mk/generic_leaf_target.mk
+include $(top_srcdir)/include/mk/generic_trunk_target.mk
diff --git a/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
new file mode 100755
index 0000000..8d0ecd8
--- /dev/null
+++ b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh
@@ -0,0 +1,107 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
+# Author: Xiao Yang <yangx.jy@cn.fujitsu.com>
+#
+# Description:
+# Register a new binary type and then check if binfmt_misc
+# recognises the binary type in some conditions.
+# 1) binfmt_misc should recognise the binary type when extension
+# or magic is matched.
+# 2) binfmt_misc should not recognise the binary type when extension
+# or magic is mismatched.
+# 3) binfmt_misc should not recognise the binary type when it is
+# disabled.
+#
+# Note:
+# We use various delimiteris to register a new binary type.
+
+TST_CNT=6
+TST_TESTFUNC=do_test
+TST_NEEDS_CMDS="which cat head"
+
+. binfmt_misc_lib.sh
+
+recognised_unrecognised()
+{
+ local file=$1
+ local string=$2
+
+ eval $file >temp 2>&1
+ if [ $? -ne 0 ] || ! grep -q "$string" temp; then
+ tst_res TFAIL "Fail to recognise a binary type"
+ return
+ fi
+
+ (echo 0 >"$mntpoint/$name") 2>/dev/null
+ if [ $? -ne 0 ] || grep -q enable "$mntpoint/$name"; then
+ tst_res TFAIL "Fail to disable a binary type"
+ return
+ fi
+
+ eval $file >temp 2>&1
+ if [ $? -eq 0 ] || grep -q "$string" temp; then
+ tst_res TFAIL "Recognise a disabled binary type successfully"
+ return
+ fi
+
+ tst_res TPASS "Recognise and unrecognise a binary type as expected"
+}
+
+unrecognised()
+{
+ local file=$1
+ local string=$2
+
+ eval $file >temp 2>&1
+ if [ $? -eq 0 ] || grep -q "$string" temp; then
+ tst_res TFAIL "Recognise a binary type successfully"
+ else
+ tst_res TPASS "Fail to recognise a binary type"
+ fi
+}
+
+verify_binfmt_misc()
+{
+ local delimiter=$(echo "$1" | head -c1)
+ local name=$(echo "$1" | awk -F $delimiter '{print $2}')
+ local ttype=$(echo "$1" | awk -F $delimiter '{print $3}')
+ local tfile=$2
+ local valid=$3
+ local mntpoint=$(get_binfmt_misc_mntpoint)
+
+ (echo "$1" >"$mntpoint/register") 2>/dev/null
+ if [ $? -ne 0 -o ! -f "$mntpoint/$name" ]; then
+ tst_res TFAIL "Fail to register a binary type"
+ return
+ fi
+
+ [ "$ttype" = "E" ] && local tstring="This is test for extension"
+ [ "$ttype" = "M" ] && local tstring="This is test for magic"
+
+ [ "$valid" = "1" ] && recognised_unrecognised "$tfile" "$tstring"
+ [ "$valid" = "0" ] && unrecognised "$tfile" "$tstring"
+
+ remove_binary_type "$mntpoint/$name"
+}
+
+do_test()
+{
+ case $1 in
+ 1) verify_binfmt_misc ":textension:E::extension::$(which cat):" \
+ "$TST_DATAROOT/file.extension" "1";;
+ 2) verify_binfmt_misc ":tmagic:M:1:This::$(which cat):" \
+ "$TST_DATAROOT/file.magic" "1";;
+ 3) verify_binfmt_misc ".textension.E..extension..$(which cat)." \
+ "$TST_DATAROOT/file.extension" "1";;
+ 4) verify_binfmt_misc ",tmagic,M,1,This,,$(which cat)," \
+ "$TST_DATAROOT/file.magic" "1";;
+ 5) verify_binfmt_misc ":textension:E::ltp::$(which cat):" \
+ "$TST_DATAROOT/file.extension" "0";;
+ 6) verify_binfmt_misc ":tmagic:M:0:This::$(which cat):" \
+ "$TST_DATAROOT/file.magic" "0";;
+ esac
+}
+
+tst_run
diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/Makefile b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile
new file mode 100644
index 0000000..e6d1487
--- /dev/null
+++ b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved.
+# Author: Xiao Yang <yangx.jy@cn.fujitsu.com>
+
+top_srcdir ?= ../../../../..
+
+include $(top_srcdir)/include/mk/env_pre.mk
+
+INSTALL_DIR := testcases/data/binfmt_misc02
+INSTALL_TARGETS := file.extension file.magic
+
+include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.extension b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension
new file mode 100755
index 0000000..8468a8f
--- /dev/null
+++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension
@@ -0,0 +1 @@
+This is test for extension
diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.magic b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic
new file mode 100755
index 0000000..f2823b6
--- /dev/null
+++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic
@@ -0,0 +1 @@
+ This is test for magic
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [LTP] [PATCH v2 2/2] fs/binfmt_misc02.sh: Add new test for basic functionality
2019-02-27 6:01 ` [LTP] [PATCH v2 " Xiao Yang
@ 2019-03-05 13:24 ` Cyril Hrubis
0 siblings, 0 replies; 6+ messages in thread
From: Cyril Hrubis @ 2019-03-05 13:24 UTC (permalink / raw)
To: ltp
Hi!
Applied, thanks.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-03-05 13:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-02-22 9:59 [LTP] [PATCH 1/2] fs/binfmt_misc_lib.sh: Add common remove_binary_type() Xiao Yang
2019-02-22 9:59 ` [LTP] [PATCH 2/2] fs/binfmt_misc02.sh: Add new test for basic functionality Xiao Yang
2019-02-26 19:06 ` Cyril Hrubis
2019-02-27 3:53 ` Xiao Yang
2019-02-27 6:01 ` [LTP] [PATCH v2 " Xiao Yang
2019-03-05 13:24 ` Cyril Hrubis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox