[lttng-dev] [PATCH lttng-tools 3/3] Fix: Python agent tests were always skipped

Jérémie Galarneau jeremie.galarneau at efficios.com
Wed Aug 12 19:11:21 EDT 2015


On Thu, Aug 6, 2015 at 7:00 PM, Jonathan Rajotte <
jonathan.rajotte-julien at efficios.com> wrote:

> Introduce --enable-test-python{2,3}-agent and
> --enable-test-python-agent-all
> flag on configure.
>
> Tests are enabled by default via best effort. Configure looks if it can
> find
> python agent for python 2&3 and enable/skip tests.
>
> When used --enable-test-python{2,3}-agent & --enable-test-python-agent-all
> flags
> force strict checks on tests dependancies and fails at configure instead of
> simply disabling tests.
>
> --disable* flags can be used to force tests skipping.
>
> Also minor bug in agent test on enabling event with filtering.
>
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
>  .gitignore                                         |   1 +
>  configure.ac                                       | 121 +++-
>  .../ust/python-logging/test_python_logging         | 603
> --------------------
>  .../ust/python-logging/test_python_logging.in      | 610
> +++++++++++++++++++++
>  4 files changed, 731 insertions(+), 604 deletions(-)
>  delete mode 100755 tests/regression/ust/python-logging/test_python_logging
>  create mode 100755 tests/regression/ust/python-logging/
> test_python_logging.in
>
> diff --git a/.gitignore b/.gitignore
> index 5d24bec..0ce35f9 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -85,6 +85,7 @@ health_check
>  /tests/regression/ust/fork/fork
>  /tests/regression/ust/fork/fork2
>  /tests/regression/ust/libc-wrapper/prog
> +tests/regression/ust/python-logging/test_python_logging
>  /tests/utils/testapp/gen-ust-nevents/gen-ust-nevents
>  /tests/utils/testapp/gen-ust-tracef/gen-ust-tracef
>  /tests/regression/tools/live/live_test
> diff --git a/configure.ac b/configure.ac
> index 324b596..386d557 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -359,7 +359,6 @@ if test "x${enable_python_binding:-yes}" = xyes; then
>  else
>      AC_MSG_NOTICE([You may configure with --enable-python-bindings ]dnl
>  [if you want Python bindings.])
> -
>  fi
>
>  # Epoll check. If not present, the build will fallback on poll() API
> @@ -414,6 +413,104 @@ if test "x$test_java_agent_jul" = "xyes" || test
> "x$test_java_agent_log4j" = "xy
>         fi
>  fi
>
> +# Python agent test
> +UST_PYTHON_AGENT="lttngust"
> +
> +AC_ARG_ENABLE(test-python2-agent,
> +       AS_HELP_STRING([--enable-test-python2-agent],
> +               [enable tests for python2 agent. Python2 interpreter path
> can be overrided by env. variable PYTHON2. Default: Best effort]
> +       ),[:],[test_python2_agent_best_effort=yes]
> +)
> +
> +AC_ARG_ENABLE(test-python3-agent,
> +       AS_HELP_STRING([--enable-test-python3-agent],
> +               [enable tests for python3 agent. Python3 interpreter path
> can be overrided by env. variable PYTHON3. Default: Best effort]
> +       ),[:],[test_python3_agent_best_effort=yes]
> +)
> +
> +AC_ARG_ENABLE(test-python-agent-all,
> +       AS_HELP_STRING([--enable-test-python-agent-all],
> +               [enable test for all python{2/3} agent.]
> +       ),
> +)
> +
> +AS_IF([test ! -z "$enable_test_python_agent_all"], [
> +       unset test_python2_agent_best_effort
> +       unset test_python3_agent_best_effort
> +])
> +
> +AS_IF([test "x$enable_test_python_agent_all" = "xyes"], [
> +       enable_test_python2_agent=yes
> +       enable_test_python3_agent=yes
> +])
> +
> +AS_IF([test "x$enable_test_python_agent_all" = "xno"], [
> +       enable_test_python2_agent=no
> +       enable_test_python3_agent=no
> +])
> +
> +
> +AS_IF([test "x$enable_test_python2_agent" = "xyes" -o
> "x$test_python2_agent_best_effort" = "xyes" ], [
> +       AS_IF([test -z "$PYTHON2"], [
> +                       PYTHON2=python2
> +               ], [
> +                       AC_MSG_WARN([Using user-defined PYTHON2 ($PYTHON2)
> for lttng-ust python2 agent check])
> +       ])
> +
> +       AC_PATH_PROG([PYTHON2_BIN],[$PYTHON2])
> +       AS_IF([test -z "$PYTHON2_BIN"], [
> +               AS_IF([test -z "$test_python2_agent_best_effort"],[
> +                       AC_MSG_ERROR([No python2 interpreter found.
> PYTHON2 can be set to override default interpreter path])
> +               ])
> +       ], [
> +               AC_MSG_CHECKING([for python2 lttng-ust agent])
> +               AS_IF([$PYTHON2_BIN -c "import $UST_PYTHON_AGENT"
> 2>/dev/null], [
> +                       PYTHON2_AGENT=$PYTHON2_BIN
> +                       AC_MSG_RESULT([yes])
> +                       RUN_PYTHON_AGENT_TEST=yes
> +               ], [
> +                       AC_MSG_RESULT([no])
> +                       AS_IF([test -z "$test_python2_agent_best_effort"],[
> +                               AC_MSG_ERROR([No python2 agent found.
> PYTHONPATH env. variable can be set with the path to the agent.])
> +                       ])
> +               ])
> +
> +       ])
> +
> +])
> +
> +AS_IF([test "x$enable_test_python3_agent" = "xyes" -o
> "x$test_python3_agent_best_effort" = "xyes" ], [
> +       AS_IF([test -z "$PYTHON3"], [
> +               PYTHON3=python3
> +       ], [
> +               AC_MSG_WARN([Using user-defined PYTHON3 ($PYTHON3) for
> lttng-ust python3 agent check])
> +       ])
> +
> +       AC_PATH_PROG([PYTHON3_BIN],[$PYTHON3])
> +       AS_IF([test -z "$PYTHON3_BIN"], [
> +               AS_IF([test -z "$test_python3_agent_best_effort"],[
> +                       AC_MSG_ERROR([No python3 interpreter found.
> PYTHON3 can be set to override default interpreter path])
> +               ])
> +       ], [
> +               AC_MSG_CHECKING([for python3 lttng-ust agent])
> +               AS_IF([$PYTHON3_BIN -c "import $UST_PYTHON_AGENT"
> 2>/dev/null], [
> +                       PYTHON3_AGENT=$PYTHON3_BIN
> +                       AC_MSG_RESULT([yes])
> +                       RUN_PYTHON_AGENT_TEST=yes
> +               ], [
> +                       AC_MSG_RESULT([no])
> +                       AS_IF([test -z "$test_python3_agent_best_effort"],[
> +                               AC_MSG_ERROR([No python3 agent found.
> PYTHONPATH env. variable can be set with the path to the agent.])
> +                       ])
> +               ])
> +
> +       ])
> +])
> +
> +AC_SUBST([RUN_PYTHON_AGENT_TEST])
> +AC_SUBST([PYTHON2_AGENT])
> +AC_SUBST([PYTHON3_AGENT])
> +
>  AC_SYS_LARGEFILE
>
>  # C compiler tests
> @@ -548,6 +645,9 @@ AC_CONFIG_FILES([
>         tests/utils/testapp/gen-ust-tracef/Makefile
>  ])
>
> +# Inject variable into python test script
> +AC_CONFIG_FILES([tests/regression/ust/python-logging/test_python_logging],[chmod
> +x tests/regression/ust/python-logging/test_python_logging])
> +
>  AC_OUTPUT
>
>  #
> @@ -621,6 +721,25 @@ AS_IF([test "x$consumerd_only" = "xyes"],[
>         AS_ECHO("All binaries will be built.")
>  ])
>
> +
> +# Info on optionnal test suites.
> +AS_ECHO()
> +AS_ECHO("Additional test suites to be run on make check":)
>

