Handle trace without callback objects (#27)

Signed-off-by: Christophe Bedard <christophe.bedard@apex.ai>
This commit is contained in:
Christophe Bedard 2024-06-18 19:25:41 -04:00 committed by GitHub
parent eb2b8f6867
commit d8c352c082
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 0 deletions

View file

@ -16,6 +16,8 @@
import unittest
from tracetools_analysis import time_diff_to_str
from tracetools_analysis.data_model.ros2 import Ros2DataModel
from tracetools_analysis.utils.ros2 import Ros2DataModelUtil
class TestUtils(unittest.TestCase):
@ -31,3 +33,9 @@ class TestUtils(unittest.TestCase):
self.assertEqual('1 m 10 s', time_diff_to_str(69.6969))
self.assertEqual('6 m 10 s', time_diff_to_str(369.6969))
self.assertEqual('2 m 0 s', time_diff_to_str(120.499999999))
def test_ros2_no_callbacks(self) -> None:
data_model = Ros2DataModel()
data_model.finalize()
util = Ros2DataModelUtil(data_model)
self.assertEqual({}, util.get_callback_symbols())

View file

@ -117,6 +117,9 @@ class Ros2DataModelUtil(DataModelUtil):
callback_instances = self.data.callback_instances
callback_symbols = self.data.callback_symbols
if 'callback_object' not in callback_instances.columns:
return {}
# Get a list of callback objects
callback_objects = set(callback_instances['callback_object'])
# Get their symbol