[PATCH v8 01/12] tests: improve syscall set syntax testing

Dmitry V. Levin ldv at altlinux.org
Tue Aug 22 15:57:45 UTC 2017


On Tue, Aug 22, 2017 at 01:01:42PM +0700, Nikolay Marchuk wrote:
> * tests/filtering_syscall-syntax.test: New file.
> * tests/options-syntax.test: Move syscall set syntax testing to
> filtering_syscall-syntax.test.
> * tests/qual_fault-syntax.test: Likewise.
> * tests/qual_inject-syntax.test: Likewise.
> * tests/Makefile.am (MISC_TESTS): Add filtering_syscall-syntax.test.
> ---
>  tests/Makefile.am                   |   1 +
>  tests/filtering_syscall-syntax.test | 133 ++++++++++++++++++++++++++++++++++++
>  tests/options-syntax.test           |  17 -----
>  tests/qual_fault-syntax.test        |  17 +----
>  tests/qual_inject-syntax.test       |  18 +----
>  5 files changed, 136 insertions(+), 50 deletions(-)
>  create mode 100755 tests/filtering_syscall-syntax.test
> 
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index 42a66c46..09fcc5ed 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -258,6 +258,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..78c1da7f
> --- /dev/null
> +++ b/tests/filtering_syscall-syntax.test
> @@ -0,0 +1,133 @@
> +#!/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()
> +{
> +	[ -z "$2" ] || check_e "invalid system call '$1'" -e"$2"
> +	check_e "invalid system call '$1'" -e "$2"
> +	check_e "invalid system call '$1'" -etrace="$2"
> +	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"
> +	check_e "invalid system call '$1'" -e inject="$2"

The test FAILs on HEAD with the following dignostics:
-../../strace: invalid system call ''
+../../strace: invalid inject argument ''

> +	check_e "invalid system call '$1'" -e inject="$2:when=3"
> +	check_e "invalid system call '$1'" -e fault="$2"
> +	check_e "invalid system call '$1'" -e fault="$2:when=4"
> +}
> +
> +check_syscall_new()

Why check_syscall_new?

> +{
> +	[ -z "$2" ] || check_e "invalid system call '$1'" -e "syscall $2"
> +	[ -z "$2" ] || check_e "invalid system call '$1'" -e "(syscall $2)"
> +	[ -z "$2" ] || check_e "invalid system call '$1'" -e "((syscall $2))"
> +	[ -z "$2" ] || check_e "invalid system call '$1'" -e "((syscall  none) or syscall $2)"
> +	[ -z "$2" ] || check_e "invalid system call '$1'" -e "((syscall  all) and syscall $2)"
> +	[ -z "$2" ] || check_e "invalid system call '$1'" -e "trace(syscall $2)"
> +}

Note a lot of redundancy here.
Are two subsequent space symbols after "syscall" intended?


-- 
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/20170822/14be7fd7/attachment.bin>


More information about the Strace-devel mailing list