("lttng-ust-2.12", "lttng-tools-2.9", success), ("lttng-ust-2.12", "lttng-tools-2.10", success), ("lttng-ust-2.12", "lttng-tools-2.11", success), ("lttng-ust-2.12", "lttng-tools-2.12", success), ("lttng-ust-2.12", "lttng-tools-2.13", tracing_unavailable_so), ("lttng-ust-2.13", "lttng-tools-2.7", tracing_unavailable_so), ("lttng-ust-2.13", "lttng-tools-2.8", tracing_unavailable_so), ("lttng-ust-2.13", "lttng-tools-2.9", tracing_unavailable_so), ("lttng-ust-2.13", "lttng-tools-2.10", tracing_unavailable_so), ("lttng-ust-2.13", "lttng-tools-2.11", tracing_unavailable_so), ("lttng-ust-2.13", "lttng-tools-2.12", tracing_unavailable_so), ("lttng-ust-2.13", "lttng-tools-2.13", success), ] runtime_matrix_enum = Settings.generate_runtime_test_matrix(test_matrix_enum, [0, 1]) runtime_matrix_base = Settings.generate_runtime_test_matrix(test_matrix_base, [0, 1]) @pytest.mark.parametrize("ust_label,tools_label,scenario", runtime_matrix_enum) def test_ust_tracepoint_abi_api_vs_ust_enum(tmpdir, ust_label, tools_label, scenario): nb_loop = 100 if scenario != tracing_unavailable: nb_expected_events = 200 else: nb_expected_events = 0 # Prepare environment ust = ProjectFactory.get_precook(ust_label)
("lttng-ust-2.12", "lttng-tools-2.13", False), # For ust 2.13 the provider version is bumped from 1.0 to 2.0 # See commit 04f0b55a6bafe380a1b9ce93267d5a7da963cbf9 in lttng-ust tree. # The .so for ust was bumped to .1. ("lttng-ust-2.13", "lttng-tools-2.7", False), ("lttng-ust-2.13", "lttng-tools-2.8", False), ("lttng-ust-2.13", "lttng-tools-2.9", False), ("lttng-ust-2.13", "lttng-tools-2.10", False), ("lttng-ust-2.13", "lttng-tools-2.11", False), ("lttng-ust-2.13", "lttng-tools-2.12", False), ("lttng-ust-2.13", "lttng-tools-2.13", True), ] event_registration_error = "Error: UST app recv reg unsupported version" runtime_matrix_base_app_tracing_available = Settings.generate_runtime_test_matrix( test_matrix_base_app_tracing_available, [0, 1]) @pytest.mark.parametrize("ust_label,tools_label,tracing_available", runtime_matrix_base_app_tracing_available) def test_ust_app_tools_update_tracing_available(tmpdir, ust_label, tools_label, tracing_available): if tracing_available: nb_events = 100 else: nb_events = 0 # Prepare environment ust = ProjectFactory.get_precook(ust_label) tools = ProjectFactory.get_precook(tools_label)
False, marks=pytest.mark.xfail(reason="Should fail but does not ...."), ), pytest.param( "lttng-ust-2.13", "lttng-tools-2.9", False, marks=pytest.mark.xfail(reason="Should fail but does not ...."), ), ("lttng-ust-2.13", "lttng-tools-2.10", True), ("lttng-ust-2.13", "lttng-tools-2.11", True), ("lttng-ust-2.13", "lttng-tools-2.12", True), ("lttng-ust-2.13", "lttng-tools-2.13", True), ] runtime_matrix_label = Settings.generate_runtime_test_matrix( test_matrix_label, [0, 1]) @pytest.mark.parametrize("ust_label,tools_label,should_pass", runtime_matrix_label) def test_soname_configure(tmpdir, ust_label, tools_label, should_pass): ust = ProjectFactory.get_fresh(ust_label, str(tmpdir.mkdir("lttng-ust"))) tools = ProjectFactory.get_fresh(tools_label, str(tmpdir.mkdir("lttng-tools"))) ust.autobuild() # Replace the default lttng-ust for lttng-tools tools.dependencies["lttng-ust"] = ust # TODO: Propose fixes to upstream regarding the check
("lttng-ust-2.12", "lttng-tools-2.10", 2, "Success"), ("lttng-ust-2.12", "lttng-tools-2.11", 2, "Success"), ("lttng-ust-2.12", "lttng-tools-2.12", 2, "Success"), ("lttng-ust-2.12", "lttng-tools-2.12", 2, "Success"), ("lttng-ust-2.12", "lttng-tools-2.13", 2, "Success"), ("lttng-ust-2.13", "lttng-tools-2.7", 2, "Unsupported protocol"), ("lttng-ust-2.13", "lttng-tools-2.8", 2, "Success"), ("lttng-ust-2.13", "lttng-tools-2.9", 2, "Success"), ("lttng-ust-2.13", "lttng-tools-2.10", 2, "Success"), ("lttng-ust-2.13", "lttng-tools-2.11", 2, "Success"), ("lttng-ust-2.13", "lttng-tools-2.12", 2, "Success"), ("lttng-ust-2.13", "lttng-tools-2.12", 2, "Success"), ("lttng-ust-2.13", "lttng-tools-2.13", 2, "Success"), ] runtime_matrix_tracing_available = Settings.generate_runtime_test_matrix( test_matrix_tracing_available, [0, 1]) runtime_matrix_agent_interface = Settings.generate_runtime_test_matrix( test_matrix_agent_interface, [0, 1]) @pytest.mark.parametrize("ust_label,tools_label,app_version,should_trace", runtime_matrix_tracing_available) def test_ust_java_agent_tracing_available(tmpdir, ust_label, tools_label, app_version, should_trace): nb_iter = 100 nb_events = 3 * nb_iter # Prepare environment ust = ProjectFactory.get_precook(ust_label) tools = ProjectFactory.get_precook(tools_label)
""" test_matrix_starglobing_enabler = [ ("lttng-ust-2.9", "lttng-tools-2.9", "Unsupported by tools"), ("lttng-ust-2.9", "lttng-tools-2.10", "Unsupported by ust"), ("lttng-ust-2.10", "lttng-tools-2.9", "Unsupported by tools"), ("lttng-ust-2.10", "lttng-tools-2.10", "Supported"), ("lttng-ust-2.11", "lttng-tools-2.11", "Supported"), ("lttng-ust-2.11", "lttng-tools-2.12", "Supported"), ("lttng-ust-2.12", "lttng-tools-2.11", "Supported"), ("lttng-ust-2.12", "lttng-tools-2.12", "Supported"), ("lttng-ust-2.12", "lttng-tools-2.13", "Supported"), ("lttng-ust-2.13", "lttng-tools-2.13", "Supported"), ] runtime_matrix_tracing_available = Settings.generate_runtime_test_matrix( test_matrix_tracing_available, [0, 1] ) runtime_matrix_regen_statedump = Settings.generate_runtime_test_matrix( test_matrix_regen_statedump, [0, 1] ) runtime_matrix_starglobing_enabler = Settings.generate_runtime_test_matrix( test_matrix_starglobing_enabler, [0, 1] ) @pytest.mark.parametrize( "ust_label,tools_label,outcome", runtime_matrix_tracing_available ) def test_ust_app_tracing_available(tmpdir, ust_label, tools_label, outcome): nb_events = 100
"babeltrace-1.5"], "lttng-tools-2.7"), (["babeltrace-1.3", "babeltrace-1.4", "babeltrace-1.5"], "lttng-tools-2.8"), (["babeltrace-1.3", "babeltrace-1.4", "babeltrace-1.5"], "lttng-tools-2.9"), (["babeltrace-1.3", "babeltrace-1.4", "babeltrace-1.5"], "lttng-tools-2.10"), (["babeltrace-1.3", "babeltrace-1.4", "babeltrace-1.5"], "lttng-tools-2.11"), (["babeltrace-1.3", "babeltrace-1.4", "babeltrace-1.5"], "lttng-tools-2.12"), (["babeltrace-1.3", "babeltrace-1.4", "babeltrace-1.5"], "lttng-tools-2.13"), ] runtime_matrix_base_ust = Settings.generate_runtime_test_matrix( test_matrix_base_ust, [0, 1]) runtime_matrix_lost_packet = Settings.generate_runtime_test_matrix( test_matrix_lost_packet, [0]) runtime_matrix_base_modules = Settings.generate_runtime_test_matrix( test_matrix_base_modules, [0, 1, 2]) # For these if one of the babeltrace is "deprecated" or in the "test only", the # whole sub list will be discarded/passed. We can do further processing later on when # this situation occurs. runtime_matrix_same_trace_modules = Settings.generate_runtime_test_matrix( test_matrix_same_trace_modules, [0, 1]) runtime_matrix_same_trace_ust = Settings.generate_runtime_test_matrix( test_matrix_same_trace_ust, [0, 1]) @pytest.mark.parametrize("babeltrace_l, tools_l", runtime_matrix_base_ust)
("lttng-tools-2.12", "lttng-tools-2.8", True), ("lttng-tools-2.12", "lttng-tools-2.9", True), ("lttng-tools-2.12", "lttng-tools-2.10", True), ("lttng-tools-2.12", "lttng-tools-2.11", True), ("lttng-tools-2.12", "lttng-tools-2.12", True), ("lttng-tools-2.12", "lttng-tools-2.13", True), ("lttng-tools-2.13", "lttng-tools-2.7", True), ("lttng-tools-2.13", "lttng-tools-2.8", True), ("lttng-tools-2.13", "lttng-tools-2.9", True), ("lttng-tools-2.13", "lttng-tools-2.10", True), ("lttng-tools-2.13", "lttng-tools-2.11", True), ("lttng-tools-2.13", "lttng-tools-2.12", True), ("lttng-tools-2.13", "lttng-tools-2.13", True), ] runtime_matrix_streaming_base = Settings.generate_runtime_test_matrix( test_matrix_streaming_base, [0, 1]) runtime_matrix_streaming_regenerate_metadata = Settings.generate_runtime_test_matrix( test_matrix_streaming_regenerate_metadata, [0, 1]) runtime_matrix_live_base = Settings.generate_runtime_test_matrix( test_matrix_live_base, [0, 1]) @pytest.mark.parametrize("relayd_label,consumerd_label,scenario", runtime_matrix_streaming_base) def test_relayd_vs_consumerd_streaming_base(tmpdir, relayd_label, consumerd_label, scenario): nb_loop = 100 nb_expected_events = 100 # Prepare environment
("lttng-modules-2.13", "lttng-tools-2.8", "Unsupported by tools"), ("lttng-modules-2.13", "lttng-tools-2.9", "Unsupported by tools"), ("lttng-modules-2.13", "lttng-tools-2.10", "Supported"), ("lttng-modules-2.13", "lttng-tools-2.11", "Supported"), ("lttng-modules-2.13", "lttng-tools-2.12", "Supported"), ("lttng-modules-2.13", "lttng-tools-2.13", "Supported"), ] def get_metadata_file_path(base_trace_path): metadata = os.path.join(base_trace_path, "kernel", "metadata") return metadata runtime_matrix_base_tracing = Settings.generate_runtime_test_matrix( test_matrix_base_tracing, [0, 1] ) runtime_matrix_regen_metadata = Settings.generate_runtime_test_matrix( test_matrix_regen_metadata, [0, 1] ) runtime_matrix_statedump = Settings.generate_runtime_test_matrix( test_matrix_statedump, [0, 1] ) runtime_matrix_starglobing_enabler = Settings.generate_runtime_test_matrix( test_matrix_starglobing_enabler, [0, 1] ) @must_be_root @pytest.mark.parametrize("modules_label,tools_label", runtime_matrix_base_tracing) def test_modules_base_tracing(tmpdir, modules_label, tools_label):
("lttng-tools-2.12", "lttng-tools-2.8", "Missing symbol"), ("lttng-tools-2.12", "lttng-tools-2.9", "Missing symbol"), ("lttng-tools-2.12", "lttng-tools-2.10", "Missing symbol"), ("lttng-tools-2.12", "lttng-tools-2.11", "Missing symbol"), ("lttng-tools-2.12", "lttng-tools-2.12", "Success"), ("lttng-tools-2.12", "lttng-tools-2.13", "Success"), ("lttng-tools-2.13", "lttng-tools-2.7", "Missing symbol"), ("lttng-tools-2.13", "lttng-tools-2.8", "Missing symbol"), ("lttng-tools-2.13", "lttng-tools-2.9", "Missing symbol"), ("lttng-tools-2.13", "lttng-tools-2.10", "Missing symbol"), ("lttng-tools-2.13", "lttng-tools-2.11", "Missing symbol"), ("lttng-tools-2.13", "lttng-tools-2.12", "Missing symbol"), ("lttng-tools-2.13", "lttng-tools-2.13", "Success"), ] runtime_matrix_basic_listing = Settings.generate_runtime_test_matrix( test_matrix_basic_listing, [0, 1]) @pytest.mark.parametrize("client_label,tools_label,outcome", runtime_matrix_basic_listing) def test_tools_liblttng_ctl_vs_sessiond_basic_listing(tmpdir, client_label, tools_label, outcome): # Prepare environment client = ProjectFactory.get_precook(client_label) tools = ProjectFactory.get_precook(tools_label) tools_runtime_path = os.path.join(str(tmpdir), "tools") lttng_client = os.path.join(client.installation_path, "bin/lttng")
# Save change is different and trackers also. ("lttng-tools-2.12", "lttng-tools-2.10", False), ("lttng-tools-2.12", "lttng-tools-2.11", False), ("lttng-tools-2.12", "lttng-tools-2.12", True), ("lttng-tools-2.12", "lttng-tools-2.13", True), ("lttng-tools-2.13", "lttng-tools-2.7", False), ("lttng-tools-2.13", "lttng-tools-2.8", False), ("lttng-tools-2.13", "lttng-tools-2.9", False), # Save change is different and trackers also. ("lttng-tools-2.13", "lttng-tools-2.10", False), ("lttng-tools-2.13", "lttng-tools-2.11", False), ("lttng-tools-2.13", "lttng-tools-2.12", True), ("lttng-tools-2.13", "lttng-tools-2.13", True), ] runtime_matrix_app_contexts = Settings.generate_runtime_test_matrix( test_matrix_app_contexts, [0, 1]) runtime_matrix_blocking_timeout = Settings.generate_runtime_test_matrix( test_matrix_blocking_timeout, [0, 1]) runtime_matrix_monitor_timer_interval = Settings.generate_runtime_test_matrix( test_matrix_monitor_timer_interval, [0, 1]) 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)
("lttng-tools-2.12", "lttng-tools-2.8", False), ("lttng-tools-2.12", "lttng-tools-2.9", False), ("lttng-tools-2.12", "lttng-tools-2.10", False), ("lttng-tools-2.12", "lttng-tools-2.11", False), ("lttng-tools-2.12", "lttng-tools-2.12", True), ("lttng-tools-2.12", "lttng-tools-2.13", True), ("lttng-tools-2.13", "lttng-tools-2.7", False), ("lttng-tools-2.13", "lttng-tools-2.8", False), ("lttng-tools-2.13", "lttng-tools-2.9", False), ("lttng-tools-2.13", "lttng-tools-2.10", False), ("lttng-tools-2.13", "lttng-tools-2.11", False), ("lttng-tools-2.13", "lttng-tools-2.12", True), ("lttng-tools-2.13", "lttng-tools-2.13", True), ] runtime_matrix_consumerd = Settings.generate_runtime_test_matrix( test_matrix_consumerd, [0, 1]) @pytest.mark.parametrize("consumerd_l,tools_l,should_work", runtime_matrix_consumerd) def test_consumerd_vs_sessiond(tmpdir, consumerd_l, tools_l, should_work): """ Scenario: Point a lttng-tools to a consumerd of another version and see what happen. We do not expect anything good to come out of this since for now lttng-tools(2.10) no versionning exist between sessiond and consumerd. """ nb_event = 100
("lttng-tools-2.12", "lttng-tools-2.13"), ("lttng-tools-2.13", "lttng-tools-2.7"), ("lttng-tools-2.13", "lttng-tools-2.8"), ("lttng-tools-2.13", "lttng-tools-2.9"), ("lttng-tools-2.13", "lttng-tools-2.10"), ("lttng-tools-2.13", "lttng-tools-2.11"), ("lttng-tools-2.13", "lttng-tools-2.12"), ("lttng-tools-2.13", "lttng-tools-2.13"), ] """ Generate tuple for uid and pid mode. """ test_matrix_relayd = [tup + ("uid", ) for tup in matrix_relayd ] + [tup + ("pid", ) for tup in matrix_relayd] runtime_matrix_base = Settings.generate_runtime_test_matrix( test_matrix_base, [0]) runtime_matrix_relayd = Settings.generate_runtime_test_matrix( test_matrix_relayd, [0, 1]) """ Generate tuple for relayd test involving snapshot: This is needed due to: commit 10d653513d572b8727d6935767a96c9dd82e4fe2 Author: Julien Desfossez <*****@*****.**> Date: Wed Aug 30 14:06:42 2017 -0400 Fix: path of snapshots with a relay and default URI When recording a snapshot to a relay without custom URI (ex: net://localhost vs net://localhost/custom), the snapshots end up being stored in ~/lttng-traces/<hostname>/snapshot-XXX instead of being inside the <session-name> folder like on local snapshots. We would expect the