Validate the trace generated during testing
[deliverable/lttng-ivc.git] / lttng_ivc / tests / consumerd_vs_sessiond / test_consumerd_vs_sessiond.py
CommitLineData
69e4e7d8
JR
1import pytest
2import subprocess
3import platform
4import shutil
5import os
6
7import lttng_ivc.utils.ProjectFactory as ProjectFactory
8import lttng_ivc.utils.utils as utils
9import lttng_ivc.utils.runtime as Run
10import lttng_ivc.settings as Settings
11
12"""
13FC: Fully Compatible
14I: Incompatible
15
16+------------------------------------------------------------------------------+
17| LTTng consumer daemon vs LTTng session daemon |
18+--------------------------+------------+------------+------------+------------+
19| Consumerd/Sessiond | 2.7 | 2.8 | 2.9 | 2.10 |
20+--------------------------+------------+------------+------------+------------+
21| 2.7 | FC | I | I | I |
22| 2.8 | I | FC | I | I |
23| 2.9 | I | I | FC | I |
24| 2.10 | I | I | I | FC |
25+--------------------------+------------+------------+------------+------------+
26
27"""
28
29test_matrix_consumerd = [
30 ("lttng-tools-2.7", "lttng-tools-2.7", True),
31 ("lttng-tools-2.7", "lttng-tools-2.8", False),
32 ("lttng-tools-2.7", "lttng-tools-2.9", False),
33 ("lttng-tools-2.7", "lttng-tools-2.10", False),
34 ("lttng-tools-2.8", "lttng-tools-2.7", False),
35 ("lttng-tools-2.8", "lttng-tools-2.8", True),
0d8162cc 36 ("lttng-tools-2.8", "lttng-tools-2.9", True),
69e4e7d8
JR
37 ("lttng-tools-2.8", "lttng-tools-2.10", False),
38 ("lttng-tools-2.9", "lttng-tools-2.7", False),
0d8162cc 39 ("lttng-tools-2.9", "lttng-tools-2.8", True),
69e4e7d8
JR
40 ("lttng-tools-2.9", "lttng-tools-2.9", True),
41 ("lttng-tools-2.9", "lttng-tools-2.10", False),
42 ("lttng-tools-2.10", "lttng-tools-2.7", False),
43 ("lttng-tools-2.10", "lttng-tools-2.8", False),
44 ("lttng-tools-2.10", "lttng-tools-2.9", False),
45 ("lttng-tools-2.10", "lttng-tools-2.10", True),
46]
47
48runtime_matrix_consumerd = []
49
50if not Settings.test_only:
51 runtime_matrix_consumerd = test_matrix_consumerd
52else:
53 for tup in test_matrix_consumerd:
54 if (tup[0] in Settings.test_only or tup[1] in
55 Settings.test_only):
56 runtime_matrix_consumerd.append(tup)
57
58
59@pytest.mark.parametrize("consumerd_l,tools_l,should_work", runtime_matrix_consumerd)
60def test_consumerd_vs_sessiond(tmpdir, consumerd_l, tools_l, should_work):
3da5adb3
JR
61 """
62 Scenario:
63 Point a lttng-tools to a consumerd of another version and see what
64 happen. We do not expect anything good to come out of this since for
65 now lttng-tools(2.10) no versioning exist between sessiond and
66 consumerd.
67 """
68
69 nb_event = 100;
69e4e7d8 70
69e4e7d8
JR
71 consumerd = ProjectFactory.get_precook(consumerd_l)
72 tools = ProjectFactory.get_precook(tools_l)
3da5adb3 73 babeltrace = ProjectFactory.get_precook(Settings.default_babeltrace)
69e4e7d8
JR
74
75 app_path = os.path.join(str(tmpdir), "app")
76
77 replacement_consumerd = utils.find_file(consumerd.installation_path, "lttng-consumerd")
78 assert(replacement_consumerd)
79
3da5adb3 80 c_dict = {"32bit": "--consumerd32-path", "64bit": "--consumerd64-path"}
69e4e7d8
JR
81 platform_type = platform.architecture()[0]
82
83 sessiond_opt_args = "{}={}".format(c_dict[platform_type], replacement_consumerd)
84
85 with Run.get_runtime(str(tmpdir)) as runtime:
86 runtime.add_project(tools)
3da5adb3 87 runtime.add_project(babeltrace)
69e4e7d8
JR
88
89 shutil.copytree(Settings.apps_gen_events_folder, app_path)
90 runtime.run("make V=1", cwd=app_path)
91
92 utils.sessiond_spawn(runtime, sessiond_opt_args)
93
94 # Consumer is only called on channel creation
95 runtime.run("lttng create")
96 try:
3da5adb3 97 runtime.run("lttng enable-event -u tp:tptest", timeout=5)
69e4e7d8
JR
98 runtime.run("lttng start", timeout=5)
99
100 # Run application
101 cmd = './app {}'.format(100)
102 runtime.run(cmd, cwd=app_path)
103
3da5adb3 104 runtime.run("lttng stop", timeout=5)
69e4e7d8 105 runtime.run("lttng destroy -a", timeout=5)
3da5adb3
JR
106 cp, cp_out, cp_err = runtime.run("babeltrace {}".format(runtime.lttng_home))
107 assert(utils.line_count(cp_out) == nb_event)
69e4e7d8
JR
108 except (subprocess.CalledProcessError, subprocess.TimeoutExpired) as e:
109 if should_work:
110 raise e
3da5adb3
JR
111 else:
112 # Expecting some error
113 return
69e4e7d8
JR
114 if not should_work:
115 raise Exception("Supposed to fail")
This page took 0.029073 seconds and 5 git commands to generate.