From: Jonathan Rajotte Date: Mon, 28 Aug 2017 21:50:03 +0000 (-0400) Subject: Test: add file based synchronization point for python test app X-Git-Tag: v2.11.0-rc1~433 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=74f2abd52f6f3d2f10df28631969797d091ed7de;p=lttng-tools.git Test: add file based synchronization point for python test app test.py is responsible for the cleanup of the "ready" file while the cleanup of the "go" file is left to the external controller. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau --- diff --git a/tests/regression/ust/python-logging/test.py b/tests/regression/ust/python-logging/test.py index d08e623c9..cd6b724c7 100644 --- a/tests/regression/ust/python-logging/test.py +++ b/tests/regression/ust/python-logging/test.py @@ -18,6 +18,8 @@ from __future__ import unicode_literals, print_function import logging import time import sys +import argparse +import os def _perror(msg): @@ -37,23 +39,41 @@ def _main(): 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)) + parser = argparse.ArgumentParser() + parser.add_argument('-n', '--nr-iter', required=True) + parser.add_argument('-s', '--wait', required=True) + parser.add_argument('-d', '--fire-debug-event', action="store_true") + parser.add_argument('-e', '--fire-second-event', action="store_true") + parser.add_argument('-r', '--ready-file') + parser.add_argument('-g', '--go-file') + args = parser.parse_args() + + nr_iter = int(args.nr_iter) + wait_time = float(args.wait) + fire_debug_ev = args.fire_debug_event + fire_second_ev = args.fire_second_event + + ready_file = args.ready_file + go_file = args.go_file + + if ready_file is not None and os.path.exists(ready_file): + raise ValueError('Ready file already exist') + + if go_file is not None and os.path.exists(go_file): + raise ValueError('Go file already exist. Review synchronization') + + if (ready_file is None) != (go_file is None): + raise ValueError('--go-file and --ready-file need each others, review' + 'synchronization') + + + # Inform that we are ready, if necessary + if ready_file is not None: + open(ready_file, 'a').close() + + # Wait for go, if necessary + while go_file is not None and not os.path.exists(go_file): + time.sleep(0.5) for i in range(nr_iter): ev1.info('{} fired [INFO]'.format(ev1.name)) @@ -66,6 +86,13 @@ def _main(): if fire_second_ev: ev2.info('{} fired [INFO]'.format(ev2.name)) + if ready_file is not None: + try: + os.unlink(ready_file) + except: + print("Unexpected error on ready file unlink:", sys.exc_info()[0]) + raise + if __name__ == '__main__': _main() diff --git a/tests/regression/ust/python-logging/test_python_logging.in b/tests/regression/ust/python-logging/test_python_logging.in index 90abc1163..42c30572a 100755 --- a/tests/regression/ust/python-logging/test_python_logging.in +++ b/tests/regression/ust/python-logging/test_python_logging.in @@ -46,8 +46,17 @@ function run_app local python=$1 local debug_tp=$2 local fire_second_tp=$3 + local opt="" - $python $TESTAPP_PATH/$TESTAPP_BIN $NR_ITER $NR_SEC_WAIT $debug_tp $fire_second_tp + 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 + + $python $TESTAPP_PATH/$TESTAPP_BIN -n $NR_ITER -s $NR_SEC_WAIT $opt } function run_app_background