From 3d3cbe9ec3250f0cde6318aeeb13e156ced66583 Mon Sep 17 00:00:00 2001 From: Christophe Bedard Date: Sun, 8 Dec 2019 14:01:57 -0800 Subject: [PATCH] Remove duplicated code for trace command --- ros2trace/ros2trace/api/__init__.py | 59 ---------------------- ros2trace/ros2trace/command/trace.py | 20 +++++--- tracetools_trace/tracetools_trace/trace.py | 54 ++++++++++++++++---- 3 files changed, 58 insertions(+), 75 deletions(-) diff --git a/ros2trace/ros2trace/api/__init__.py b/ros2trace/ros2trace/api/__init__.py index cb4ecde..4b18865 100644 --- a/ros2trace/ros2trace/api/__init__.py +++ b/ros2trace/ros2trace/api/__init__.py @@ -11,62 +11,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -"""API functions for the ROS 2 trace command.""" - -from tracetools_trace.tools import args -from tracetools_trace.tools import lttng -from tracetools_trace.tools import path -from tracetools_trace.tools import print_events_list - - -def add_trace_arguments(parser): - args.add_arguments(parser) - - -def init(args): - """ - Init and start tracing. - - :param args: the parsed arguments object containing the right fields - """ - session_name = args.session_name - base_path = args.path - ros_events = args.events_ust - kernel_events = args.events_kernel - - ust_enabled = len(ros_events) > 0 - kernel_enabled = len(kernel_events) > 0 - if ust_enabled: - print(f'UST tracing enabled ({len(ros_events)} events)') - if args.list: - print_events_list(ros_events) - else: - print('UST tracing disabled') - if kernel_enabled: - print(f'kernel tracing enabled ({len(kernel_events)} events)') - if args.list: - print_events_list(kernel_events) - else: - print('kernel tracing disabled') - - full_session_path = path.get_full_session_path(session_name, base_path) - print(f'writing tracing session to: {full_session_path}') - input('press enter to start...') - lttng.lttng_init( - session_name, - base_path=base_path, - ros_events=ros_events, - kernel_events=kernel_events) - - -def fini(args): - """ - Stop and finalize tracing. - - :param args: the parsed arguments object containing the right fields - """ - session_name = args.session_name - input('press enter to stop...') - print('stopping & destroying tracing session') - lttng.lttng_fini(session_name) diff --git a/ros2trace/ros2trace/command/trace.py b/ros2trace/ros2trace/command/trace.py index 896c6f7..ce6ed91 100644 --- a/ros2trace/ros2trace/command/trace.py +++ b/ros2trace/ros2trace/command/trace.py @@ -15,18 +15,26 @@ """Module for trace command extension implementation.""" from ros2cli.command import CommandExtension -from ros2trace.api import add_trace_arguments -from ros2trace.api import fini -from ros2trace.api import init +from tracetools_trace.tools import args +from tracetools_trace.trace import init +from tracetools_trace.trace import fini class TraceCommand(CommandExtension): """Trace ROS nodes to get information on their execution.""" def add_arguments(self, parser, cli_name): - add_trace_arguments(parser) + args.add_arguments(parser) def main(self, *, parser, args): - init(args) - fini(args) + init( + args.session_name, + args.path, + args.events_ust, + args.events_kernel, + args.list, + ) + fini( + args.session_name, + ) return 0 diff --git a/tracetools_trace/tracetools_trace/trace.py b/tracetools_trace/tracetools_trace/trace.py index 18e809d..165aa0e 100644 --- a/tracetools_trace/tracetools_trace/trace.py +++ b/tracetools_trace/tracetools_trace/trace.py @@ -15,31 +15,41 @@ """Entrypoint/script to setup and start an LTTng tracing session.""" +from typing import List + from tracetools_trace.tools import args from tracetools_trace.tools import lttng from tracetools_trace.tools import path from tracetools_trace.tools import print_events_list -def main(): - params = args.parse_args() - - session_name = params.session_name - base_path = params.path - ros_events = params.events_ust - kernel_events = params.events_kernel +def init( + session_name: str, + base_path: str, + ros_events: List[str], + kernel_events: List[str], + display_list: bool = False, +) -> None: + """ + Init and start tracing. + :param session_name: the name of the session + :param base_path: the path to the directory in which to create the tracing session directory + :param ros_events: list of ROS events to enable + :param kernel_events: list of kernel events to enable + :param display_list: whether to display list(s) of enabled events + """ ust_enabled = len(ros_events) > 0 kernel_enabled = len(kernel_events) > 0 if ust_enabled: print(f'UST tracing enabled ({len(ros_events)} events)') - if params.list: + if display_list: print_events_list(ros_events) else: print('UST tracing disabled') if kernel_enabled: print(f'kernel tracing enabled ({len(kernel_events)} events)') - if params.list: + if display_list: print_events_list(kernel_events) else: print('kernel tracing disabled') @@ -52,7 +62,31 @@ def main(): base_path=base_path, ros_events=ros_events, kernel_events=kernel_events) - input('press enter to stop...') + +def fini( + session_name: str, +) -> None: + """ + Stop and finalize tracing. + + :param session_name: the name of the session + """ + input('press enter to stop...') print('stopping & destroying tracing session') lttng.lttng_fini(session_name) + + +def main(): + params = args.parse_args() + + init( + params.session_name, + params.path, + params.events_ust, + params.events_kernel, + params.list, + ) + fini( + params.session_name, + )