Exemplo n.º 1
0
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")
Exemplo n.º 2
0
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))