#!/bin/bash # # Copyright (C) 2012 Christian Babeux # Copyright (C) 2014 Mathieu Desnoyers # # SPDX-License-Identifier: GPL-2.0-only TEST_DESC="Health check - Thread OK" CURDIR=$(dirname $0)/ TESTDIR=$CURDIR/../../.. SESSION_NAME="health_thread_ok" UST_EVENT_NAME="tp:tptest" KERNEL_EVENT_NAME="sched_switch" CHANNEL_NAME="testchan" HEALTH_CHECK_BIN="health_check" NUM_TESTS=17 SLEEP_TIME=30 source $TESTDIR/utils/utils.sh function report_errors { # Report health errors out=$(cat ${STDOUT_PATH} | wc -l) if [ $out -ne 0 ]; then fail "Validation failure" diag "Health returned:" diag "stdout:" file=${STDOUT_PATH} while read line ; do diag "$line" done < ${file} diag "stderr:" file=${STDERR_PATH} while read line ; do diag "$line" done < ${file} else pass "Validation OK" fi } function test_thread_ok { diag "Test health OK" # Set the socket timeout to 5 so the health check delta is set to 25. export LTTNG_NETWORK_SOCKET_TIMEOUT=5 export LTTNG_RELAYD_HEALTH="${HEALTH_PATH}/test-health" diag "Only session daemon" start_lttng_sessiond # Check health status $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} report_errors diag "With UST consumer daemons" create_lttng_session_no_output $SESSION_NAME enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME start_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME # Check health status $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} report_errors skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" || { diag "With kernel consumer daemon" create_lttng_session_no_output $SESSION_NAME lttng_enable_kernel_event $SESSION_NAME $KERNEL_EVENT_NAME $CHANNEL_NAME start_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME # Check health status $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} report_errors } diag "With relay daemon" start_lttng_relayd "-o $TRACE_PATH" # Check health status $CURDIR/$HEALTH_CHECK_BIN \ --relayd-path="${LTTNG_RELAYD_HEALTH}" \ > ${STDOUT_PATH} 2> ${STDERR_PATH} report_errors # Wait diag "Check after running for ${SLEEP_TIME} seconds" sleep ${SLEEP_TIME} # Check health status $CURDIR/$HEALTH_CHECK_BIN \ --relayd-path="${LTTNG_RELAYD_HEALTH}" \ > ${STDOUT_PATH} 2> ${STDERR_PATH} report_errors stop_lttng_relayd stop_lttng_sessiond unset LTTNG_NETWORK_SOCKET_TIMEOUT unset LTTNG_RELAYD_HEALTH } plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" STDOUT_PATH=$(mktemp) STDERR_PATH=$(mktemp) TRACE_PATH=$(mktemp -d) HEALTH_PATH=$(mktemp -d) # The manage kernel thread is only spawned if we are root if [ "$(id -u)" == "0" ]; then isroot=1 else isroot=0 fi test_thread_ok rm -rf ${HEALTH_PATH} rm -rf ${TRACE_PATH} rm -f ${STDOUT_PATH} rm -f ${STDERR_PATH}