From dd238d2ab83bb7b4b43eb9dcc6dfd98718bf717e Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Tue, 31 Mar 2015 20:10:07 -0400 Subject: [PATCH] Tests: Python agent: update after Python agent refactoring MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch makes the tests follow the recent refactoring of the LTTng-UST Python agent. You need both python2 and python3 in your $PATH to run this test now (since the agent is compatible with both versions of Python). Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- .../ust/python-logging/LTTngTest.py | 76 ------------------- tests/regression/ust/python-logging/test.py | 71 +++++++++++++++++ .../ust/python-logging/test_python_logging | 76 ++++++++++--------- 3 files changed, 112 insertions(+), 111 deletions(-) delete mode 100644 tests/regression/ust/python-logging/LTTngTest.py create mode 100644 tests/regression/ust/python-logging/test.py diff --git a/tests/regression/ust/python-logging/LTTngTest.py b/tests/regression/ust/python-logging/LTTngTest.py deleted file mode 100644 index a3ed8f99e..000000000 --- a/tests/regression/ust/python-logging/LTTngTest.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (C) 2014 - David Goulet -# -# This library is free software; you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License as published by the Free -# Software Foundation; version 2.1 of the License. -# -# This library 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 Lesser General Public License for more -# details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this library; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -import sys -import logging -import errno - -from time import sleep - -def cleanup(code, agent = None): - """ - Cleanup agent and exit with given code. - """ - if agent is not None: - agent.destroy() - - sys.exit(code) - -try: - import lttng_agent -except ImportError as e: - print("LTTng Agent not found. Aborting") - cleanup(errno.ENOSYS) - -def run(): - """ - Main for this test program. Based on the Java testing program that behaves - exactly the same. - """ - - agent = lttng_agent.LTTngAgent() - ev1 = logging.getLogger("python-ev-test1"); - ev2 = logging.getLogger("python-ev-test2"); - - try: - nr_iter = int(sys.argv[1]) - wait_time = int(sys.argv[2]) - fire_debug_ev = 0 - fire_second_ev = 0 - except IndexError as e: - print("Missing arguments. Aborting") - cleanup(errno.EINVAL, agent) - except ValueError as e: - print("Invalid arguments. Aborting") - cleanup(errno.EINVAL, agent) - - if len(sys.argv) > 3: - fire_debug_ev = int(sys.argv[3]) - if len(sys.argv) > 4: - fire_second_ev = int(sys.argv[4]) - - for i in range(0, nr_iter): - ev1.info("%s fired" % ev1.name) - if fire_debug_ev != 0: - ev1.debug("%s DEBUG fired" % ev1.name) - sleep(wait_time) - - if fire_second_ev != 0: - ev2.info("%s fired" % ev2.name) - -if __name__ == "__main__": - run() diff --git a/tests/regression/ust/python-logging/test.py b/tests/regression/ust/python-logging/test.py new file mode 100644 index 000000000..d08e623c9 --- /dev/null +++ b/tests/regression/ust/python-logging/test.py @@ -0,0 +1,71 @@ +# Copyright (C) 2015 - Philippe Proulx +# Copyright (C) 2014 - David Goulet +# +# This library is free software; you can redistribute it and/or modify it under +# the terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; version 2.1 of the License. +# +# This library 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 Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +from __future__ import unicode_literals, print_function +import logging +import time +import sys + + +def _perror(msg): + print(msg, file=sys.stderr) + sys.exit(1) + + +try: + import lttngust +except (ImportError) as e: + _perror('lttngust package not found: {}'.format(e)) + + +def _main(): + ev1 = logging.getLogger('python-ev-test1'); + ev2 = logging.getLogger('python-ev-test2'); + + logging.basicConfig() + + try: + nr_iter = int(sys.argv[1]) + wait_time = float(sys.argv[2]) + fire_debug_ev = False + fire_second_ev = False + except (IndexError) as e: + _perror('missing arguments: {}'.format(e)) + except (ValueError) as e: + _perror('invalid arguments: {}'.format(e)) + + try: + if len(sys.argv) > 3: + fire_debug_ev = int(sys.argv[3]) + if len(sys.argv) > 4: + fire_second_ev = int(sys.argv[4]) + except (ValueError) as e: + _perror('invalid arguments: {}'.format(e)) + + for i in range(nr_iter): + ev1.info('{} fired [INFO]'.format(ev1.name)) + + if fire_debug_ev: + ev1.debug('{} fired [DEBUG]'.format(ev1.name)) + + time.sleep(wait_time) + + if fire_second_ev: + ev2.info('{} fired [INFO]'.format(ev2.name)) + + +if __name__ == '__main__': + _main() diff --git a/tests/regression/ust/python-logging/test_python_logging b/tests/regression/ust/python-logging/test_python_logging index e88c27f86..b4fb4104e 100755 --- a/tests/regression/ust/python-logging/test_python_logging +++ b/tests/regression/ust/python-logging/test_python_logging @@ -1,5 +1,6 @@ #!/bin/bash # +# Copyright (C) - 2015 Philippe Proulx # Copyright (C) - 2014 David Goulet # # This program is free software; you can redistribute it and/or modify it under @@ -15,13 +16,13 @@ # this program; if not, write to the Free Software Foundation, Inc., 51 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -TEST_DESC="Java Python support" +TEST_DESC="Python support" CURDIR=$(dirname $0)/ TESTDIR=$CURDIR/../../.. NR_ITER=5 NR_SEC_WAIT=1 -TESTAPP_NAME="LTTngTest" +TESTAPP_NAME="test" TESTAPP_BIN="$TESTAPP_NAME.py" TESTAPP_PATH="$CURDIR" SESSION_NAME="python-test" @@ -29,16 +30,17 @@ EVENT_NAME="python-ev-test1" EVENT_NAME2="python-ev-test2" OUTPUT_DEST="/dev/null" -NUM_TESTS=156 +NUM_TESTS=310 source $TESTDIR/utils/utils.sh function run_app { - local debug_tp=$1 - local fire_second_tp=$2 + 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 + $python $TESTAPP_PATH/$TESTAPP_BIN $NR_ITER $NR_SEC_WAIT $debug_tp $fire_second_tp } function run_app_background @@ -94,7 +96,7 @@ function test_python_before_start () enable_python_lttng_event $SESSION_NAME $EVENT_NAME # Run 5 times with a 1 second delay - run_app_background + run_app_background $1 start_lttng_tracing_ok $SESSION_NAME @@ -120,7 +122,7 @@ function test_python_after_start () start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay - run_app + run_app $1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -141,7 +143,7 @@ function test_python_loglevel () start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay - run_app + run_app $1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -159,7 +161,7 @@ function test_python_loglevel () start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay - run_app + run_app $1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -177,7 +179,7 @@ function test_python_loglevel () start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay - run_app + run_app $1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -197,7 +199,7 @@ function test_python_loglevel_multiple () start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay and fire two TP. - run_app 1 + run_app $1 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -214,7 +216,7 @@ function test_python_loglevel_multiple () start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay and fire two TP. - run_app 1 + run_app $1 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -239,7 +241,7 @@ function test_python_multi_session_loglevel() start_lttng_tracing_ok $SESSION_NAME-2 # Run 5 times with a 1 second delay and fire second TP. - run_app 1 1 + run_app $1 1 1 stop_lttng_tracing_ok $SESSION_NAME-1 stop_lttng_tracing_ok $SESSION_NAME-2 @@ -278,7 +280,7 @@ function test_python_multi_session_disable() start_lttng_tracing_ok $SESSION_NAME-2 # Run 5 times with a 1 second delay and fire second TP. - run_app 0 1 + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME-1 stop_lttng_tracing_ok $SESSION_NAME-2 @@ -313,7 +315,7 @@ function test_python_multi_session_disable_wildcard() start_lttng_tracing_ok $SESSION_NAME-1 start_lttng_tracing_ok $SESSION_NAME-2 - run_app + run_app $1 stop_lttng_tracing_ok $SESSION_NAME-1 stop_lttng_tracing_ok $SESSION_NAME-2 @@ -346,7 +348,7 @@ function test_python_disable_all() start_lttng_tracing_ok $SESSION_NAME - run_app 0 1 + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -372,7 +374,7 @@ function test_python_multi_session() start_lttng_tracing_ok $SESSION_NAME-2 # Run 5 times with a 1 second delay and fire second TP. - run_app 0 1 + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME-1 stop_lttng_tracing_ok $SESSION_NAME-2 @@ -401,7 +403,7 @@ function test_python_destroy_session() start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay - run_app_background 0 1 + run_app_background $1 0 1 # Wait for the applications started in background wait @@ -420,7 +422,7 @@ function test_python_destroy_session() start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay - run_app_background 0 1 + run_app_background $1 0 1 # Wait for the applications started in background wait @@ -441,11 +443,11 @@ function 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"' + 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 0 1 + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -459,11 +461,11 @@ function test_python_filtering() 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"' + 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 + run_app $1 1 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -487,7 +489,7 @@ function test_python_disable() start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay and fire second TP. - run_app 0 1 + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -511,7 +513,7 @@ function test_python_disable_enable() start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay and fire second TP. - run_app 0 1 + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -539,7 +541,7 @@ function test_python_filter_loglevel() start_lttng_tracing_ok $SESSION_NAME # Run 5 times with a 1 second delay and fire second TP. - run_app 0 1 + run_app $1 0 1 stop_lttng_tracing_ok $SESSION_NAME destroy_lttng_session_ok $SESSION_NAME @@ -582,15 +584,19 @@ skip $withapp "Python support is needed. Skipping all tests." $NUM_TESTS || test_python_filter_loglevel ) - for fct_test in ${tests[@]}; + for python_version in 2 3; do - TRACE_PATH=$(mktemp -d) - - ${fct_test} - if [ $? -ne 0 ]; then - break; - fi - rm -rf $TRACE_PATH + 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 -- 2.34.1