From 3de730adc1866a3ea43b6d5836a4af9ba51e83f3 Mon Sep 17 00:00:00 2001 From: Masatake YAMATO Date: Sun, 26 Feb 2023 00:58:47 +0900 Subject: [PATCH] tests: (lsfd) skip if the platform doesn't provide pidfd_open(2) Signed-off-by: Masatake YAMATO --- ...-ainodeclass => column-ainodeclass-inotify} | 2 -- tests/expected/lsfd/column-ainodeclass-pidfd | 2 ++ tests/expected/lsfd/column-name | 6 ------ tests/expected/lsfd/column-name-pidfd | 2 ++ .../expected/lsfd/column-name-ro-regular-file | 2 ++ tests/expected/lsfd/column-name-socketpair | 2 ++ tests/expected/lsfd/column-type | 8 -------- tests/expected/lsfd/column-type-inotify | 2 ++ tests/expected/lsfd/column-type-pidfd | 2 ++ .../expected/lsfd/column-type-ro-regular-file | 2 ++ tests/expected/lsfd/column-type-socketpair | 2 ++ tests/helpers/test_mkfds.c | 3 ++- tests/ts/lsfd/column-ainodeclass | 16 +++++++++++----- tests/ts/lsfd/column-name | 18 ++++++++++++------ tests/ts/lsfd/column-type | 16 +++++++++++----- tests/ts/lsfd/mkfds-pidfd | 4 ++++ tests/ts/lsfd/mkfds-unix-in-netns | 1 - 17 files changed, 56 insertions(+), 34 deletions(-) rename tests/expected/lsfd/{column-ainodeclass => column-ainodeclass-inotify} (50%) create mode 100644 tests/expected/lsfd/column-ainodeclass-pidfd delete mode 100644 tests/expected/lsfd/column-name create mode 100644 tests/expected/lsfd/column-name-pidfd create mode 100644 tests/expected/lsfd/column-name-ro-regular-file create mode 100644 tests/expected/lsfd/column-name-socketpair delete mode 100644 tests/expected/lsfd/column-type create mode 100644 tests/expected/lsfd/column-type-inotify create mode 100644 tests/expected/lsfd/column-type-pidfd create mode 100644 tests/expected/lsfd/column-type-ro-regular-file create mode 100644 tests/expected/lsfd/column-type-socketpair diff --git a/tests/expected/lsfd/column-ainodeclass b/tests/expected/lsfd/column-ainodeclass-inotify similarity index 50% rename from tests/expected/lsfd/column-ainodeclass rename to tests/expected/lsfd/column-ainodeclass-inotify index d3428760f5..f93e19e1f8 100644 --- a/tests/expected/lsfd/column-ainodeclass +++ b/tests/expected/lsfd/column-ainodeclass-inotify @@ -1,4 +1,2 @@ - 3 UNKN pidfd -pidfd:ASSOC,STTYPE,AINODECLASS: 0 3 UNKN inotify inotify:ASSOC,STTYPE,AINODECLASS: 0 diff --git a/tests/expected/lsfd/column-ainodeclass-pidfd b/tests/expected/lsfd/column-ainodeclass-pidfd new file mode 100644 index 0000000000..269cea5d93 --- /dev/null +++ b/tests/expected/lsfd/column-ainodeclass-pidfd @@ -0,0 +1,2 @@ + 3 UNKN pidfd +pidfd:ASSOC,STTYPE,AINODECLASS: 0 diff --git a/tests/expected/lsfd/column-name b/tests/expected/lsfd/column-name deleted file mode 100644 index c8364fbf5a..0000000000 --- a/tests/expected/lsfd/column-name +++ /dev/null @@ -1,6 +0,0 @@ - 3 /etc/passwd /etc/passwd -ro-regular-file:ASSOC,KNAME,NAME: 0 - 3 anon_inode:[pidfd] pid=1 comm= nspid=1 -pidfd:ASSOC,KNAME,NAME: 0 - 3 socket:[INODENUM] state=connected type=dgram -socketpair:ASSOC,KNAME,NAME: 0 diff --git a/tests/expected/lsfd/column-name-pidfd b/tests/expected/lsfd/column-name-pidfd new file mode 100644 index 0000000000..49abe81747 --- /dev/null +++ b/tests/expected/lsfd/column-name-pidfd @@ -0,0 +1,2 @@ + 3 anon_inode:[pidfd] pid=1 comm= nspid=1 +pidfd:ASSOC,KNAME,NAME: 0 diff --git a/tests/expected/lsfd/column-name-ro-regular-file b/tests/expected/lsfd/column-name-ro-regular-file new file mode 100644 index 0000000000..446a916448 --- /dev/null +++ b/tests/expected/lsfd/column-name-ro-regular-file @@ -0,0 +1,2 @@ + 3 /etc/passwd /etc/passwd +ro-regular-file:ASSOC,KNAME,NAME: 0 diff --git a/tests/expected/lsfd/column-name-socketpair b/tests/expected/lsfd/column-name-socketpair new file mode 100644 index 0000000000..bd94e567f0 --- /dev/null +++ b/tests/expected/lsfd/column-name-socketpair @@ -0,0 +1,2 @@ + 3 socket:[INODENUM] state=connected type=dgram +socketpair:ASSOC,KNAME,NAME: 0 diff --git a/tests/expected/lsfd/column-type b/tests/expected/lsfd/column-type deleted file mode 100644 index 39684fac42..0000000000 --- a/tests/expected/lsfd/column-type +++ /dev/null @@ -1,8 +0,0 @@ - 3 REG REG -ro-regular-file:ASSOC,STTYPE,TYPE: 0 - 3 UNKN pidfd -pidfd:ASSOC,STTYPE,TYPE: 0 - 3 UNKN inotify -inotify:ASSOC,STTYPE,TYPE: 0 - 3 SOCK UNIX -socketpair:ASSOC,STTYPE,TYPE: 0 diff --git a/tests/expected/lsfd/column-type-inotify b/tests/expected/lsfd/column-type-inotify new file mode 100644 index 0000000000..69588d96cd --- /dev/null +++ b/tests/expected/lsfd/column-type-inotify @@ -0,0 +1,2 @@ + 3 UNKN inotify +inotify:ASSOC,STTYPE,TYPE: 0 diff --git a/tests/expected/lsfd/column-type-pidfd b/tests/expected/lsfd/column-type-pidfd new file mode 100644 index 0000000000..a3278d2cd0 --- /dev/null +++ b/tests/expected/lsfd/column-type-pidfd @@ -0,0 +1,2 @@ + 3 UNKN pidfd +pidfd:ASSOC,STTYPE,TYPE: 0 diff --git a/tests/expected/lsfd/column-type-ro-regular-file b/tests/expected/lsfd/column-type-ro-regular-file new file mode 100644 index 0000000000..63b435600e --- /dev/null +++ b/tests/expected/lsfd/column-type-ro-regular-file @@ -0,0 +1,2 @@ + 3 REG REG +ro-regular-file:ASSOC,STTYPE,TYPE: 0 diff --git a/tests/expected/lsfd/column-type-socketpair b/tests/expected/lsfd/column-type-socketpair new file mode 100644 index 0000000000..22a61b78c4 --- /dev/null +++ b/tests/expected/lsfd/column-type-socketpair @@ -0,0 +1,2 @@ + 3 SOCK UNIX +socketpair:ASSOC,STTYPE,TYPE: 0 diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c index e629c17d5f..6903b9e725 100644 --- a/tests/helpers/test_mkfds.c +++ b/tests/helpers/test_mkfds.c @@ -739,7 +739,8 @@ static void *make_pidfd(const struct factory *factory, struct fdesc fdescs[], int fd = pidfd_open(pid, 0); if (fd < 0) - err(EXIT_FAILURE, "failed in pidfd_open(%d)", (int)pid); + err((errno == ENOSYS? EXIT_ENOSYS: EXIT_FAILURE), + "failed in pidfd_open(%d)", (int)pid); free_arg(&target_pid); if (fd != fdescs[0].fd) { diff --git a/tests/ts/lsfd/column-ainodeclass b/tests/ts/lsfd/column-ainodeclass index 54d6fd4355..6391c48165 100755 --- a/tests/ts/lsfd/column-ainodeclass +++ b/tests/ts/lsfd/column-ainodeclass @@ -20,9 +20,9 @@ TS_DESC="ainodeclass column" . "$TS_TOPDIR"/functions.sh ts_init "$*" +. "$TS_SELF/lsfd-functions.bash" ts_check_test_command "$TS_CMD_LSFD" ts_check_test_command "$TS_HELPER_MKFDS" -ts_skip_qemu_user ts_cd "$TS_OUTDIR" @@ -30,8 +30,9 @@ PID= FD=3 EXPR="(FD == 3)" -{ - for C in pidfd inotify; do +for C in pidfd inotify; do + ts_init_subtest $C + { coproc MKFDS { "$TS_HELPER_MKFDS" $C $FD ; } if read -r -u "${MKFDS[0]}" PID; then ${TS_CMD_LSFD} -n -o ASSOC,STTYPE,AINODECLASS -p "${PID}" -Q "${EXPR}" @@ -40,7 +41,12 @@ EXPR="(FD == 3)" kill -CONT "${PID}" fi wait "${MKFDS_PID}" - done -} > "$TS_OUTPUT" 2>&1 + } > "$TS_OUTPUT" 2>&1 + if [ "$C-$?" == "pidfd-$ENOSYS" ]; then + ts_skip_subtest "pidfd_open(2) is not available" + continue + fi + ts_finalize_subtest +done ts_finalize diff --git a/tests/ts/lsfd/column-name b/tests/ts/lsfd/column-name index fcff5e8068..41015009df 100755 --- a/tests/ts/lsfd/column-name +++ b/tests/ts/lsfd/column-name @@ -20,10 +20,10 @@ TS_DESC="NAME and KNAME column" . "$TS_TOPDIR"/functions.sh ts_init "$*" +. "$TS_SELF/lsfd-functions.bash" ts_check_test_command "$TS_CMD_LSFD" ts_check_test_command "$TS_HELPER_MKFDS" ts_check_prog "sed" -ts_skip_qemu_user ts_cd "$TS_OUTDIR" @@ -31,8 +31,9 @@ PID= FD=3 EXPR="(FD == 3)" -{ - for C in ro-regular-file pidfd socketpair; do +for C in ro-regular-file pidfd socketpair; do + ts_init_subtest $C + { coproc MKFDS { argv=() case $C in @@ -52,8 +53,13 @@ EXPR="(FD == 3)" kill -CONT "${PID}" fi - wait "${MKFDS_PID}" - done -} > "$TS_OUTPUT" 2>&1 + } > "$TS_OUTPUT" 2>&1 + wait "${MKFDS_PID}" + if [ "$C-$?" == "pidfd-$ENOSYS" ]; then + ts_skip_subtest "pidfd_open(2) is not available" + contiue + fi + ts_finalize_subtest +done ts_finalize diff --git a/tests/ts/lsfd/column-type b/tests/ts/lsfd/column-type index c875defa0e..cf6175efaa 100755 --- a/tests/ts/lsfd/column-type +++ b/tests/ts/lsfd/column-type @@ -20,9 +20,9 @@ TS_DESC="TYPE and STTYPE column" . "$TS_TOPDIR"/functions.sh ts_init "$*" +. "$TS_SELF/lsfd-functions.bash" ts_check_test_command "$TS_CMD_LSFD" ts_check_test_command "$TS_HELPER_MKFDS" -ts_skip_qemu_user ts_cd "$TS_OUTDIR" @@ -30,8 +30,9 @@ PID= FD=3 EXPR="(FD == 3)" -{ - for C in ro-regular-file pidfd inotify socketpair; do +for C in ro-regular-file pidfd inotify socketpair; do + ts_init_subtest $C + { coproc MKFDS { argv=() case $C in @@ -48,7 +49,12 @@ EXPR="(FD == 3)" kill -CONT "${PID}" fi wait "${MKFDS_PID}" - done -} > "$TS_OUTPUT" 2>&1 + } > "$TS_OUTPUT" 2>&1 + if [ "$C-$?" == "pidfd-$ENOSYS" ]; then + ts_skip_subtest "pidfd_open(2) is not available" + continue + fi + ts_finalize_subtest +done ts_finalize diff --git a/tests/ts/lsfd/mkfds-pidfd b/tests/ts/lsfd/mkfds-pidfd index ae4f65c83b..aad693ff11 100755 --- a/tests/ts/lsfd/mkfds-pidfd +++ b/tests/ts/lsfd/mkfds-pidfd @@ -20,6 +20,7 @@ TS_DESC="pidfd" . "$TS_TOPDIR"/functions.sh ts_init "$*" +. "$TS_SELF/lsfd-functions.bash" ts_check_test_command "$TS_CMD_LSFD" ts_check_test_command "$TS_HELPER_MKFDS" ts_check_prog "ps" @@ -43,5 +44,8 @@ EXPR="(PID != ${TARGET}) and (FD == 3) and (PIDFD.PID == ${TARGET})" fi wait ${MKFDS_PID} } > $TS_OUTPUT 2>&1 +if [ "$?" == "$ENOSYS" ]; then + ts_skip "pidfd_open(2) is not available" +fi ts_finalize diff --git a/tests/ts/lsfd/mkfds-unix-in-netns b/tests/ts/lsfd/mkfds-unix-in-netns index 234208909c..f39406e2c0 100755 --- a/tests/ts/lsfd/mkfds-unix-in-netns +++ b/tests/ts/lsfd/mkfds-unix-in-netns @@ -20,7 +20,6 @@ TS_DESC="UNIX sockets made in a differenct net namespace" . "$TS_TOPDIR"/functions.sh ts_init "$*" ts_skip_nonroot -ts_skip_qemu_user ts_check_test_command "$TS_CMD_LSFD" -- 2.47.2