tests: add abbrev-e.test, verbose-e.test, raw-e.test, read-e.test, write-e.test
Check how strace -e works with different parapeters. * tests/abbrev-e.c: New file. * tests/abbrev-e.test: New test. * tests/verbose-e.test: Likewise. * tests/raw-e.c: New file. * tests/raw-e.test: New test. * tests/read-e.c: New file. * tests/read-e.test: New test. * tests/write-e.c: New file. * tests/write-e.test: New test. * tests/Makefile.am (check_PROGRAMS): Add abbrev-e, raw-e, read-e, write-e. (TESTS): Add abbrev-e.test, verbose-e.test, raw-e.tese, read-e.test, write-e.test. * tests/.gitignore: Add abbrev-e, raw-e, read-e, write-e. --- tests/.gitignore | 4 ++++ tests/Makefile.am | 9 +++++++++ tests/abbrev-e.c | 11 +++++++++++ tests/abbrev-e.test | 13 +++++++++++++ tests/raw-e.c | 10 ++++++++++ tests/raw-e.test | 13 +++++++++++++ tests/read-e.c | 40 ++++++++++++++++++++++++++++++++++++++++ tests/read-e.test | 26 ++++++++++++++++++++++++++ tests/verbose-e.test | 13 +++++++++++++ tests/write-e.c | 39 +++++++++++++++++++++++++++++++++++++++ tests/write-e.test | 26 ++++++++++++++++++++++++++ 11 files changed, 204 insertions(+) create mode 100644 tests/abbrev-e.c create mode 100755 tests/abbrev-e.test create mode 100644 tests/raw-e.c create mode 100755 tests/raw-e.test create mode 100644 tests/read-e.c create mode 100755 tests/read-e.test create mode 100755 tests/verbose-e.test create mode 100644 tests/write-e.c create mode 100755 tests/write-e.test diff --git a/tests/.gitignore b/tests/.gitignore index cfe1e9f..9b821f2 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -6,6 +6,7 @@ *.tmp.* *.trs _newselect +abbrev-e adjtimex aio bpf @@ -63,9 +64,11 @@ personality pipe ppoll pselect6 +raw-e readdir readlink readlinkat +read-e restart_syscall rt_sigqueueinfo sched_xetaffinity @@ -107,6 +110,7 @@ utime utimensat vfork-f wait +write-e xattr xet_robust_list xetitimer diff --git a/tests/Makefile.am b/tests/Makefile.am index 33f76cb..ec5f1a7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -52,6 +52,7 @@ LDADD = libtests.a check_PROGRAMS = \ _newselect \ + abbrev-e \ adjtimex \ aio \ bpf \ @@ -107,9 +108,11 @@ check_PROGRAMS = \ pipe \ ppoll \ pselect6 \ + raw-e \ readdir \ readlink \ readlinkat \ + read-e \ restart_syscall \ rt_sigqueueinfo \ sched_xetaffinity \ @@ -151,6 +154,7 @@ check_PROGRAMS = \ utimensat \ vfork-f \ wait \ + write-e \ xattr \ xet_robust_list \ xetitimer \ @@ -187,6 +191,7 @@ TESTS = \ ksysent.test \ \ _newselect.test \ + abbrev-e.test \ adjtimex.test \ aio.test \ bexecve.test \ @@ -242,9 +247,11 @@ TESTS = \ pipe.test \ ppoll.test \ pselect6.test \ + raw-e.test \ readdir.test \ readlink.test \ readlinkat.test \ + read-e.test \ rt_sigqueueinfo.test \ sched_xetaffinity.test \ sched_xetattr.test \ @@ -282,8 +289,10 @@ TESTS = \ userfaultfd.test \ utime.test \ utimensat.test \ + verbose-e.test \ vfork-f.test \ wait.test \ + write-e.test \ xattr.test \ xet_robust_list.test \ xetitimer.test \ diff --git a/tests/abbrev-e.c b/tests/abbrev-e.c new file mode 100644 index 0000000..e33f656 --- /dev/null +++ b/tests/abbrev-e.c @@ -0,0 +1,11 @@ +#include <stdio.h> +#include <sys/utsname.h> + +int main() +{ + int ret; + struct utsname buf; + ret = uname(&buf); + printf("uname({sysname=\"%s\", nodename=\"%s\", ...}) = %d\n", buf.sysname, buf.nodename, ret); + return 0; +} diff --git a/tests/abbrev-e.test b/tests/abbrev-e.test new file mode 100755 index 0000000..3e74d47 --- /dev/null +++ b/tests/abbrev-e.test @@ -0,0 +1,13 @@ +#!/bin/sh + +. "${srcdir=.}/init.sh" + +OUT="${LOG}.out" + +run_prog +run_strace -e abbrev=uname -euname -qq $args >"$OUT" + +match_diff "$OUT" "$LOG" +rm -f "$OUT" + +exit 0 diff --git a/tests/raw-e.c b/tests/raw-e.c new file mode 100644 index 0000000..7b2dfcc --- /dev/null +++ b/tests/raw-e.c @@ -0,0 +1,10 @@ +#include <stdio.h> +#include <unistd.h> + +int main() +{ + pid_t pid; + pid = getpid(); + printf("getpid() = 0x%x\n", pid); + return 0; +} diff --git a/tests/raw-e.test b/tests/raw-e.test new file mode 100755 index 0000000..d76a0f0 --- /dev/null +++ b/tests/raw-e.test @@ -0,0 +1,13 @@ +#!/bin/sh + +. "${srcdir=.}/init.sh" + +OUT="${LOG}.out" + +run_prog +run_strace -e raw=getpid -egetpid -a9 -qq $args >"$OUT" + +match_diff "$LOG" "$OUT" +rm -f "$OUT" + +exit 0 diff --git a/tests/read-e.c b/tests/read-e.c new file mode 100644 index 0000000..723cb60 --- /dev/null +++ b/tests/read-e.c @@ -0,0 +1,40 @@ +#include <unistd.h> +#include <fcntl.h> +#include <stdlib.h> +#include <stdio.h> + +void do_readfd(int fd) +{ + int oldfd; + oldfd = open("/dev/zero", O_RDONLY); + if (-1 == oldfd) + { + return; + } + int newfd; + if (oldfd == fd) + { + newfd = fd; + } + else + { + newfd = dup2(oldfd, fd); + close(oldfd); + if (-1 == newfd) + { + return; + } + } + char c; + read(newfd, &c, 1); + close(newfd); +} + +int main() +{ + long fd = 4; + do_readfd(fd); + fd = 5; + do_readfd(fd); + return 0; +} diff --git a/tests/read-e.test b/tests/read-e.test new file mode 100755 index 0000000..d8ebe1a --- /dev/null +++ b/tests/read-e.test @@ -0,0 +1,26 @@ +#!/bin/sh + +. "${srcdir=.}/init.sh" + +check_rd() +{ + FUNCLINE=`grep -n "$1" "$LOG" | sed -n '$p' | cut -f1 -d:` + let FUNCLINE=FUNCLINE+1 + CONTENT=`sed -n "$FUNCLINE"p "$LOG"` + ERROR=`echo "$CONTENT" | grep " | 00000"` + if [ "$2" -eq 1 ];then + if [ "$ERROR" = "" ];then + fail_ "read not exist" + fi + else + if [ "$ERROR" != "" ];then + fail_ "read exist" + fi + fi +} + +run_prog +run_strace -e read=4 -eread -qq $args + +check_rd "read(4, \"\\\\0\", 1) \+= 1" 1 +check_rd "read(5, \"\\\\0\", 1) \+= 1" 0 diff --git a/tests/verbose-e.test b/tests/verbose-e.test new file mode 100755 index 0000000..1c4d361 --- /dev/null +++ b/tests/verbose-e.test @@ -0,0 +1,13 @@ +#!/bin/sh + +. "${srcdir=.}/init.sh" + +OUT="${LOG}.out" + +run_prog ./abbrev-e +run_strace -e verbose=uname -euname -qq $args >"$OUT" + +match_diff "$OUT" "$LOG" +rm -f "$OUT" + +exit 0 diff --git a/tests/write-e.c b/tests/write-e.c new file mode 100644 index 0000000..a495c7a --- /dev/null +++ b/tests/write-e.c @@ -0,0 +1,39 @@ +#include <unistd.h> +#include <fcntl.h> +#include <stdlib.h> +#include <stdio.h> + +void do_writefd(int fd) +{ + int oldfd; + oldfd = open("/dev/null", O_WRONLY); + if (-1 == oldfd) + { + return; + } + int newfd; + if (oldfd == fd) + { + newfd = fd; + } + else + { + newfd = dup2(oldfd, fd); + close(oldfd); + if (-1 == newfd) + { + return; + } + } + write(newfd, "", 1); + close(newfd); +} + +int main() +{ + long fd = 4; + do_writefd(fd); + fd = 5; + do_writefd(fd); + return 0; +} diff --git a/tests/write-e.test b/tests/write-e.test new file mode 100755 index 0000000..ba07fa9 --- /dev/null +++ b/tests/write-e.test @@ -0,0 +1,26 @@ +#!/bin/sh + +. "${srcdir=.}/init.sh" + +check_wr() +{ + FUNCLINE=`grep -n "$1" "$LOG" | sed -n '$p' | cut -f1 -d:` + let FUNCLINE=FUNCLINE+1 + CONTENT=`sed -n "$FUNCLINE"p "$LOG"` + ERROR=`echo "$CONTENT" | grep " | 00000"` + if [ "$2" -eq 1 ];then + if [ "$ERROR" = "" ];then + fail_ "write not exist" + fi + else + if [ "$ERROR" != "" ];then + fail_ "write exist" + fi + fi +} + +run_prog +run_strace -e write=4 -ewrite -qq $args + +check_wr "write(4, \"\\\\0\", 1) \+= 1" 1 +check_wr "write(5, \"\\\\0\", 1) \+= 1" 0 -- 1.8.3.1 ------------------------------------------------------------------------------ _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel