Default to ctf2 for testing
[lttng-tools.git] / tests / utils / test_utils.py
CommitLineData
cfb007a4
JG
1#!/usr/bin/env python3
2#
9d16b343 3# Copyright (C) 2013 Jérémie Galarneau <jeremie.galarneau@efficios.com>
cfb007a4 4#
9d16b343 5# SPDX-License-Identifier: GPL-2.0-only
cfb007a4 6#
cfb007a4
JG
7
8import uuid
9import os
10import subprocess
11import shutil
12import sys
13import tempfile
14
15# Import lttng bindings generated in the current tree
16lttng_bindings_path = os.path.dirname(os.path.abspath(__file__)) + "/"
17for i in range(3):
18 lttng_bindings_path = os.path.dirname(lttng_bindings_path)
19lttng_bindings_path = lttng_bindings_path + "/extras/bindings/swig/python"
20lttng_bindings_libs_path = lttng_bindings_path + "/.libs"
21sys.path.append(lttng_bindings_path)
22sys.path.append(lttng_bindings_libs_path)
23from lttng import *
24
c125de8f 25BABELTRACE_BIN="babeltrace2"
140fc3b4
JR
26trace_format_mapping = {
27 "ctf1" : lttng_trace_format_ctf_1_descriptor_create,
28 "ctf2" : lttng_trace_format_ctf_2_descriptor_create,
29 }
cfb007a4
JG
30
31class SessionInfo:
32 def __init__(self, handle, session_name, tmp_directory, channel_name):
33 self.handle = handle
34 self.name = session_name
35 self.tmp_directory = tmp_directory
36 self.trace_path = tmp_directory + "/" + session_name
37 self.channel_name = channel_name
38
39def bail(diag, session_info = None):
40 print("Bail out!")
41 print("#", diag)
42
43 if session_info is not None:
44 stop_session(session_info, True)
45
7f2841b7
JG
46 if os.path.exists(session_info.tmp_directory):
47 shutil.rmtree(session_info.tmp_directory)
cfb007a4
JG
48 exit(-1)
49
50def print_test_result(result, number, description):
51 result_string = None
52 if result is True:
53 result_string = "ok"
54 else:
55 result_string = "not ok"
56
57 result_string += " {0} - {1}".format(number, description)
58 print(result_string)
59
bc1d8ca0
PP
60def skip_test(number, description):
61 print('ok {} # skip {}'.format(number, description))
62
cfb007a4
JG
63def enable_ust_tracepoint_event(session_info, event_name):
64 event = Event()
65 event.name = event_name
66 event.type = EVENT_TRACEPOINT
67 event.loglevel = EVENT_LOGLEVEL_ALL
68 res = enable_event(session_info.handle, event, session_info.channel_name)
69 if res < 0:
70 bail("Failed to enable userspace event " + event_name, session_info)
71
72def create_session():
73 dom = Domain()
74 dom.type = DOMAIN_UST
75
76 session_name = str(uuid.uuid1())
77 tmp_directory = tempfile.mkdtemp()
78 trace_path = tmp_directory + "/" + session_name
140fc3b4
JR
79
80 if 'LTTNG_TEST_TRACE_FORMAT' in os.environ:
81 trace_format_env = os.getenv('LTTNG_TEST_TRACE_FORMAT')
82 else:
89543bdf 83 trace_format_env = 'ctf2'
140fc3b4
JR
84
85 trace_format_desc = trace_format_mapping[value]()
cfb007a4 86
b972b746
JR
87 session_descriptor = lttng_session_descriptor_local_create(session_name, trace_path)
88
89 lttng_session_descriptor_set_trace_format_descriptor(session_descriptor, trace_format_desc)
90
91 res = lttng_create_session_ext(session_descriptor)
92 if res != 10:
e9711845 93 bail("Failed to create recording session.")
cfb007a4
JG
94
95 channel = Channel()
96 channel.name = "channel0"
97 channel_set_default_attr(dom, channel.attr)
98
99 han = Handle(session_name, dom)
100 res = enable_channel(han, channel)
101
102 session_info = SessionInfo(han, session_name, tmp_directory, channel.name)
103 if res < 0:
104 bail("Failed to enable channel " + channel.name, session_info)
105 return session_info
106
107def start_session(session_info):
108 start(session_info.name)
109
110def stop_session(session_info, bailing = False):
111 # Workaround lttng-ctl outputing directly to stdout by spawning a subprocess.
112 lttng_binary_path = os.path.dirname(os.path.abspath(__file__)) + "/"
113 for i in range(3):
114 lttng_binary_path = os.path.dirname(lttng_binary_path)
115 lttng_binary_path = lttng_binary_path + "/src/bin/lttng/lttng"
116
117 retcode = subprocess.call([lttng_binary_path, "stop", session_info.name], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
118 if retcode != 0 and not bailing:
119 bail("Unable to stop session " + session_info.name, session_info)
120 destroy(session_info.name)
This page took 0.07191 seconds and 5 git commands to generate.