Commit | Line | Data |
---|---|---|
9d16b343 MJ |
1 | # Copyright (C) 2015 Philippe Proulx <pproulx@efficios.com> |
2 | # Copyright (C) 2014 David Goulet <dgoulet@efficios.com> | |
dd238d2a | 3 | # |
9d16b343 | 4 | # SPDX-License-Identifier: LGPL-2.1-only |
dd238d2a PP |
5 | |
6 | from __future__ import unicode_literals, print_function | |
7 | import logging | |
8 | import time | |
9 | import sys | |
74f2abd5 JR |
10 | import argparse |
11 | import os | |
dd238d2a PP |
12 | |
13 | ||
14 | def _perror(msg): | |
15 | print(msg, file=sys.stderr) | |
16 | sys.exit(1) | |
17 | ||
18 | ||
19 | try: | |
20 | import lttngust | |
21 | except (ImportError) as e: | |
22 | _perror('lttngust package not found: {}'.format(e)) | |
23 | ||
24 | ||
25 | def _main(): | |
26 | ev1 = logging.getLogger('python-ev-test1'); | |
27 | ev2 = logging.getLogger('python-ev-test2'); | |
28 | ||
29 | logging.basicConfig() | |
30 | ||
74f2abd5 JR |
31 | parser = argparse.ArgumentParser() |
32 | parser.add_argument('-n', '--nr-iter', required=True) | |
33 | parser.add_argument('-s', '--wait', required=True) | |
34 | parser.add_argument('-d', '--fire-debug-event', action="store_true") | |
35 | parser.add_argument('-e', '--fire-second-event', action="store_true") | |
36 | parser.add_argument('-r', '--ready-file') | |
37 | parser.add_argument('-g', '--go-file') | |
38 | args = parser.parse_args() | |
39 | ||
40 | nr_iter = int(args.nr_iter) | |
41 | wait_time = float(args.wait) | |
42 | fire_debug_ev = args.fire_debug_event | |
43 | fire_second_ev = args.fire_second_event | |
44 | ||
45 | ready_file = args.ready_file | |
46 | go_file = args.go_file | |
47 | ||
48 | if ready_file is not None and os.path.exists(ready_file): | |
49 | raise ValueError('Ready file already exist') | |
50 | ||
51 | if go_file is not None and os.path.exists(go_file): | |
52 | raise ValueError('Go file already exist. Review synchronization') | |
53 | ||
54 | if (ready_file is None) != (go_file is None): | |
55 | raise ValueError('--go-file and --ready-file need each others, review' | |
56 | 'synchronization') | |
57 | ||
58 | ||
59 | # Inform that we are ready, if necessary | |
60 | if ready_file is not None: | |
61 | open(ready_file, 'a').close() | |
62 | ||
63 | # Wait for go, if necessary | |
64 | while go_file is not None and not os.path.exists(go_file): | |
65 | time.sleep(0.5) | |
dd238d2a PP |
66 | |
67 | for i in range(nr_iter): | |
68 | ev1.info('{} fired [INFO]'.format(ev1.name)) | |
69 | ||
70 | if fire_debug_ev: | |
71 | ev1.debug('{} fired [DEBUG]'.format(ev1.name)) | |
72 | ||
73 | time.sleep(wait_time) | |
74 | ||
75 | if fire_second_ev: | |
76 | ev2.info('{} fired [INFO]'.format(ev2.name)) | |
77 | ||
74f2abd5 JR |
78 | if ready_file is not None: |
79 | try: | |
80 | os.unlink(ready_file) | |
81 | except: | |
82 | print("Unexpected error on ready file unlink:", sys.exc_info()[0]) | |
83 | raise | |
84 | ||
dd238d2a PP |
85 | |
86 | if __name__ == '__main__': | |
87 | _main() |