Remove duplicated code for trace command
This commit is contained in:
parent
9c4e564bb4
commit
3d3cbe9ec3
3 changed files with 58 additions and 75 deletions
|
@ -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)
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue