liblttng-ctl backward compatibility tests
[deliverable/lttng-ivc.git] / lttng_ivc / tests / tools_liblttng-ctl_vs_sessiond / test_tools_liblttng-ctl_vs_sessiond.py
CommitLineData
8149cb8e
JR
1import pytest
2import os
3
4import lttng_ivc.utils.ProjectFactory as ProjectFactory
5import lttng_ivc.utils.utils as utils
6import lttng_ivc.utils.runtime as Run
7import lttng_ivc.settings as Settings
8
9"""
10Backward compatibility testing for lttng-ctl
11"""
12
13"""
14First tuple member: lttng-tools label from which the client (lttng bin) is sourced
15Second tuple member: lttng-tools label for runtime sessiond and lttng-ctl
16Third tuple member: expected scenario
17"""
18
19test_matrix_basic_listing = [
20 ("lttng-tools-2.7", "lttng-tools-2.7", "Success"),
21 ("lttng-tools-2.7", "lttng-tools-2.8", "Success"),
22 ("lttng-tools-2.7", "lttng-tools-2.9", "Success"),
23 ("lttng-tools-2.7", "lttng-tools-2.10", "Success"),
24 ("lttng-tools-2.8", "lttng-tools-2.7", "Missing symbol"),
25 ("lttng-tools-2.8", "lttng-tools-2.8", "Success"),
26 ("lttng-tools-2.8", "lttng-tools-2.9", "Success"),
27 ("lttng-tools-2.8", "lttng-tools-2.10", "Success"),
28 ("lttng-tools-2.9", "lttng-tools-2.7", "Missing symbol"),
29 ("lttng-tools-2.9", "lttng-tools-2.8", "Missing symbol"),
30 ("lttng-tools-2.9", "lttng-tools-2.9", "Success"),
31 ("lttng-tools-2.9", "lttng-tools-2.10", "Success"),
32 ("lttng-tools-2.10", "lttng-tools-2.7", "Missing symbol"),
33 ("lttng-tools-2.10", "lttng-tools-2.8", "Missing symbol"),
34 ("lttng-tools-2.10", "lttng-tools-2.9", "Missing symbol"),
35 ("lttng-tools-2.10", "lttng-tools-2.10", "Success"),
36]
37
38runtime_matrix_basic_listing = []
39
40if not Settings.test_only:
41 runtime_matrix_basic_listing = test_matrix_basic_listing
42else:
43 for tup in test_matrix_basic_listing:
44 if (tup[0] in Settings.test_only or tup[1] in
45 Settings.test_only):
46 runtime_matrix_basic_listing.append(tup)
47
48@pytest.mark.parametrize("client_label,tools_label,outcome", runtime_matrix_basic_listing)
49def test_tools_liblttng_ctl_vs_sessiond_basic_listing(tmpdir, client_label, tools_label, outcome):
50
51 # Prepare environment
52 client = ProjectFactory.get_precook(client_label)
53 tools = ProjectFactory.get_precook(tools_label)
54
55 tools_runtime_path = os.path.join(str(tmpdir), "tools")
56
57 lttng_client = os.path.join(client.installation_path, "bin/lttng")
58
59 with Run.get_runtime(tools_runtime_path) as runtime_tools:
60 runtime_tools.add_project(tools)
61
62 sessiond = utils.sessiond_spawn(runtime_tools)
63
64 cp, out, err = runtime_tools.run('{} create trace'.format(lttng_client), check_return=False)
65 if outcome == "Missing symbol":
66 assert(cp.returncode != 0)
67 assert(utils.file_contains(err, "Missing symbol"))
68 return
69
70 assert(cp.returncode == 0)
71
72 runtime_tools.run('lttng enable-event -u tp:tptest')
73 runtime_tools.run('lttng start')
74
75 # Stop tracing
76 runtime_tools.run('lttng stop')
77 runtime_tools.run('lttng destroy -a')
78 cp = runtime_tools.subprocess_terminate(sessiond)
79 if cp.returncode != 0:
80 pytest.fail("Sessiond return code")
This page took 0.02748 seconds and 5 git commands to generate.