1 # Copyright (c) 2017 Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
3 # Permission is hereby granted, free of charge, to any person obtaining a copy
4 # of this software and associated documentation files (the "Software"), to deal
5 # in the Software without restriction, including without limitation the rights
6 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 # copies of the Software, and to permit persons to whom the Software is
8 # furnished to do so, subject to the following conditions:
10 # The above copyright notice and this permission notice shall be included in all
11 # copies or substantial portions of the Software.
13 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 import lttng_ivc
.utils
.ProjectFactory
as ProjectFactory
28 import lttng_ivc
.utils
.utils
as utils
29 import lttng_ivc
.utils
.runtime
as Run
30 import lttng_ivc
.settings
as Settings
36 +------------------------------------------------------------------------------+
37 | LTTng consumer daemon vs LTTng session daemon |
38 +--------------------------+------------+------------+------------+------------+
39 | Consumerd/Sessiond | 2.7 | 2.8 | 2.9 | 2.10 |
40 +--------------------------+------------+------------+------------+------------+
41 | 2.7 | FC | I | I | I |
42 | 2.8 | I | FC | I | I |
43 | 2.9 | I | I | FC | I |
44 | 2.10 | I | I | I | FC |
45 +--------------------------+------------+------------+------------+------------+
49 test_matrix_consumerd
= [
50 ("lttng-tools-2.7", "lttng-tools-2.7", True),
51 ("lttng-tools-2.7", "lttng-tools-2.8", False),
52 ("lttng-tools-2.7", "lttng-tools-2.9", False),
53 ("lttng-tools-2.7", "lttng-tools-2.10", False),
54 ("lttng-tools-2.8", "lttng-tools-2.7", False),
55 ("lttng-tools-2.8", "lttng-tools-2.8", True),
56 ("lttng-tools-2.8", "lttng-tools-2.9", True),
57 ("lttng-tools-2.8", "lttng-tools-2.10", False),
58 ("lttng-tools-2.9", "lttng-tools-2.7", False),
59 ("lttng-tools-2.9", "lttng-tools-2.8", True),
60 ("lttng-tools-2.9", "lttng-tools-2.9", True),
61 ("lttng-tools-2.9", "lttng-tools-2.10", False),
62 ("lttng-tools-2.10", "lttng-tools-2.7", False),
63 ("lttng-tools-2.10", "lttng-tools-2.8", False),
64 ("lttng-tools-2.10", "lttng-tools-2.9", False),
65 ("lttng-tools-2.10", "lttng-tools-2.10", True),
68 runtime_matrix_consumerd
= []
70 if not Settings
.test_only
:
71 runtime_matrix_consumerd
= test_matrix_consumerd
73 for tup
in test_matrix_consumerd
:
74 if (tup
[0] in Settings
.test_only
or tup
[1] in
76 runtime_matrix_consumerd
.append(tup
)
79 @pytest.mark
.parametrize("consumerd_l,tools_l,should_work", runtime_matrix_consumerd
)
80 def test_consumerd_vs_sessiond(tmpdir
, consumerd_l
, tools_l
, should_work
):
83 Point a lttng-tools to a consumerd of another version and see what
84 happen. We do not expect anything good to come out of this since for
85 now lttng-tools(2.10) no versioning exist between sessiond and
91 consumerd
= ProjectFactory
.get_precook(consumerd_l
)
92 tools
= ProjectFactory
.get_precook(tools_l
)
93 babeltrace
= ProjectFactory
.get_precook(Settings
.default_babeltrace
)
95 app_path
= os
.path
.join(str(tmpdir
), "app")
97 replacement_consumerd
= utils
.find_file(consumerd
.installation_path
, "lttng-consumerd")
98 assert(replacement_consumerd
)
100 c_dict
= {"32bit": "--consumerd32-path", "64bit": "--consumerd64-path"}
101 platform_type
= platform
.architecture()[0]
103 sessiond_opt_args
= "{}={}".format(c_dict
[platform_type
], replacement_consumerd
)
105 with Run
.get_runtime(str(tmpdir
)) as runtime
:
106 runtime
.add_project(tools
)
107 runtime
.add_project(babeltrace
)
109 shutil
.copytree(Settings
.apps_gen_events_folder
, app_path
)
110 runtime
.run("make V=1", cwd
=app_path
)
112 utils
.sessiond_spawn(runtime
, sessiond_opt_args
)
114 # Consumer is only called on channel creation
115 runtime
.run("lttng create")
117 runtime
.run("lttng enable-event -u tp:tptest", timeout
=5)
118 runtime
.run("lttng start", timeout
=5)
121 cmd
= './app {}'.format(100)
122 runtime
.run(cmd
, cwd
=app_path
)
124 runtime
.run("lttng stop", timeout
=5)
125 runtime
.run("lttng destroy -a", timeout
=5)
126 cp
, cp_out
, cp_err
= runtime
.run("babeltrace {}".format(runtime
.lttng_home
))
127 assert(utils
.line_count(cp_out
) == nb_event
)
128 except (subprocess
.CalledProcessError
, subprocess
.TimeoutExpired
) as e
:
132 # Expecting some error
135 raise Exception("Supposed to fail")
This page took 0.03345 seconds and 5 git commands to generate.