Remove lttng_event_rule_tracepoint
[lttng-tools.git] / tests / regression / ust / python-logging / test_python_logging.in
index 40c29181cbfc082866f2e377140de4dac3322b35..be0422cf037884533e8716ee3a065aac3f5b0da8 100755 (executable)
@@ -1,20 +1,9 @@
 #!/bin/bash
 #
-# Copyright (C) 2015 Philippe Proulx <pproulx@efficios.com>
-# Copyright (C) 2014 David Goulet <dgoulet@efficios.com>
+# Copyright (C) 2015 Philippe Proulx <pproulx@efficios.com>
+# Copyright (C) 2014 David Goulet <dgoulet@efficios.com>
 #
-# 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="@abs_top_srcdir@/tests/regression/ust/python-logging"
+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"
@@ -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,34 @@ 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)
+         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 +729,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 +745,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 +753,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
This page took 0.027472 seconds and 4 git commands to generate.