[PATCH v7 1/8] tests: improve syscall syntax testing

Dmitry V. Levin ldv at altlinux.org
Sun Aug 13 00:38:48 UTC 2017


On Fri, Aug 11, 2017 at 05:43:46PM +0700, Nikolay Marchuk wrote:
> * tests/filtering_syscall-syntax.test: New file.
> * tests/syntax.sh: New file.
> * tests/options-syntax.test: Move syscall syntax testing to
> filtering_syscall-syntax.test. Move check_* functions to syntax.sh.
> * tests/Makefile.am (MISC_TESTS): Add filtering_syscall-syntax.test.
> (EXTRA_DIST): Add syntax.sh.

The commit message is out of sync with the change itself.

> ---
>  tests/Makefile.am                   |  1 +
>  tests/filtering_syscall-syntax.test | 91 +++++++++++++++++++++++++++++++++++++
>  tests/options-syntax.test           | 17 -------
>  3 files changed, 92 insertions(+), 17 deletions(-)
>  create mode 100755 tests/filtering_syscall-syntax.test
> 
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index f038226e..6b90d710 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -257,6 +257,7 @@ MISC_TESTS = \
>  	detach-stopped.test \
>  	filter-unavailable.test \
>  	fflush.test \
> +	filtering_syscall-syntax.test \
>  	get_regs.test \
>  	interactive_block.test \
>  	ksysent.test \
> diff --git a/tests/filtering_syscall-syntax.test b/tests/filtering_syscall-syntax.test
> new file mode 100755
> index 00000000..698a894c
> --- /dev/null
> +++ b/tests/filtering_syscall-syntax.test
> @@ -0,0 +1,91 @@
> +#!/bin/sh
> +#
> +# Check syscall set parsing syntax.
> +#
> +# Copyright (c) 2016-2017 Dmitry V. Levin <ldv at altlinux.org>
> +# Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a at gmail.com>
> +# All rights reserved.
> +#
> +# Redistribution and use in source and binary forms, with or without
> +# modification, are permitted provided that the following conditions
> +# are met:
> +# 1. Redistributions of source code must retain the above copyright
> +#    notice, this list of conditions and the following disclaimer.
> +# 2. Redistributions in binary form must reproduce the above copyright
> +#    notice, this list of conditions and the following disclaimer in the
> +#    documentation and/or other materials provided with the distribution.
> +# 3. The name of the author may not be used to endorse or promote products
> +#    derived from this software without specific prior written permission.
> +#
> +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
> +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
> +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
> +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
> +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> +. "${srcdir=.}/syntax.sh"
> +
> +check_syscall()
> +{
> +	check_e "invalid system call '$1'" -e trace="$2"
> +	check_e "invalid system call '$1'" -e abbrev="$2"
> +	check_e "invalid system call '$1'" -e verbose="$2"
> +	check_e "invalid system call '$1'" -e raw="$2"

consider adding -equal=... (without space) variants, as well as
-e "$2"
[ -z "$2" ] || ... -e"$2"

> +}
> +
> +# invalid syscall
> +for arg in '' , ,, ,,, : :: ::: \! \!, \
> +	   invalid_syscall_name \
> +	   -1 -2 -3 -4 -5 \
> +	   32767 \
> +	   2147483647 \
> +	   2147483648 \
> +	   4294967295 \
> +	   4294967296 \
> +	   /non_syscall \
> +	   % %not_a_class \
> +	   ; do
> +	check_syscall "$arg" "$arg"
> +done
> +
> +# invalid syscall with inversion
> +for arg in -1 -2 -3 -4 -5 \
> +	   invalid_syscall_name \
> +	   32767 \
> +	   2147483647 \
> +	   2147483648 \
> +	   4294967295 \
> +	   4294967296 \
> +	   /non_syscall \
> +	   % %not_a_class \
> +	   ; do
> +	check_syscall "$arg" \!"$arg"
> +done

These two groups of tests have a lot in common.
Could you reduce the redundancy, please?

> +
> +# invalid syscall, multiple syscalls
> +for arg in file,nonsense \
> +	   \!desc,nonsense \
> +	   chdir,nonsense \
> +	   \!chdir,nonsense \
> +	   1,nonsense \
> +	   \!1,nonsense \
> +	   ; do
> +	check_syscall "nonsense" "$arg"
> +done

for arg in file desc chdir 1; do
	check_syscall nonsense "$arg,nonsense"
	check_syscall nonsense "!$arg,nonsense"
done
- isn't it shorter and easier to read?

> +
> +# special cases
> +check_syscall ":"	\!:

Why this case is special?  isn't it an "invalid syscall with inversion"?

> +check_syscall "!"	1,\!
> +check_syscall "!open"	1,\!open
> +check_syscall "none"	1,none
> +check_syscall "all"	1,all

for arg in \! \!open none all; do
	check_syscall "$arg" "1,$arg"
done
- isn't it shorter and easier to read?

> +
> +check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
> +check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
> +check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
> +check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
> +check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
> diff --git a/tests/options-syntax.test b/tests/options-syntax.test
> index b4d9be70..47f6b66e 100755
> --- a/tests/options-syntax.test
> +++ b/tests/options-syntax.test
> @@ -37,17 +37,6 @@ check_e "Invalid process id: 'a'" -p 1,a
>  check_e "Syscall 'chdir' for -b isn't supported" -b chdir
>  check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir
>  
> -check_e "invalid system call '-1'" -e-1
> -check_e "invalid system call '-2'" -e -2
> -check_e "invalid system call '-3'" -etrace=-3
> -check_e "invalid system call '-4'" -e trace=-4
> -check_e "invalid system call '-5'" -e trace=1,-5

If you remove -e-1, -e -2, and -etrace=-3,
please add them or their analogues somewhere else.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20170813/07bd20ea/attachment.bin>


More information about the Strace-devel mailing list