X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Ftools%2Fhealth%2Fhealth_tp_fail;fp=tests%2Ftools%2Fhealth%2Fhealth_tp_fail;h=5b68e62bef68f6c75d9b84c0322b5d326e7d7e97;hp=0000000000000000000000000000000000000000;hb=6b5133f20604535057af49574f4f506c8d94846c;hpb=6993eeb37fb4caf9b92c09d4ab1730dcc2b8b097 diff --git a/tests/tools/health/health_tp_fail b/tests/tools/health/health_tp_fail new file mode 100755 index 000000000..5b68e62be --- /dev/null +++ b/tests/tools/health/health_tp_fail @@ -0,0 +1,98 @@ +#!/bin/bash +# +# Copyright (C) - 2012 Christian Babeux +# +# 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. +# +# 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="Health check - Testpoint failure" + +CURDIR=$(dirname $0)/ +TESTDIR=$CURDIR/../.. +LTTNG_BIN="lttng" +SESSION_NAME="health_tp_fail" +EVENT_NAME="bogus" +HEALTH_CHECK_BIN="health_check" +SESSIOND_PRELOAD=".libs/libhealthtpfail.so" + +source $TESTDIR/utils.sh + +print_test_banner "$TEST_DESC" + +if [ ! -f "$CURDIR/$SESSIOND_PRELOAD" ]; then + echo -e "libhealthtpfail.so not available for this test. Skipping." + exit 0 +fi + +function test_tp_fail +{ + test_tp_fail_name="$1" + test_tp_fail_code="$2" + + echo "" + echo -e "=== Testing health failure with ${test_tp_fail_name}" + + # Activate testpoints + export LTTNG_TESTPOINT_ENABLE=1 + + # Activate specific testpoint failure + export ${test_tp_fail_name}_TP_FAIL=1 + + # Spawn sessiond with preload healthexit lib + export LD_PRELOAD="$CURDIR/$SESSIOND_PRELOAD" + start_lttng_sessiond + + # Cleanup some env. var. + unset LD_PRELOAD + unset ${test_tp_fail_name}_TP_FAIL + + echo -n "Validating thread ${test_tp_fail_name} failure... " + + # Check health status, exit code should indicate failure + $CURDIR/$HEALTH_CHECK_BIN &> /dev/null + + health_check_exit_code=$? + + if [ $health_check_exit_code -eq $test_tp_fail_code ]; then + print_ok + stop_lttng_sessiond + else + print_fail + echo -e "Health returned: $health_check_exit_code\n" + + stop_lttng_sessiond + return 1 + fi +} + +THREAD=("LTTNG_THREAD_MANAGE_CLIENTS" + "LTTNG_THREAD_MANAGE_APPS" + "LTTNG_THREAD_MANAGE_KERNEL") + +# Exit code value to indicate specific thread failure +EXIT_CODE=(1 2 8) + +THREAD_COUNT=${#THREAD[@]} +i=0 +while [ "$i" -lt "$THREAD_COUNT" ]; do + test_tp_fail "${THREAD[$i]}" "${EXIT_CODE[$i]}" + + if [ $? -eq 1 ]; then + exit 1 + fi + + let "i++" +done + +# Special case manage consumer, need to spawn consumer via commands. +#"LTTNG_THREAD_MANAGE_CONSUMER"