def validate_app_context(session_name, save_file): xpath_provider_name = '/sessions/session[name="{}"]/domains/domain[type="JUL" or type="LOG4J"]/channels/channel/contexts/context/app/provider_name'.format( session_name) xpath_ctx_name = '/sessions/session[name="{}"]/domains/domain[type="JUL" or type="LOG4J"]/channels/channel/contexts/context/app/ctx_name'.format( session_name) xpath_node_expected = 2 # Check that the file is present assert (os.path.isfile(save_file)) # Validate provider name node_list = xpath_query(save_file, xpath_provider_name) assert (len(node_list) == xpath_node_expected) for node in node_list: assert (node.text == "myRetriever") # Validate ctx_name node_list = xpath_query(save_file, xpath_ctx_name) assert (len(node_list) == xpath_node_expected) for node in node_list: assert (node.text == "intCtx")
def test_save_load_timer_interval(tmpdir, tools_save_l, tools_load_l, should_load): # Prepare environment t_save = ProjectFactory.get_precook(tools_save_l) t_load = ProjectFactory.get_precook(tools_load_l) t_save_runtime_path = os.path.join(str(tmpdir), "tools-save") t_load_runtime_path = os.path.join(str(tmpdir), "tools-load") save_load_path = os.path.join(str(tmpdir), 'save_load') trace_name = "saved_trace" channel_name = "my_channel" trace_filename = trace_name + Settings.save_ext trace_file_path = os.path.join(save_load_path, trace_filename) monitor_timer_interval = 1000 # Craft the save with Run.get_runtime(t_save_runtime_path) as runtime: runtime.add_project(t_save) # Start lttng-sessiond sessiond = utils.sessiond_spawn(runtime) runtime.run("lttng create {}".format(trace_name)) runtime.run("lttng enable-channel -u --monitor-timer={} {}".format( monitor_timer_interval, channel_name)) runtime.run("lttng save --output-path={}".format(save_load_path)) assert (os.path.isfile(trace_file_path)) cp = runtime.subprocess_terminate(sessiond) if cp.returncode != 0: pytest.fail("Sessiond on save return code") assert (os.path.isfile(trace_file_path)) xpath_monitor_interval = '/sessions/session/domains/domain[type="UST"]/channels/channel/monitor_timer_interval' node = xpath_query(trace_file_path, xpath_monitor_interval) assert (len(node) == 1) assert (node[0].text == str(monitor_timer_interval)) # Load the save with Run.get_runtime(t_load_runtime_path) as runtime: runtime.add_project(t_load) # Start lttng-sessiond sessiond = utils.sessiond_spawn(runtime) if should_load: runtime.run("lttng load --input-path={} {}".format( save_load_path, trace_name)) else: with pytest.raises(subprocess.CalledProcessError): runtime.run("lttng load --input-path={} {}".format( save_load_path, trace_name)) cp = runtime.subprocess_terminate(sessiond) if cp.returncode != 0: pytest.fail("Sessiond on load return code") return cp, mi_out, err = runtime.run( "lttng --mi xml list {}".format(trace_name)) cp = runtime.subprocess_terminate(sessiond) if cp.returncode != 0: pytest.fail("Sessiond on load return code") assert (os.path.isfile(mi_out)) xpath_mi = '/command/output/sessions/session/domains/domain/channels/channel/attributes/monitor_timer_interval' node = xpath_query(mi_out, xpath_mi) assert (len(node) == 1) assert (node[0].text == str(monitor_timer_interval))