+ babeltrace = ProjectFactory.get_precook(Settings.default_babeltrace)
+
+ nb_events = 100
+ if scenario == "Unsupported by tools" or scenario == "Unsupported by modules":
+ expected_event = 2
+ else:
+ expected_event = 4
+
+ with Run.get_runtime(str(tmpdir)) as runtime:
+ runtime.add_project(modules)
+ runtime.add_project(tools)
+ runtime.add_project(babeltrace)
+
+ trace_path = os.path.join(runtime.lttng_home, 'trace')
+ babeltrace_cmd = 'babeltrace {}'.format(trace_path)
+
+ sessiond = sessiond_spawn(runtime)
+ runtime.load_test_module()
+
+ runtime.run("lttng create trace -o {}".format(trace_path))
+ runtime.run("lttng enable-event -k lttng_statedump_start,lttng_statedump_end")
+ runtime.run("lttng start")
+
+ # Generate some event
+ with open(Settings.lttng_test_procfile, 'w') as procfile:
+ procfile.write("{}".format(nb_events))
+
+ if scenario == "Unsupported by tools" or scenario == "Unsupported by modules":
+ with pytest.raises(subprocess.CalledProcessError):
+ runtime.run("lttng regenerate statedump")
+ else:
+ runtime.run("lttng regenerate statedump")
+
+ runtime.run("lttng stop")
+ runtime.run("lttng destroy -a")
+
+ sessiond = runtime.subprocess_terminate(sessiond)
+ if sessiond.returncode != 0:
+ pytest.fails("Return value of sessiond is not zero")
+
+ cp_process, cp_out, cp_err = runtime.run(babeltrace_cmd)
+ assert(line_count(cp_out) == expected_event)
+
+
+@must_be_root
+@pytest.mark.parametrize("modules_label,tools_label, scenario", runtime_matrix_starglobing_enabler)
+def test_modules_starglobing_enabler(tmpdir, modules_label, tools_label, scenario):
+ modules = ProjectFactory.get_precook(modules_label)
+ if modules.skip:
+ pytest.skip("{} cannot be built on this kernel".format(modules.label))
+ tools = ProjectFactory.get_precook(tools_label)
+ babeltrace = ProjectFactory.get_precook(Settings.default_babeltrace)
+
+ nb_events = 100
+
+ if scenario == "Unsupported by modules":
+ expected_events = 0
+ else:
+ expected_events = nb_events
+
+ with Run.get_runtime(str(tmpdir)) as runtime:
+ runtime.add_project(modules)
+ runtime.add_project(tools)
+ runtime.add_project(babeltrace)
+
+ trace_path = os.path.join(runtime.lttng_home, 'trace')
+ babeltrace_cmd = 'babeltrace {}'.format(trace_path)
+
+ sessiond = sessiond_spawn(runtime)
+ runtime.load_test_module()
+
+ runtime.run("lttng create trace -o {}".format(trace_path))
+
+ if scenario == "Unsupported by tools":
+ with pytest.raises(subprocess.CalledProcessError):
+ runtime.run("lttng enable-event -k 'lttng_test_*_even*'")
+ sessiond = runtime.subprocess_terminate(sessiond)
+ if sessiond.returncode != 0:
+ pytest.fails("Return value of sessiond is not zero")
+ return
+
+ runtime.run("lttng enable-event -k 'lttng_test_*_even*'")
+ runtime.run("lttng start")
+
+ # Generate some event
+ with open(Settings.lttng_test_procfile, 'w') as procfile:
+ procfile.write("{}".format(nb_events))
+
+ runtime.run("lttng stop")
+ runtime.run("lttng destroy -a")
+
+ sessiond = runtime.subprocess_terminate(sessiond)
+ if sessiond.returncode != 0:
+ pytest.fails("Return value of sessiond is not zero")
+
+ cp_process, cp_out, cp_err = runtime.run(babeltrace_cmd)
+ assert(line_count(cp_out) == expected_events)