[lttng-dev] [PATCH lttng-tools] Tests: Python agent: update after Python agent refactoring
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Fri May 15 12:15:55 EDT 2015
Hi Jeremie,
I just merged the UST refactor needed for this tools
patch. Can you look into merging it ?
Thanks!
Mathieu
----- Original Message -----
> 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 <eeppeliteloop at gmail.com>
> ---
> tests/regression/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 a3ed8f9..0000000
> --- a/tests/regression/ust/python-logging/LTTngTest.py
> +++ /dev/null
> @@ -1,76 +0,0 @@
> -#!/usr/bin/env python
> -#
> -# Copyright (C) 2014 - David Goulet <dgoulet at efficios.com>
> -#
> -# 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 0000000..d08e623
> --- /dev/null
> +++ b/tests/regression/ust/python-logging/test.py
> @@ -0,0 +1,71 @@
> +# Copyright (C) 2015 - Philippe Proulx <pproulx at efficios.com>
> +# Copyright (C) 2014 - David Goulet <dgoulet at efficios.com>
> +#
> +# 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 cb960da..4c2a3c6 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 <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
> @@ -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 $SESSION_NAME
>
> @@ -120,7 +122,7 @@ function test_python_after_start ()
> start_lttng_tracing $SESSION_NAME
>
> # Run 5 times with a 1 second delay
> - run_app
> + run_app $1
>
> stop_lttng_tracing $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -141,7 +143,7 @@ function test_python_loglevel ()
> start_lttng_tracing $SESSION_NAME
>
> # Run 5 times with a 1 second delay
> - run_app
> + run_app $1
>
> stop_lttng_tracing $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -159,7 +161,7 @@ function test_python_loglevel ()
> start_lttng_tracing $SESSION_NAME
>
> # Run 5 times with a 1 second delay
> - run_app
> + run_app $1
>
> stop_lttng_tracing $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -177,7 +179,7 @@ function test_python_loglevel ()
> start_lttng_tracing $SESSION_NAME
>
> # Run 5 times with a 1 second delay
> - run_app
> + run_app $1
>
> stop_lttng_tracing $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -197,7 +199,7 @@ function test_python_loglevel_multiple ()
> start_lttng_tracing $SESSION_NAME
>
> # Run 5 times with a 1 second delay and fire two TP.
> - run_app 1
> + run_app $1 1
>
> stop_lttng_tracing $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -214,7 +216,7 @@ function test_python_loglevel_multiple ()
> start_lttng_tracing $SESSION_NAME
>
> # Run 5 times with a 1 second delay and fire two TP.
> - run_app 1
> + run_app $1 1
>
> stop_lttng_tracing $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -239,7 +241,7 @@ function test_python_multi_session_loglevel()
> start_lttng_tracing $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 $SESSION_NAME-1
> stop_lttng_tracing $SESSION_NAME-2
> @@ -278,7 +280,7 @@ function test_python_multi_session_disable()
> start_lttng_tracing $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 $SESSION_NAME-1
> stop_lttng_tracing $SESSION_NAME-2
> @@ -313,7 +315,7 @@ function test_python_multi_session_disable_wildcard()
> start_lttng_tracing $SESSION_NAME-1
> start_lttng_tracing $SESSION_NAME-2
>
> - run_app
> + run_app $1
>
> stop_lttng_tracing $SESSION_NAME-1
> stop_lttng_tracing $SESSION_NAME-2
> @@ -346,7 +348,7 @@ function test_python_disable_all()
>
> start_lttng_tracing $SESSION_NAME
>
> - run_app 0 1
> + run_app $1 0 1
>
> stop_lttng_tracing $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -372,7 +374,7 @@ function test_python_multi_session()
> start_lttng_tracing $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 $SESSION_NAME-1
> stop_lttng_tracing $SESSION_NAME-2
> @@ -401,7 +403,7 @@ function test_python_destroy_session()
> start_lttng_tracing $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 $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 $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 $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 $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -459,11 +461,11 @@ function test_python_filtering()
> create_lttng_session $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 $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 $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -487,7 +489,7 @@ function test_python_disable()
> start_lttng_tracing $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 $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -511,7 +513,7 @@ function test_python_disable_enable()
> start_lttng_tracing $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 $SESSION_NAME
> destroy_lttng_session $SESSION_NAME
> @@ -539,7 +541,7 @@ function test_python_filter_loglevel()
> start_lttng_tracing $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 $SESSION_NAME
> destroy_lttng_session $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.3.0
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list