62eda73a38a7492a93de02e186d3401420fcfbe8
[lttng-tools.git] / tests / regression / ust / type-declarations / test_type_declarations.py
1 #!/usr/bin/env python3
2 #
3 # Copyright (C) 2014 Geneviève Bastien <gbastien@versatic.net>
4 #
5 # SPDX-License-Identifier: GPL-2.0-only
6
7 import os
8 import subprocess
9 import re
10 import shutil
11 import sys
12
13 test_path = os.path.dirname(os.path.abspath(__file__)) + "/"
14 test_utils_path = test_path
15 for i in range(4):
16 test_utils_path = os.path.dirname(test_utils_path)
17 test_utils_path = test_utils_path + "/utils"
18 sys.path.append(test_utils_path)
19 from test_utils import *
20
21 NR_TESTS = 10
22 current_test = 1
23 print("1..{0}".format(NR_TESTS))
24
25 # Check if a sessiond is running... bail out if none found.
26 if session_daemon_alive() == 0:
27 bail("No sessiond running. Please make sure you are running this test with the \"run\" shell script and verify that the lttng tools are properly installed.")
28
29 session_info = create_session()
30 enable_ust_tracepoint_event(session_info, "ust_tests_td*")
31 start_session(session_info)
32
33 test_env = os.environ.copy()
34 test_env["LTTNG_UST_REGISTER_TIMEOUT"] = "-1"
35
36 td_process = subprocess.Popen(test_path + "type-declarations", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, env=test_env)
37 td_process.wait()
38
39 print_test_result(td_process.returncode == 0, current_test, "Test application exited normally")
40 current_test += 1
41
42 stop_session(session_info)
43
44 # Check event fields using type declarations are present
45 try:
46 babeltrace_process = subprocess.Popen(["babeltrace", session_info.trace_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
47 except FileNotFoundError:
48 bail("Could not open babeltrace. Please make sure it is installed.")
49
50 event_lines = []
51 for event_line in babeltrace_process.stdout:
52 event_line = event_line.decode('utf-8').replace("\n", "")
53 event_lines.append(event_line)
54 babeltrace_process.wait()
55
56 print_test_result(babeltrace_process.returncode == 0, current_test, "Resulting trace is readable")
57 current_test += 1
58
59 if babeltrace_process.returncode != 0:
60 bail("Unreadable trace; can't proceed with analysis.")
61
62 print_test_result(len(event_lines) == 5, current_test, "Correct number of events found in resulting trace")
63 current_test += 1
64
65 if len(event_lines) != 5:
66 bail("Unexpected number of events found in resulting trace (" + session_info.trace_path + ")." )
67
68 match = re.search(r".*ust_tests_td:(.*):.*enumfield = \( \"(.*)\" :.*enumfield_bis = \( \"(.*)\" :.*enumfield_third = .*:.*", event_lines[0])
69 print_test_result(match is not None and match.group(1) == "tptest", current_test,\
70 "First tracepoint is present")
71 current_test += 1
72
73 print_test_result(match is not None and match.group(2) == "zero", current_test,\
74 "First tracepoint's enum value maps to zero")
75 current_test += 1
76
77 print_test_result(match is not None and match.group(3) == "one", current_test,\
78 "First tracepoint's second enum value maps to one")
79 current_test += 1
80
81 match = re.search(r".*ust_tests_td:(.*):.*enumfield = \( \"(.*)\" :.*", event_lines[1])
82 print_test_result(match is not None and match.group(1) == "tptest_bis", current_test,\
83 "Second tracepoint is present")
84 current_test += 1
85
86 print_test_result(match is not None and match.group(2) == "zero", current_test,\
87 "Second tracepoint's enum value maps to zero")
88 current_test += 1
89
90 match = re.search(r".*ust_tests_td:(.*):.*enumfield = \( \"(.*)\" :.*enumfield_bis = \( \"(.*)\" .*", event_lines[2])
91
92 print_test_result(match is not None and match.group(2) == "one", current_test,\
93 "Third tracepoint's enum value maps to one")
94 current_test += 1
95
96 print_test_result('{ zero = ( "zero" : container = 0 ), two = ( "two" : container = 2 ), three = ( "three" : container = 3 ), fifteen = ( "ten_to_twenty" : container = 15 ), twenty_one = ( "twenty_one" : container = 21 ) }' in event_lines[4],
97 current_test, 'Auto-incrementing enum values are correct')
98
99 shutil.rmtree(session_info.tmp_directory)
This page took 0.030919 seconds and 3 git commands to generate.