Remove duplicated code for trace command

This commit is contained in:
Christophe Bedard 2019-12-08 14:01:57 -08:00
parent 9c4e564bb4
commit 3d3cbe9ec3
3 changed files with 58 additions and 75 deletions

View file

@ -11,62 +11,3 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # 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)

View file

@ -15,18 +15,26 @@
"""Module for trace command extension implementation.""" """Module for trace command extension implementation."""
from ros2cli.command import CommandExtension from ros2cli.command import CommandExtension
from ros2trace.api import add_trace_arguments from tracetools_trace.tools import args
from ros2trace.api import fini from tracetools_trace.trace import init
from ros2trace.api import init from tracetools_trace.trace import fini
class TraceCommand(CommandExtension): class TraceCommand(CommandExtension):
"""Trace ROS nodes to get information on their execution.""" """Trace ROS nodes to get information on their execution."""
def add_arguments(self, parser, cli_name): def add_arguments(self, parser, cli_name):
add_trace_arguments(parser) args.add_arguments(parser)
def main(self, *, parser, args): def main(self, *, parser, args):
init(args) init(
fini(args) args.session_name,
args.path,
args.events_ust,
args.events_kernel,
args.list,
)
fini(
args.session_name,
)
return 0 return 0

View file

@ -15,31 +15,41 @@
"""Entrypoint/script to setup and start an LTTng tracing session.""" """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 args
from tracetools_trace.tools import lttng from tracetools_trace.tools import lttng
from tracetools_trace.tools import path from tracetools_trace.tools import path
from tracetools_trace.tools import print_events_list from tracetools_trace.tools import print_events_list
def main(): def init(
params = args.parse_args() session_name: str,
base_path: str,
session_name = params.session_name ros_events: List[str],
base_path = params.path kernel_events: List[str],
ros_events = params.events_ust display_list: bool = False,
kernel_events = params.events_kernel ) -> 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 ust_enabled = len(ros_events) > 0
kernel_enabled = len(kernel_events) > 0 kernel_enabled = len(kernel_events) > 0
if ust_enabled: if ust_enabled:
print(f'UST tracing enabled ({len(ros_events)} events)') print(f'UST tracing enabled ({len(ros_events)} events)')
if params.list: if display_list:
print_events_list(ros_events) print_events_list(ros_events)
else: else:
print('UST tracing disabled') print('UST tracing disabled')
if kernel_enabled: if kernel_enabled:
print(f'kernel tracing enabled ({len(kernel_events)} events)') print(f'kernel tracing enabled ({len(kernel_events)} events)')
if params.list: if display_list:
print_events_list(kernel_events) print_events_list(kernel_events)
else: else:
print('kernel tracing disabled') print('kernel tracing disabled')
@ -52,7 +62,31 @@ def main():
base_path=base_path, base_path=base_path,
ros_events=ros_events, ros_events=ros_events,
kernel_events=kernel_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') print('stopping & destroying tracing session')
lttng.lttng_fini(session_name) 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,
)