Skip to content

Commit

Permalink
Handle trace without lifecycle transitions (#28)
Browse files Browse the repository at this point in the history
Signed-off-by: Christophe Bedard <christophe.bedard@apex.ai>
  • Loading branch information
christophebedard authored Jun 18, 2024
1 parent d8c352c commit 6550e87
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
6 changes: 6 additions & 0 deletions tracetools_analysis/test/tracetools_analysis/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,9 @@ def test_ros2_no_callbacks(self) -> None:
data_model.finalize()
util = Ros2DataModelUtil(data_model)
self.assertEqual({}, util.get_callback_symbols())

def test_ros2_no_lifecycle_transitions(self) -> None:
data_model = Ros2DataModel()
data_model.finalize()
util = Ros2DataModelUtil(data_model)
self.assertEqual({}, util.get_lifecycle_node_state_intervals())
10 changes: 7 additions & 3 deletions tracetools_analysis/tracetools_analysis/utils/ros2.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"""Module for ROS data model utils."""

from typing import Any
from typing import Dict
from typing import List
from typing import Mapping
from typing import Optional
Expand Down Expand Up @@ -117,7 +118,7 @@ def get_callback_symbols(self) -> Mapping[int, str]:
callback_instances = self.data.callback_instances
callback_symbols = self.data.callback_symbols

if 'callback_object' not in callback_instances.columns:
if callback_instances.empty:
return {}

# Get a list of callback objects
Expand Down Expand Up @@ -507,7 +508,7 @@ def get_lifecycle_node_handle_info(

def get_lifecycle_node_state_intervals(
self,
) -> DataFrame:
) -> Dict[int, DataFrame]:
"""
Get state intervals (start, end) for all lifecycle nodes.
Expand All @@ -522,8 +523,11 @@ def get_lifecycle_node_state_intervals(
:return: dictionary with a dataframe (with each row containing state interval information)
for each lifecycle node
"""
data = {}
lifecycle_transitions = self.data.lifecycle_transitions.copy()
if lifecycle_transitions.empty:
return {}

data = {}
state_machine_handles = set(lifecycle_transitions['state_machine_handle'])
for state_machine_handle in state_machine_handles:
transitions = lifecycle_transitions.loc[
Expand Down

0 comments on commit 6550e87

Please sign in to comment.