From: Dmitry V. Levin Date: Thu, 27 Aug 2015 08:24:39 +0000 (+0000) Subject: tests: convert select.test from match_awk to match_diff X-Git-Tag: v4.11~246 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4960b2f0084a8ed4e06f84e8bc05bd4c3313ed61;p=strace tests: convert select.test from match_awk to match_diff * tests/select.c (main): Print expected output. * tests/select.test: Use match_diff instead of match_awk. * tests/select.awk: Remove. * tests/Makefile.am (EXTRA_DIST): Remove select.awk. --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 7b2986fb..36bb5100 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -180,7 +180,6 @@ EXTRA_DIST = init.sh run.sh match.awk \ readlinkat.awk \ restart_syscall.expected \ restart_syscall_unknown.expected \ - select.awk \ sigaction.awk \ sigaltstack.expected \ signalfd.expected \ diff --git a/tests/select.awk b/tests/select.awk deleted file mode 100644 index 996d0285..00000000 --- a/tests/select.awk +++ /dev/null @@ -1,11 +0,0 @@ -BEGIN { - r[1] = "^p?select6?\\(2, \\[0 1\\], \\[0 1\\], \\[0 1\\], NULL(, 0)?\\) += 1 \\(\\)$" - r[2] = "^p?select6?\\(-1, NULL, 0x[0-9a-f]+, NULL, NULL(, 0)?\\) += -1 " - r[3] = "^p?select6?\\(1025, \\[0\\], \\[\\], NULL, \\{0, 100(000)?\\}(, 0)?\\) += 0 \\(Timeout\\)$" - s[4] = "+++ exited with 0 +++" - - lines = 4 - fail = 0 -} - -@include "match.awk" diff --git a/tests/select.c b/tests/select.c index 4ed644d8..d345add2 100644 --- a/tests/select.c +++ b/tests/select.c @@ -2,42 +2,65 @@ * Based on test by Dr. David Alan Gilbert */ #include +#include +#include #include #include static fd_set set[0x1000000 / sizeof(fd_set)]; -int main() +int main(int ac, char **av) { int fds[2]; struct timeval timeout = { .tv_sec = 0, .tv_usec = 100 }; + int is_select = ac < 2 || strcmp(av[1], "pselect6"); - (void) close(0); - (void) close(1); assert(pipe(fds) == 0); /* * Start with a nice simple select. */ FD_ZERO(set); - FD_SET(0, set); - FD_SET(1, set); - assert(select(2, set, set, set, NULL) == 1); + FD_SET(fds[0], set); + FD_SET(fds[1], set); + assert(select(fds[1] + 1, set, set, set, NULL) == 1); + if (is_select) + printf("select(%d, [%d %d], [%d %d], [%d %d], NULL) = 1 ()\n", + fds[1] + 1, fds[0], fds[1], + fds[0], fds[1], fds[0], fds[1]); + else + printf("pselect6(%d, [%d %d], [%d %d], [%d %d], NULL, NULL) " + "= 1 ()\n", + fds[1] + 1, fds[0], fds[1], + fds[0], fds[1], fds[0], fds[1]); /* * Now the crash case that trinity found, negative nfds * but with a pointer to a large chunk of valid memory. */ FD_ZERO(set); - FD_SET(1,set); + FD_SET(fds[1],set); assert(select(-1, NULL, set, NULL, NULL) == -1); + if (is_select) + printf("select(-1, NULL, %p, NULL, NULL) " + "= -1 EINVAL (Invalid argument)\n", set); + else + printf("pselect6(-1, NULL, %p, NULL, NULL, NULL) " + "= -1 EINVAL (Invalid argument)\n", set); /* * Another variant, with nfds exceeding FD_SETSIZE limit. */ FD_ZERO(set); - FD_SET(0,set); + FD_SET(fds[0],set); assert(select(FD_SETSIZE + 1, set, set + 1, NULL, &timeout) == 0); + if (is_select) + printf("select(%d, [%d], [], NULL, {0, 100}) = 0 (Timeout)\n", + FD_SETSIZE + 1, fds[0]); + else + printf("pselect6(%d, [%d], [], NULL, {0, 100000}, NULL) " + "= 0 (Timeout)\n", FD_SETSIZE + 1, fds[0]); + puts("+++ exited with 0 +++"); return 0; } diff --git a/tests/select.test b/tests/select.test index 52b9f170..846f9be1 100755 --- a/tests/select.test +++ b/tests/select.test @@ -1,17 +1,23 @@ #!/bin/sh -# Check select syscall decoding. +# Check select/pselect6 syscall decoding. . "${srcdir=.}/init.sh" -syscall= -$STRACE -epselect6 -h > /dev/null && syscall=$syscall,pselect6 -$STRACE -eselect -h > /dev/null && syscall=$syscall,select -test -n "$syscall" || - fail_ 'neither select not pselect6 syscall is supported on this architecture' +exe="./${ME_%.test}" +syscall=select +run_prog "$exe" $syscall > /dev/null +run_strace $args > /dev/null -run_prog -run_strace -e$syscall $args -match_awk +check_prog grep +if LC_ALL=C grep -x "pselect6(.*" "$LOG" > /dev/null; then + syscall=pselect6 + run_prog "$exe" $syscall > /dev/null +fi + +OUT="$LOG.out" +run_strace -a36 -e$syscall $args > "$OUT" +match_diff "$OUT" "$LOG" +rm -f "$OUT" exit 0