X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Fkernel%2Ftest_select_poll_epoll;h=a359945cd59881fa564c776bbf51d5e76bca64c0;hp=e01866f75dcf22c0f0b6a603b9fffa08ee517ccc;hb=HEAD;hpb=a0b1f42c19b7ea6bcce77b33f4581ca5b3ac56e5 diff --git a/tests/regression/kernel/test_select_poll_epoll b/tests/regression/kernel/test_select_poll_epoll index e01866f75..a359945cd 100755 --- a/tests/regression/kernel/test_select_poll_epoll +++ b/tests/regression/kernel/test_select_poll_epoll @@ -1,32 +1,15 @@ #!/bin/bash # -# Copyright (C) - 2016 Julien Desfossez +# Copyright (C) 2016 Julien Desfossez # -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License, version 2 only, as -# published by the Free Software Foundation. +# SPDX-License-Identifier: GPL-2.0-only # -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. TEST_DESC="Kernel tracer - select, poll and epoll payload extraction" -CURDIR=$(dirname $0)/ +CURDIR=$(dirname "$0")/ TESTDIR=$CURDIR/../.. VALIDATE_SCRIPT="$CURDIR/validate_select_poll_epoll.py" -NUM_TESTS=102 - -# Only run this test on x86 and arm -uname -m | grep -E "x86|i686|arm|aarch64" >/dev/null 2>&1 -if test $? != 0; then - exit 0 -fi DISABLE_VALIDATE=0 # Babeltrace python bindings are required for the validation, but @@ -43,6 +26,13 @@ LAST_WARNING=$(dmesg | grep " WARNING:" | cut -d' ' -f1 | tail -1) LAST_OOPS=$(dmesg | grep " OOPS:" | cut -d' ' -f1 | tail -1) LAST_BUG=$(dmesg | grep " BUG:" | cut -d' ' -f1 | tail -1) +SUPPORTED_SYSCALLS_LIST=$("$CURDIR"/select_poll_epoll --list-supported-test-syscalls) +SUPPORTED_SYSCALLS_COUNT=$(echo $SUPPORTED_SYSCALLS_LIST | awk -F '[\t,]' '{print NF}') + +# Two tests validate their trace for every supported syscall +NUM_TESTS=$((88+(2*SUPPORTED_SYSCALLS_COUNT))) + +# shellcheck source=../../utils/utils.sh source $TESTDIR/utils/utils.sh function check_trace_content() @@ -62,290 +52,284 @@ function check_trace_content() function test_working_cases() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - - # arm64 does not have epoll_wait - uname -m | grep -E "aarch64" >/dev/null 2>&1 - if test $? = 0; then - SYSCALL_LIST="select,pselect6,poll,ppoll,epoll_ctl,epoll_pwait" - else - SYSCALL_LIST="select,pselect6,poll,ppoll,epoll_ctl,epoll_wait,epoll_pwait" - fi + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "Working cases for select, pselect6, poll, ppoll and epoll, waiting for input" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" - lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST + lttng_enable_kernel_syscall_ok $SESSION_NAME $SUPPORTED_SYSCALLS_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$(yes | $CURDIR/select_poll_epoll -t 1); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t working_cases stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 1 -p $pid $TRACE_PATH + validate_trace "$SUPPORTED_SYSCALLS_LIST" "$TRACE_PATH" + check_trace_content -t working_cases --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } function test_timeout_cases() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - - # arm64 does not have epoll_wait - uname -m | grep -E "aarch64" >/dev/null 2>&1 - if test $? = 0; then - SYSCALL_LIST="select,pselect6,poll,ppoll,epoll_ctl,epoll_pwait" - else - SYSCALL_LIST="select,pselect6,poll,ppoll,epoll_ctl,epoll_wait,epoll_pwait" - fi + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "Timeout cases (1ms) for select, pselect6, poll, ppoll and epoll" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" - lttng_enable_kernel_syscall_ok $SESSION_NAME "$SYSCALL_LIST" + lttng_enable_kernel_syscall_ok $SESSION_NAME "$SUPPORTED_SYSCALLS_LIST" add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$($CURDIR/select_poll_epoll -t 2); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t working_cases_timeout stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 2 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "$SUPPORTED_SYSCALLS_LIST" "$TRACE_PATH" + check_trace_content -t working_cases_timeout --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_big_pselect() +function test_pselect_invalid_fd() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="pselect6" + local SYSCALL_LIST="pselect6" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") - diag "pselect with a FD > 1023" + diag "pselect with invalid FD" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$($CURDIR/select_poll_epoll -t 3); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t pselect_invalid_fd stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 3 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "$SYSCALL_LIST" "$TRACE_PATH" + check_trace_content -t pselect_invalid_fd --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_big_ppoll() +function test_ppoll_big() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="ppoll" + local SYSCALL_LIST="ppoll" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "ppoll with 2047 FDs" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$(yes | $CURDIR/select_poll_epoll -t 4); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t ppoll_big stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 4 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "$SYSCALL_LIST" "$TRACE_PATH" + check_trace_content -t ppoll_big --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_ppoll_overflow() +function test_ppoll_fds_buffer_overflow() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="ppoll" + local SYSCALL_LIST="ppoll" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "ppoll buffer overflow, should segfault, waits for input" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok diag "Expect segfaults" - { out=$(yes | $CURDIR/select_poll_epoll -t 5); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t ppoll_fds_buffer_overflow stop_lttng_tracing_ok - echo $out - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH + validate_trace "$SYSCALL_LIST" "$TRACE_PATH" - check_trace_content -t 5 -p $pid $TRACE_PATH 2>/dev/null + check_trace_content -t ppoll_fds_buffer_overflow --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_pselect_invalid_ptr() +function test_pselect_invalid_pointer() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="pselect6" + local SYSCALL_LIST="pselect6" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "pselect with invalid pointer, waits for input" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$(yes | $CURDIR/select_poll_epoll -t 6); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t pselect_invalid_pointer stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 6 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "$SYSCALL_LIST" "$TRACE_PATH" + check_trace_content -t pselect_invalid_pointer --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_ppoll_ulong_max() +function test_ppoll_fds_ulong_max() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="ppoll" + local SYSCALL_LIST="ppoll" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "ppoll with ulong_max fds, waits for input" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$(yes | $CURDIR/select_poll_epoll -t 7); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t ppoll_fds_ulong_max stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 7 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "$SYSCALL_LIST" "$TRACE_PATH" + check_trace_content -t ppoll_fds_ulong_max --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_epoll_pwait_invalid_ptr() +function test_epoll_pwait_invalid_pointer() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="epoll_pwait" + local SYSCALL_LIST="epoll_pwait" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "epoll_pwait with invalid pointer, waits for input" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$(yes | $CURDIR/select_poll_epoll -t 8); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t epoll_pwait_invalid_pointer stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 8 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "$SYSCALL_LIST" "$TRACE_PATH" + check_trace_content -t epoll_pwait_invalid_pointer --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_epoll_pwait_int_max() +function test_epoll_pwait_fds_int_max() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="epoll_pwait" + local SYSCALL_LIST="epoll_pwait" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "epoll_pwait with maxevents set to INT_MAX, waits for input" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$(yes | $CURDIR/select_poll_epoll -t 9); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t epoll_pwait_int_max stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 9 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "$SYSCALL_LIST" "$TRACE_PATH" + check_trace_content -t epoll_pwait_int_max --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_ppoll_concurrent() +function test_ppoll_concurrent_write() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="ppoll" + local SYSCALL_LIST="ppoll" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "ppoll with concurrent updates of the structure from user-space, stress test (3000 iterations), waits for input + timeout 1ms" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid start_lttng_tracing_ok - { out=$(yes | $CURDIR/select_poll_epoll -t 10); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t ppoll_concurrent_write stop_lttng_tracing_ok - pid=$(echo $out | cut -d' ' -f1) - validate_trace "$SYSCALL_LIST" $TRACE_PATH - check_trace_content -t 10 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "$SYSCALL_LIST" "$TRACE_PATH" + check_trace_content -t ppoll_concurrent_write --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } -function test_epoll_pwait_concurrent() +function test_epoll_pwait_concurrent_unmap() { - TRACE_PATH=$(mktemp -d) SESSION_NAME="syscall_payload" - SYSCALL_LIST="epoll_ctl,epoll_pwait" + local SYSCALL_LIST="epoll_ctl,epoll_pwait" + TRACE_PATH=$(mktemp -d -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_trace_path.XXXXXX") + TEST_VALIDATION_OUTPUT_PATH=$(mktemp -u -t "tmp.test_kernel_select_poll_epoll_${FUNCNAME[0]}_validation.XXXXXX") diag "epoll_pwait with concurrent munmap of the buffer from user-space, should randomly segfault, run multiple times, waits for input + timeout 1ms" - create_lttng_session_ok $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME "$TRACE_PATH" lttng_enable_kernel_syscall_ok $SESSION_NAME $SYSCALL_LIST add_context_kernel_ok $SESSION_NAME channel0 pid @@ -353,18 +337,18 @@ function test_epoll_pwait_concurrent() start_lttng_tracing_ok diag "Expect segfaults" for i in $(seq 1 100); do - { out=$($CURDIR/select_poll_epoll -t 11); } 2>/dev/null + yes | "$CURDIR"/select_poll_epoll --validation-file "$TEST_VALIDATION_OUTPUT_PATH" -t epoll_pwait_concurrent_munmap done - pid=$(echo $out | cut -d' ' -f1) stop_lttng_tracing_ok # epoll_wait is not always generated in the trace (stress test) - validate_trace "epoll_ctl" $TRACE_PATH - check_trace_content -t 11 -p $pid $TRACE_PATH 2>/dev/null + validate_trace "epoll_ctl" "$TRACE_PATH" + check_trace_content -t epoll_pwait_concurrent_munmap --validation-file "$TEST_VALIDATION_OUTPUT_PATH" "$TRACE_PATH" 2>/dev/null destroy_lttng_session_ok $SESSION_NAME - rm -rf $TRACE_PATH + rm -rf "$TRACE_PATH" + rm -f "$TEST_VALIDATION_OUTPUT_PATH" } # MUST set TESTDIR before calling those functions @@ -372,27 +356,32 @@ plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" -if [ "$(id -u)" == "0" ]; then - isroot=1 -else - isroot=0 +# Only run this test on x86 and arm +uname -m | grep -E "x86|i686|arm|aarch64" >/dev/null 2>&1 +if test $? != 0; then + skip 0 "Run only on x86 and arm. Skipping all tests." $NUM_TESTS + exit 0 fi -skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || +diag "Supported syscalls are $SUPPORTED_SYSCALLS_LIST" + +check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || { + validate_lttng_modules_present + start_lttng_sessiond test_working_cases test_timeout_cases - test_big_pselect - test_big_ppoll - test_ppoll_overflow - test_pselect_invalid_ptr - test_ppoll_ulong_max - test_epoll_pwait_invalid_ptr - test_epoll_pwait_int_max - test_ppoll_concurrent - test_epoll_pwait_concurrent + test_pselect_invalid_fd + test_ppoll_big + test_ppoll_fds_buffer_overflow + test_pselect_invalid_pointer + test_ppoll_fds_ulong_max + test_epoll_pwait_invalid_pointer + test_epoll_pwait_fds_int_max + test_ppoll_concurrent_write + test_epoll_pwait_concurrent_unmap stop_lttng_sessiond @@ -401,12 +390,18 @@ skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || NEW_BUG=$(dmesg | grep " BUG:" | cut -d' ' -f1 | tail -1) if test "$LAST_WARNING" != "$NEW_WARNING"; then + diag "Last WARNING before tests: ${LAST_WARNING}" + diag "Last WARNING after tests: ${NEW_WARNING}" fail "New WARNING generated" fi if test "$LAST_OOPS" != "$NEW_OOPS"; then + diag "Last OOPS before tests: ${LAST_OOPS}" + diag "Last OOPS after tests: ${NEW_OOPS}" fail "New OOPS generated" fi if test "$LAST_BUG" != "$NEW_BUG"; then + diag "Last BUG before tests: ${LAST_BUG}" + diag "Last BUG after tests: ${NEW_BUG}" fail "New BUG generated" fi }