Looks good to me except this part. Can you modify this to report whether or
not the tests will run like we do for JUL and Log4j?

LTTng-UST Java agent JUL tests: Disabled
LTTng-UST Java agent Log4j tests: Disabled
etc.

Regards,
Jérémie


> +
> +AS_ECHO_N("Python2 agent: ")
> +AS_IF([test ! -z "$PYTHON2_AGENT"],[
> +       AS_ECHO("yes")
> +],[
> +       AS_ECHO("no")
> +])
> +
> +AS_ECHO_N("Python3 agent: ")
> +AS_IF([test ! -z "$PYTHON3_AGENT"],[
> +       AS_ECHO("yes")
> +],[
> +       AS_ECHO("no")
> +])
> +
>  # Print the bindir and libdir this `make install' will install into.
>  AS_ECHO()
>  AS_ECHO_N("Binaries will be installed in:  ")
> diff --git a/tests/regression/ust/python-logging/test_python_logging
> b/tests/regression/ust/python-logging/test_python_logging
> deleted file mode 100755
> index b4fb410..0000000
> --- a/tests/regression/ust/python-logging/test_python_logging
> +++ /dev/null
> @@ -1,603 +0,0 @@
> -#!/bin/bash
> -#
> -# Copyright (C) - 2015 Philippe Proulx <pproulx at efficios.com>
> -# Copyright (C) - 2014 David Goulet <dgoulet at 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.
> -
> -TEST_DESC="Python support"
> -
> -CURDIR=$(dirname $0)/
> -TESTDIR=$CURDIR/../../..
> -NR_ITER=5
> -NR_SEC_WAIT=1
> -TESTAPP_NAME="test"
> -TESTAPP_BIN="$TESTAPP_NAME.py"
> -TESTAPP_PATH="$CURDIR"
> -SESSION_NAME="python-test"
> -EVENT_NAME="python-ev-test1"
> -EVENT_NAME2="python-ev-test2"
> -OUTPUT_DEST="/dev/null"
> -
> -NUM_TESTS=310
> -
> -source $TESTDIR/utils/utils.sh
> -
> -function run_app
> -{
> -       local python=$1
> -       local debug_tp=$2
> -       local fire_second_tp=$3
> -
> -       $python $TESTAPP_PATH/$TESTAPP_BIN $NR_ITER $NR_SEC_WAIT $debug_tp
> $fire_second_tp
> -}
> -
> -function run_app_background
> -{
> -       run_app $@ &
> -}
> -
> -function enable_python_loglevel_only()
> -{
> -       sess_name=$1
> -       event_name="$2"
> -       loglevel=$3
> -       channel_name=$4
> -
> -       if [ -z $channel_name ]; then
> -               # default channel if none specified
> -               chan=""
> -       else
> -               chan="-c $channel_name"
> -       fi
> -
> -       $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel-only
> $loglevel "$event_name" $chan -s $sess_name -p >$OUTPUT_DEST
> -       ok $? "Enable Python event $event_name for session $sess_name with
> loglevel-only $loglevel"
> -}
> -
> -function enable_python_filter()
> -{
> -       local sess_name="$1"
> -       local event_name="$2"
> -       local filter="$3"
> -
> -       $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s
> $sess_name -p --filter "$filter" >/dev/null 2>&1
> -       ok $? "Enable event $event_name with filter $filter for session
> $sess_name"
> -}
> -
> -function enable_python_filter_loglevel_only()
> -{
> -       local sess_name="$1"
> -       local event_name="$2"
> -       local filter="$3"
> -       local loglevel="$4"
> -
> -       $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel-only
> $loglevel "$event_name" -s $sess_name -p --filter "$filter" >$OUTPUT_DEST
> -       ok $? "Enable event $event_name with filter \"$filter\" and
> loglevel-only $loglevel for session $sess_name"
> -}
> -
> -# MUST set TESTDIR before calling those functions
> -
> -function test_python_before_start ()
> -{
> -       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
> -
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Wait for the applications started in background
> -       wait
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting all events.
> -       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_after_start ()
> -{
> -       diag "Test Python application AFTER tracing starts"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> -       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay
> -       run_app $1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting all events.
> -       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_loglevel ()
> -{
> -       diag "Test Python application with loglevel"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> -       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "INFO"
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay
> -       run_app $1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting all events.
> -       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -
> -       diag "Test Python applications with lower loglevel"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> -       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME
> "CRITICAL"
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay
> -       run_app $1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting 0 events.
> -       trace_match_only $EVENT_NAME 0 $TRACE_PATH
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -
> -       diag "Test Python applications with higher loglevel"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> -       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME
> "DEBUG"
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay
> -       run_app $1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting all events.
> -       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
> -       return $?
> -}
> -
> -function test_python_loglevel_multiple ()
> -{
> -       diag "Test Python application with multiple loglevel"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> -       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "INFO"
> -       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME
> "DEBUG"
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay and fire two TP.
> -       run_app $1 1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting all events times two.
> -       trace_match_only $EVENT_NAME $(($NR_ITER * 2)) $TRACE_PATH
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> -       enable_python_lttng_event_loglevel $SESSION_NAME '*' "INFO"
> -       enable_python_lttng_event_loglevel $SESSION_NAME '*' "DEBUG"
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay and fire two TP.
> -       run_app $1 1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting all events times two.
> -       trace_match_only $EVENT_NAME $(($NR_ITER * 2)) $TRACE_PATH
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_multi_session_loglevel()
> -{
> -       diag "Test Python with multiple session"
> -
> -       create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
> -       enable_python_loglevel_only $SESSION_NAME-1 '*' "INFO"
> -       start_lttng_tracing_ok $SESSION_NAME-1
> -
> -       create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
> -       enable_python_loglevel_only $SESSION_NAME-2 '*' "DEBUG"
> -       start_lttng_tracing_ok $SESSION_NAME-2
> -
> -       # Run 5 times with a 1 second delay and fire second TP.
> -       run_app $1 1 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
> -
> -       # Expecting NR_ITER events being the main event and the second tp
> one.
> -       trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-1
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -       trace_matches $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-1
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -
> -       # Expectin NR_ITER events being the debug 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()
> -{
> -       diag "Test Python with multiple session with disabled event"
> -
> -       create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
> -       enable_python_lttng_event $SESSION_NAME-1 $EVENT_NAME
> -       enable_python_lttng_event $SESSION_NAME-1 $EVENT_NAME2
> -       disable_python_lttng_event $SESSION_NAME-1 $EVENT_NAME
> -       start_lttng_tracing_ok $SESSION_NAME-1
> -
> -       create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
> -       enable_python_lttng_event $SESSION_NAME-2 $EVENT_NAME2
> -       start_lttng_tracing_ok $SESSION_NAME-2
> -
> -       # Run 5 times with a 1 second delay and fire second TP.
> -       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 one event of the second TP.
> -       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-1
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -
> -       # Validate test. Expecting one event of the second TP.
> -       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_multi_session_disable_wildcard()
> -{
> -       diag "Test Python with multiple session with disabled wildcard
> event"
> -
> -       create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
> -       enable_python_lttng_event $SESSION_NAME-1 '*'
> -
> -       create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
> -       enable_python_lttng_event $SESSION_NAME-2 '*'
> -
> -       disable_python_lttng_event $SESSION_NAME-1 '*'
> -
> -       start_lttng_tracing_ok $SESSION_NAME-1
> -       start_lttng_tracing_ok $SESSION_NAME-2
> -
> -       run_app $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_disable_all()
> -{
> -       diag "Test Python with multiple session with disabled all event"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> -       enable_python_lttng_event $SESSION_NAME '*'
> -       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> -       enable_python_lttng_event $SESSION_NAME $EVENT_NAME2
> -
> -       disable_python_lttng_event $SESSION_NAME '*'
> -
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       run_app $1 0 1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting NO event of the first TP and second TP.
> -       trace_match_only $EVENT_NAME 0 $TRACE_PATH/$SESSION_NAME
> -       trace_match_only $EVENT_NAME2 0 $TRACE_PATH/$SESSION_NAME
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_multi_session()
> -{
> -       diag "Test Python with multiple session"
> -
> -       create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
> -       enable_python_lttng_event $SESSION_NAME-1 $EVENT_NAME
> -       start_lttng_tracing_ok $SESSION_NAME-1
> -
> -       create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
> -       enable_python_lttng_event $SESSION_NAME-2 $EVENT_NAME2
> -       start_lttng_tracing_ok $SESSION_NAME-2
> -
> -       # Run 5 times with a 1 second delay and fire second TP.
> -       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 all events of first TP
> -       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-1
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -
> -       # Validate test. Expecting one event of the second TP.
> -       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_destroy_session()
> -{
> -       diag "Test Python two session with destroy"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/first-sess
> -       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> -       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
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting at least one event num 1
> -       validate_trace $EVENT_NAME $TRACE_PATH/first-sess
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/second-sess
> -       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
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting only one event num 2
> -       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/second-sess
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_filtering()
> -{
> -       diag "Test Python filtering"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> -       # Enable all event with a filter.
> -       enable_python_filter $SESSION_NAME '*' 'msg == "python-ev-test2
> fired [INFO]"'
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay and fire second TP.
> -       run_app $1 0 1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting one event of the second TP only.
> -       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> -       # Enable first Logger but filter msg payload for the INFO one while
> -       # triggering the debug and second TP.
> -       enable_python_filter $SESSION_NAME $EVENT_NAME 'msg ==
> "python-ev-test1 fired" [INFO]'
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay, fire debug and second TP.
> -       run_app $1 1 1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting NR_ITER event of the main INFO tp.
> -       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_disable()
> -{
> -       diag "Test Python disable event"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> -       # Enable all event with a filter.
> -       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> -       enable_python_lttng_event $SESSION_NAME $EVENT_NAME2
> -       disable_python_lttng_event $SESSION_NAME $EVENT_NAME
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay and fire second TP.
> -       run_app $1 0 1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting one event of the second TP only.
> -       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_disable_enable()
> -{
> -       diag "Test Python disable event followed by an enable"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> -       # Enable all event with a filter.
> -       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> -       disable_python_lttng_event $SESSION_NAME $EVENT_NAME
> -       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay and fire second TP.
> -       run_app $1 0 1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting NR_ITER event of the main INFO tp.
> -       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -function test_python_filter_loglevel()
> -{
> -       local BOGUS_EVENT_NAME="not_a_real_event"
> -       local FILTER="int_loglevel > 30 || int_loglevel < 30"
> -       local ALL_EVENTS="."
> -
> -       diag "Test Python a filter with a loglevel"
> -
> -       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> -       # Enable an event with a filter and the loglevel-only option.
> -       enable_python_filter_loglevel_only $SESSION_NAME $BOGUS_EVENT_NAME
> "$FILTER" "INFO"
> -       disable_python_lttng_event $SESSION_NAME $BOGUS_EVENT_NAME
> -       enable_python_filter_loglevel_only $SESSION_NAME $BOGUS_EVENT_NAME
> "$FILTER" "INFO"
> -       start_lttng_tracing_ok $SESSION_NAME
> -
> -       # Run 5 times with a 1 second delay and fire second TP.
> -       run_app $1 0 1
> -
> -       stop_lttng_tracing_ok $SESSION_NAME
> -       destroy_lttng_session_ok $SESSION_NAME
> -
> -       # Validate test. Expecting no events.
> -       trace_match_only $ALL_EVENTS 0 $TRACE_PATH/$SESSION_NAME
> -       if [ $? -ne 0 ]; then
> -               return $?
> -       fi
> -}
> -
> -plan_tests $NUM_TESTS
> -
> -print_test_banner "$TEST_DESC"
> -
> -if [ ! -f "$TESTAPP_BIN" ]; then
> -       withapp=0
> -else
> -       withapp=1
> -fi
> -
> -skip $withapp "Python support is needed. Skipping all tests." $NUM_TESTS
> ||
> -{
> -       start_lttng_sessiond
> -
> -       tests=(
> -               test_python_multi_session_disable_wildcard
> -               test_python_multi_session_disable
> -               test_python_disable
> -               test_python_disable_enable
> -               test_python_disable_all
> -               test_python_filtering
> -               test_python_multi_session_loglevel
> -               test_python_destroy_session
> -               test_python_loglevel
> -               test_python_loglevel_multiple
> -               test_python_before_start
> -               test_python_after_start
> -               test_python_multi_session
> -               test_python_filter_loglevel
> -       )
> -
> -       for python_version in 2 3;
> -       do
> -               for fct_test in ${tests[@]};
> -               do
> -                       TRACE_PATH=$(mktemp -d)
> -
> -                       diag "(Python $python_version)"
> -                       ${fct_test} python$python_version
> -                       if [ $? -ne 0 ]; then
> -                               break;
> -                       fi
> -                       rm -rf $TRACE_PATH
> -               done
> -       done
> -
> -       stop_lttng_sessiond
> -}
> diff --git a/tests/regression/ust/python-logging/test_python_logging.in
> b/tests/regression/ust/python-logging/test_python_logging.in
> new file mode 100755
> index 0000000..8aff408
> --- /dev/null
> +++ b/tests/regression/ust/python-logging/test_python_logging.in
> @@ -0,0 +1,610 @@
> +#!/bin/bash
> +#
> +# Copyright (C) - 2015 Philippe Proulx <pproulx at efficios.com>
> +# Copyright (C) - 2014 David Goulet <dgoulet at 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.
> +
> +TEST_DESC="Python support"
> +
> +CURDIR=$(dirname $0)/
> +TESTDIR=$CURDIR/../../..
> +NR_ITER=5
> +NR_SEC_WAIT=0
> +TESTAPP_NAME="test"
> +TESTAPP_BIN="$TESTAPP_NAME.py"
> +TESTAPP_PATH="$CURDIR"
> +SESSION_NAME="python-test"
> +EVENT_NAME="python-ev-test1"
> +EVENT_NAME2="python-ev-test2"
> +OUTPUT_DEST="/dev/null"
> +
> +python_versions=(@PYTHON2_AGENT@ @PYTHON3_AGENT@)
> +run_test=@RUN_PYTHON_AGENT_TEST@
> +
> +if [[ -z "$run_test" ]]; then
> +       NUM_TESTS=1
> +else
> +       NUM_TESTS=$(((154 * ${#python_versions[@]})+2))
> +fi
> +
> +source $TESTDIR/utils/utils.sh
> +
> +function run_app
> +{
> +       local python=$1
> +       local debug_tp=$2
> +       local fire_second_tp=$3
> +
> +       $python $TESTAPP_PATH/$TESTAPP_BIN $NR_ITER $NR_SEC_WAIT $debug_tp
> $fire_second_tp
> +}
> +
> +function run_app_background
> +{
> +       run_app $@ &
> +}
> +
> +function enable_python_loglevel_only()
> +{
> +       sess_name=$1
> +       event_name="$2"
> +       loglevel=$3
> +       channel_name=$4
> +
> +       if [ -z $channel_name ]; then
> +               # default channel if none specified
> +               chan=""
> +       else
> +               chan="-c $channel_name"
> +       fi
> +
> +       $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel-only
> $loglevel "$event_name" $chan -s $sess_name -p >$OUTPUT_DEST
> +       ok $? "Enable Python event $event_name for session $sess_name with
> loglevel-only $loglevel"
> +}
> +
> +function enable_python_filter()
> +{
> +       local sess_name="$1"
> +       local event_name="$2"
> +       local filter="$3"
> +
> +       $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s
> $sess_name -p --filter "$filter" >$OUTPUT_DEST
> +       ok $? "Enable event $event_name with filter $filter for session
> $sess_name"
> +}
> +
> +function enable_python_filter_loglevel_only()
> +{
> +       local sess_name="$1"
> +       local event_name="$2"
> +       local filter="$3"
> +       local loglevel="$4"
> +
> +       $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel-only
> $loglevel "$event_name" -s $sess_name -p --filter "$filter" >$OUTPUT_DEST
> +       ok $? "Enable event $event_name with filter \"$filter\" and
> loglevel-only $loglevel for session $sess_name"
> +}
> +
> +# MUST set TESTDIR before calling those functions
> +
> +function test_python_before_start ()
> +{
> +       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
> +
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Wait for the applications started in background
> +       wait
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting all events.
> +       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_after_start ()
> +{
> +       diag "Test Python application AFTER tracing starts"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> +       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay
> +       run_app $1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting all events.
> +       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_loglevel ()
> +{
> +       diag "Test Python application with loglevel"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> +       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "INFO"
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay
> +       run_app $1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting all events.
> +       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +
> +       diag "Test Python applications with lower loglevel"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> +       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME
> "CRITICAL"
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay
> +       run_app $1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting 0 events.
> +       trace_match_only $EVENT_NAME 0 $TRACE_PATH
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +
> +       diag "Test Python applications with higher loglevel"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> +       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME
> "DEBUG"
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay
> +       run_app $1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting all events.
> +       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH
> +       return $?
> +}
> +
> +function test_python_loglevel_multiple ()
> +{
> +       diag "Test Python application with multiple loglevel"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> +       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "INFO"
> +       enable_python_lttng_event_loglevel $SESSION_NAME $EVENT_NAME
> "DEBUG"
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay and fire two TP.
> +       run_app $1 1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting all events times two.
> +       trace_match_only $EVENT_NAME $(($NR_ITER * 2)) $TRACE_PATH
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
> +       enable_python_lttng_event_loglevel $SESSION_NAME '*' "INFO"
> +       enable_python_lttng_event_loglevel $SESSION_NAME '*' "DEBUG"
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay and fire two TP.
> +       run_app $1 1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting all events times two.
> +       trace_match_only $EVENT_NAME $(($NR_ITER * 2)) $TRACE_PATH
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_multi_session_loglevel()
> +{
> +       diag "Test Python with multiple session"
> +
> +       create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
> +       enable_python_loglevel_only $SESSION_NAME-1 '*' "INFO"
> +       start_lttng_tracing_ok $SESSION_NAME-1
> +
> +       create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
> +       enable_python_loglevel_only $SESSION_NAME-2 '*' "DEBUG"
> +       start_lttng_tracing_ok $SESSION_NAME-2
> +
> +       # Run 5 times with a 1 second delay and fire second TP.
> +       run_app $1 1 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
> +
> +       # Expecting NR_ITER events being the main event and the second tp
> one.
> +       trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-1
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +       trace_matches $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-1
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +
> +       # Expectin NR_ITER events being the debug 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()
> +{
> +       diag "Test Python with multiple session with disabled event"
> +
> +       create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
> +       enable_python_lttng_event $SESSION_NAME-1 $EVENT_NAME
> +       enable_python_lttng_event $SESSION_NAME-1 $EVENT_NAME2
> +       disable_python_lttng_event $SESSION_NAME-1 $EVENT_NAME
> +       start_lttng_tracing_ok $SESSION_NAME-1
> +
> +       create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
> +       enable_python_lttng_event $SESSION_NAME-2 $EVENT_NAME2
> +       start_lttng_tracing_ok $SESSION_NAME-2
> +
> +       # Run 5 times with a 1 second delay and fire second TP.
> +       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 one event of the second TP.
> +       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-1
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +
> +       # Validate test. Expecting one event of the second TP.
> +       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_multi_session_disable_wildcard()
> +{
> +       diag "Test Python with multiple session with disabled wildcard
> event"
> +
> +       create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
> +       enable_python_lttng_event $SESSION_NAME-1 '*'
> +
> +       create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
> +       enable_python_lttng_event $SESSION_NAME-2 '*'
> +
> +       disable_python_lttng_event $SESSION_NAME-1 '*'
> +
> +       start_lttng_tracing_ok $SESSION_NAME-1
> +       start_lttng_tracing_ok $SESSION_NAME-2
> +
> +       run_app $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_disable_all()
> +{
> +       diag "Test Python with multiple session with disabled all event"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> +       enable_python_lttng_event $SESSION_NAME '*'
> +       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> +       enable_python_lttng_event $SESSION_NAME $EVENT_NAME2
> +
> +       disable_python_lttng_event $SESSION_NAME '*'
> +
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       run_app $1 0 1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting NO event of the first TP and second TP.
> +       trace_match_only $EVENT_NAME 0 $TRACE_PATH/$SESSION_NAME
> +       trace_match_only $EVENT_NAME2 0 $TRACE_PATH/$SESSION_NAME
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_multi_session()
> +{
> +       diag "Test Python with multiple session"
> +
> +       create_lttng_session_ok $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
> +       enable_python_lttng_event $SESSION_NAME-1 $EVENT_NAME
> +       start_lttng_tracing_ok $SESSION_NAME-1
> +
> +       create_lttng_session_ok $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
> +       enable_python_lttng_event $SESSION_NAME-2 $EVENT_NAME2
> +       start_lttng_tracing_ok $SESSION_NAME-2
> +
> +       # Run 5 times with a 1 second delay and fire second TP.
> +       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 all events of first TP
> +       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-1
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +
> +       # Validate test. Expecting one event of the second TP.
> +       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_destroy_session()
> +{
> +       diag "Test Python two session with destroy"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/first-sess
> +       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> +       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
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting at least one event num 1
> +       validate_trace $EVENT_NAME $TRACE_PATH/first-sess
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/second-sess
> +       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
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting only one event num 2
> +       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/second-sess
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_filtering()
> +{
> +       diag "Test Python filtering"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> +       # Enable all event with a filter.
> +       enable_python_filter $SESSION_NAME '*' 'msg == "python-ev-test2
> fired [INFO]"'
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay and fire second TP.
> +       run_app $1 0 1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting one event of the second TP only.
> +       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> +       # Enable first Logger but filter msg payload for the INFO one while
> +       # triggering the debug and second TP.
> +       enable_python_filter $SESSION_NAME $EVENT_NAME 'msg ==
> "python-ev-test1 fired [INFO]"'
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay, fire debug and second TP.
> +       run_app $1 1 1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting NR_ITER event of the main INFO tp.
> +       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_disable()
> +{
> +       diag "Test Python disable event"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> +       # Enable all event with a filter.
> +       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> +       enable_python_lttng_event $SESSION_NAME $EVENT_NAME2
> +       disable_python_lttng_event $SESSION_NAME $EVENT_NAME
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay and fire second TP.
> +       run_app $1 0 1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting one event of the second TP only.
> +       trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_disable_enable()
> +{
> +       diag "Test Python disable event followed by an enable"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> +       # Enable all event with a filter.
> +       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> +       disable_python_lttng_event $SESSION_NAME $EVENT_NAME
> +       enable_python_lttng_event $SESSION_NAME $EVENT_NAME
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay and fire second TP.
> +       run_app $1 0 1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting NR_ITER event of the main INFO tp.
> +       trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +function test_python_filter_loglevel()
> +{
> +       local BOGUS_EVENT_NAME="not_a_real_event"
> +       local FILTER="int_loglevel > 30 || int_loglevel < 30"
> +       local ALL_EVENTS="."
> +
> +       diag "Test Python a filter with a loglevel"
> +
> +       create_lttng_session_ok $SESSION_NAME $TRACE_PATH/$SESSION_NAME
> +       # Enable an event with a filter and the loglevel-only option.
> +       enable_python_filter_loglevel_only $SESSION_NAME $BOGUS_EVENT_NAME
> "$FILTER" "INFO"
> +       disable_python_lttng_event $SESSION_NAME $BOGUS_EVENT_NAME
> +       enable_python_filter_loglevel_only $SESSION_NAME $BOGUS_EVENT_NAME
> "$FILTER" "INFO"
> +       start_lttng_tracing_ok $SESSION_NAME
> +
> +       # Run 5 times with a 1 second delay and fire second TP.
> +       run_app $1 0 1
> +
> +       stop_lttng_tracing_ok $SESSION_NAME
> +       destroy_lttng_session_ok $SESSION_NAME
> +
> +       # Validate test. Expecting no events.
> +       trace_match_only $ALL_EVENTS 0 $TRACE_PATH/$SESSION_NAME
> +       if [ $? -ne 0 ]; then
> +               return $?
> +       fi
> +}
> +
> +plan_tests $NUM_TESTS
> +
> +print_test_banner "$TEST_DESC"
> +
> +if [[ ${#python_versions[@]} -eq 0 ||  "x$run_test" != "xyes" ]]; then
> +       skip_agent=0
> +else
> +       skip_agent=1
> +fi
> +
> +skip $skip_agent "Python agent test skipped." $NUM_TESTS ||
> +{
> +       start_lttng_sessiond
> +
> +       tests=(
> +               test_python_multi_session_disable_wildcard
> +               test_python_multi_session_disable
> +               test_python_disable
> +               test_python_disable_enable
> +               test_python_disable_all
> +               test_python_filtering
> +               test_python_multi_session_loglevel
> +               test_python_destroy_session
> +               test_python_loglevel
> +               test_python_loglevel_multiple
> +               test_python_before_start
> +               test_python_after_start
> +               test_python_multi_session
> +               test_python_filter_loglevel
> +       )
> +
> +
> +       for python_version in ${python_versions[*]};
> +       do
> +               for fct_test in ${tests[@]};
> +               do
> +                       TRACE_PATH=$(mktemp -d)
> +
> +                       diag "(Python $python_version)"
> +                       ${fct_test} $python_version
> +                       if [ $? -ne 0 ]; then
> +                               break;
> +                       fi
> +                       rm -rf $TRACE_PATH
> +               done
> +       done
> +       stop_lttng_sessiond
> +}
> --
> 2.1.4
>
>
>
>


-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20150812/271144f8/attachment-0001.html>


More information about the lttng-dev mailing list