X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=tests%2Fregression%2Fust%2Fpython-logging%2Ftest_python_logging.in;h=470452260eb49132258425ab7a914e62bbe6f58f;hb=63dd3d7b5b0979c4b11a6bb8d0e4155120482977;hp=8aff4081ed4ab21ea041aea403795a0bec18ee08;hpb=9586c1988d30b9729731a785108cde14990e50dd;p=lttng-tools.git diff --git a/tests/regression/ust/python-logging/test_python_logging.in b/tests/regression/ust/python-logging/test_python_logging.in index 8aff4081e..470452260 100755 --- a/tests/regression/ust/python-logging/test_python_logging.in +++ b/tests/regression/ust/python-logging/test_python_logging.in @@ -1,20 +1,9 @@ #!/bin/bash # -# Copyright (C) - 2015 Philippe Proulx -# Copyright (C) - 2014 David Goulet +# Copyright (C) 2015 Philippe Proulx +# Copyright (C) 2014 David Goulet # -# 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. +# SPDX-License-Identifier: GPL-2.0-only TEST_DESC="Python support" @@ -22,9 +11,9 @@ CURDIR=$(dirname $0)/ TESTDIR=$CURDIR/../../.. NR_ITER=5 NR_SEC_WAIT=0 -TESTAPP_NAME="test" +TESTAPP_NAME="gen-py-events" TESTAPP_BIN="$TESTAPP_NAME.py" -TESTAPP_PATH="$CURDIR" +TESTAPP_PATH="$TESTDIR/utils/testapp/$TESTAPP_NAME/" SESSION_NAME="python-test" EVENT_NAME="python-ev-test1" EVENT_NAME2="python-ev-test2" @@ -36,7 +25,7 @@ run_test=@RUN_PYTHON_AGENT_TEST@ if [[ -z "$run_test" ]]; then NUM_TESTS=1 else - NUM_TESTS=$(((154 * ${#python_versions[@]})+2)) + NUM_TESTS=$(((199 * ${#python_versions[@]})+2)) fi source $TESTDIR/utils/utils.sh @@ -46,13 +35,32 @@ function run_app local python=$1 local debug_tp=$2 local fire_second_tp=$3 + local ready_file=$4 + local go_file=$5 + local opt="" + + if [[ -n "$debug_tp" ]] && [ "$debug_tp" -eq "1" ]; then + opt="${opt} -d" + fi + + if [[ -n "$fire_second_tp" ]] && [ "$fire_second_tp" -eq "1" ]; then + opt="${opt} -e" + fi + + if [[ -n "$ready_file" ]]; then + opt="${opt} -r ${ready_file}" + fi - $python $TESTAPP_PATH/$TESTAPP_BIN $NR_ITER $NR_SEC_WAIT $debug_tp $fire_second_tp + if [[ -n "$go_file" ]]; then + opt="${opt} -g ${go_file}" + fi + + $python $TESTAPP_PATH/$TESTAPP_BIN -n $NR_ITER -s $NR_SEC_WAIT $opt } function run_app_background { - run_app $@ & + run_app "$@" & } function enable_python_loglevel_only() @@ -98,16 +106,25 @@ function enable_python_filter_loglevel_only() function test_python_before_start () { + local ready_file=$(mktemp --tmpdir -u) + local go_file=$(mktemp --tmpdir -u) + diag "Test Python application BEFORE tracing starts" create_lttng_session_ok $SESSION_NAME $TRACE_PATH enable_python_lttng_event $SESSION_NAME $EVENT_NAME # Run 5 times with a 1 second delay - run_app_background $1 + run_app_background $1 "" "" $ready_file $go_file + + # Wait for ready file + while [ ! -e ${ready_file} ]; do + sleep 0.5 + done start_lttng_tracing_ok $SESSION_NAME # Wait for the applications started in background + echo "1" > ${go_file} wait stop_lttng_tracing_ok $SESSION_NAME @@ -118,6 +135,8 @@ function test_python_before_start () if [ $? -ne 0 ]; then return $? fi + + rm $go_file } function test_python_after_start () @@ -342,6 +361,119 @@ function test_python_multi_session_disable_wildcard() fi } +function test_python_multi_session_disable_wildcard_begin() +{ + ev_name='*ev-test1' + diag "Test Python with multiple session with disabled wildcard (at the beginning) event" + + create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1 + enable_python_lttng_event $SESSION_NAME-1 "$ev_name" + + create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2 + enable_python_lttng_event $SESSION_NAME-2 "$ev_name" + + disable_python_lttng_event $SESSION_NAME-1 "$ev_name" + + start_lttng_tracing_ok $SESSION_NAME-1 + start_lttng_tracing_ok $SESSION_NAME-2 + + run_app $1 0 1 + + stop_lttng_tracing_ok $SESSION_NAME-1 + stop_lttng_tracing_ok $SESSION_NAME-2 + destroy_lttng_session_ok $SESSION_NAME-1 + destroy_lttng_session_ok $SESSION_NAME-2 + + # Validate test. Expecting NO event of the first TP. + trace_match_only $EVENT_NAME 0 $TRACE_PATH/$SESSION_NAME-1 + if [ $? -ne 0 ]; then + return $? + fi + + # Validate test. Expecting all events of the first TP. + trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-2 + if [ $? -ne 0 ]; then + return $? + fi +} + +function test_python_multi_session_disable_wildcard_middle() +{ + ev_name='python-*-test1' + diag "Test Python with multiple session with disabled wildcard (at the middle) event" + + create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1 + enable_python_lttng_event $SESSION_NAME-1 "$ev_name" + + create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2 + enable_python_lttng_event $SESSION_NAME-2 "$ev_name" + + disable_python_lttng_event $SESSION_NAME-1 "$ev_name" + + start_lttng_tracing_ok $SESSION_NAME-1 + start_lttng_tracing_ok $SESSION_NAME-2 + + run_app $1 0 1 + + stop_lttng_tracing_ok $SESSION_NAME-1 + stop_lttng_tracing_ok $SESSION_NAME-2 + destroy_lttng_session_ok $SESSION_NAME-1 + destroy_lttng_session_ok $SESSION_NAME-2 + + # Validate test. Expecting NO event of the first TP. + trace_match_only $EVENT_NAME 0 $TRACE_PATH/$SESSION_NAME-1 + if [ $? -ne 0 ]; then + return $? + fi + + # Validate test. Expecting all events of the first TP. + trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-2 + if [ $? -ne 0 ]; then + return $? + fi +} + +function test_python_multi_session_disable_wildcard_end() +{ + ev_name='python-*' + diag "Test Python with multiple session with disabled wildcard (at the end) event" + + create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1 + enable_python_lttng_event $SESSION_NAME-1 "$ev_name" + + create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2 + enable_python_lttng_event $SESSION_NAME-2 "$ev_name" + + disable_python_lttng_event $SESSION_NAME-1 "$ev_name" + + start_lttng_tracing_ok $SESSION_NAME-1 + start_lttng_tracing_ok $SESSION_NAME-2 + + run_app $1 0 1 + + stop_lttng_tracing_ok $SESSION_NAME-1 + stop_lttng_tracing_ok $SESSION_NAME-2 + destroy_lttng_session_ok $SESSION_NAME-1 + destroy_lttng_session_ok $SESSION_NAME-2 + + # Validate test. Expecting NO event of the first TP. + trace_match_only $EVENT_NAME 0 $TRACE_PATH/$SESSION_NAME-1 + if [ $? -ne 0 ]; then + return $? + fi + + # Validate test. Expecting all events of the first TP. + trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-2 + if [ $? -ne 0 ]; then + return $? + fi + + trace_matches $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2 + if [ $? -ne 0 ]; then + return $? + fi +} + function test_python_disable_all() { diag "Test Python with multiple session with disabled all event" @@ -351,7 +483,7 @@ function test_python_disable_all() enable_python_lttng_event $SESSION_NAME $EVENT_NAME enable_python_lttng_event $SESSION_NAME $EVENT_NAME2 - disable_python_lttng_event $SESSION_NAME '*' + disable_python_lttng_event $SESSION_NAME -a start_lttng_tracing_ok $SESSION_NAME @@ -410,10 +542,7 @@ function test_python_destroy_session() start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay - run_app_background $1 0 1 - - # Wait for the applications started in background - wait + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -428,11 +557,7 @@ function test_python_destroy_session() enable_python_lttng_event $SESSION_NAME $EVENT_NAME2 start_lttng_tracing_ok $SESSION_NAME - # Run 5 times with a 1 second delay - run_app_background $1 0 1 - - # Wait for the applications started in background - wait + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -560,6 +685,35 @@ function test_python_filter_loglevel() fi } +function test_python_trigger_notify_action +{ + uid=$(id --user) + tmp_expected_stdout=$(mktemp --tmpdir -t test_list_triggers_python_cli_expected_stdout.XXXXXX) + + diag "Test Python trigger with notify action" + + lttng_add_trigger_ok "my_python_trigger" \ + --condition event-rule-matches --type=python --action notify + + cat > "${tmp_expected_stdout}" <<- EOF + - name: my_python_trigger + owner uid: ${uid} + condition: event rule matches + rule: * (type: python:logging) + errors: none + actions: + notify + errors: none + errors: none + EOF + + list_triggers_matches_ok "Python trigger listing" "${tmp_expected_stdout}" + + lttng_remove_trigger_ok "my_python_trigger" + + rm -f "${tmp_expected_stdout}" +} + plan_tests $NUM_TESTS print_test_banner "$TEST_DESC" @@ -576,6 +730,9 @@ skip $skip_agent "Python agent test skipped." $NUM_TESTS || tests=( test_python_multi_session_disable_wildcard + test_python_multi_session_disable_wildcard_begin + test_python_multi_session_disable_wildcard_middle + test_python_multi_session_disable_wildcard_end test_python_multi_session_disable test_python_disable test_python_disable_enable @@ -589,6 +746,7 @@ skip $skip_agent "Python agent test skipped." $NUM_TESTS || test_python_after_start test_python_multi_session test_python_filter_loglevel + test_python_trigger_notify_action ) @@ -596,7 +754,7 @@ skip $skip_agent "Python agent test skipped." $NUM_TESTS || do for fct_test in ${tests[@]}; do - TRACE_PATH=$(mktemp -d) + TRACE_PATH=$(mktemp --tmpdir -d tmp.test_python_logging_trace_path.XXXXXX) diag "(Python $python_version)" ${fct_test} $python_version