Merge branch '17-fix-unstable-tracetools_test-tests' into 'master'
Resolve "Fix unstable tracetools_test tests" Closes #17 See merge request micro-ROS/ros_tracing/ros2_tracing!55
This commit is contained in:
commit
ec1db472e9
6 changed files with 46 additions and 19 deletions
|
@ -46,11 +46,11 @@ class TestIntra(TraceTestCase):
|
||||||
'topic_name',
|
'topic_name',
|
||||||
'/the_topic/_intra',
|
'/the_topic/_intra',
|
||||||
sub_init_events)
|
sub_init_events)
|
||||||
self.assertNumEvents(
|
self.assertNumEventsEqual(
|
||||||
sub_init_normal_events,
|
sub_init_normal_events,
|
||||||
1,
|
1,
|
||||||
'none or more than 1 sub init event for normal sub')
|
'none or more than 1 sub init event for normal sub')
|
||||||
self.assertNumEvents(
|
self.assertNumEventsEqual(
|
||||||
sub_init_intra_events,
|
sub_init_intra_events,
|
||||||
1,
|
1,
|
||||||
'none or more than 1 sub init event for intra sub')
|
'none or more than 1 sub init event for intra sub')
|
||||||
|
@ -68,7 +68,7 @@ class TestIntra(TraceTestCase):
|
||||||
sub_handle_intra,
|
sub_handle_intra,
|
||||||
self.get_events_with_name(
|
self.get_events_with_name(
|
||||||
'ros2:rclcpp_subscription_callback_added'))
|
'ros2:rclcpp_subscription_callback_added'))
|
||||||
self.assertNumEvents(
|
self.assertNumEventsEqual(
|
||||||
callback_added_events,
|
callback_added_events,
|
||||||
1,
|
1,
|
||||||
'none or more than 1 callback added event')
|
'none or more than 1 callback added event')
|
||||||
|
@ -78,9 +78,15 @@ class TestIntra(TraceTestCase):
|
||||||
# Get corresponding callback start/end pairs
|
# Get corresponding callback start/end pairs
|
||||||
start_events = self.get_events_with_name('ros2:callback_start')
|
start_events = self.get_events_with_name('ros2:callback_start')
|
||||||
end_events = self.get_events_with_name('ros2:callback_end')
|
end_events = self.get_events_with_name('ros2:callback_end')
|
||||||
# Should still have two start:end pairs (1 normal + 1 intra)
|
# Should still have at least two start:end pairs (1 normal + 1 intra)
|
||||||
self.assertNumEvents(start_events, 2, 'does not have 2 callback start events')
|
self.assertNumEventsGreaterEqual(
|
||||||
self.assertNumEvents(end_events, 2, 'does not have 2 callback end events')
|
start_events,
|
||||||
|
2,
|
||||||
|
'does not have at least 2 callback start events')
|
||||||
|
self.assertNumEventsGreaterEqual(
|
||||||
|
end_events,
|
||||||
|
2,
|
||||||
|
'does not have at least 2 callback end events')
|
||||||
start_events_intra = self.get_events_with_field_value(
|
start_events_intra = self.get_events_with_field_value(
|
||||||
'callback',
|
'callback',
|
||||||
callback_handle_intra,
|
callback_handle_intra,
|
||||||
|
@ -89,14 +95,14 @@ class TestIntra(TraceTestCase):
|
||||||
'callback',
|
'callback',
|
||||||
callback_handle_intra,
|
callback_handle_intra,
|
||||||
end_events)
|
end_events)
|
||||||
self.assertNumEvents(
|
self.assertNumEventsGreaterEqual(
|
||||||
start_events_intra,
|
start_events_intra,
|
||||||
1,
|
1,
|
||||||
'none or more than one intra start event')
|
'no intra start event')
|
||||||
self.assertNumEvents(
|
self.assertNumEventsGreaterEqual(
|
||||||
end_events_intra,
|
end_events_intra,
|
||||||
1,
|
1,
|
||||||
'none or more than one intra end event')
|
'no intra end event')
|
||||||
|
|
||||||
# Check is_intra_process field value
|
# Check is_intra_process field value
|
||||||
start_event_intra = start_events_intra[0]
|
start_event_intra = start_events_intra[0]
|
||||||
|
@ -111,10 +117,10 @@ class TestIntra(TraceTestCase):
|
||||||
'callback',
|
'callback',
|
||||||
callback_handle_intra,
|
callback_handle_intra,
|
||||||
start_events)
|
start_events)
|
||||||
self.assertNumEvents(
|
self.assertNumEventsGreaterEqual(
|
||||||
start_events_not_intra,
|
start_events_not_intra,
|
||||||
1,
|
1,
|
||||||
'none or more than one normal start event')
|
'no normal start event')
|
||||||
start_event_not_intra = start_events_not_intra[0]
|
start_event_not_intra = start_events_not_intra[0]
|
||||||
self.assertFieldEquals(
|
self.assertFieldEquals(
|
||||||
start_event_not_intra,
|
start_event_not_intra,
|
||||||
|
|
|
@ -49,7 +49,7 @@ class TestPublisher(TraceTestCase):
|
||||||
'topic_name',
|
'topic_name',
|
||||||
'/the_topic',
|
'/the_topic',
|
||||||
test_pub_init_events)
|
test_pub_init_events)
|
||||||
self.assertNumEvents(
|
self.assertNumEventsEqual(
|
||||||
test_pub_init_topic_events,
|
test_pub_init_topic_events,
|
||||||
1,
|
1,
|
||||||
'none or more than 1 pub_init even for test topic')
|
'none or more than 1 pub_init even for test topic')
|
||||||
|
@ -67,7 +67,10 @@ class TestPublisher(TraceTestCase):
|
||||||
test_pub_node_init_events = self.get_events_with_procname(
|
test_pub_node_init_events = self.get_events_with_procname(
|
||||||
'test_publisher',
|
'test_publisher',
|
||||||
node_init_events)
|
node_init_events)
|
||||||
self.assertNumEvents(test_pub_node_init_events, 1, 'none or more than 1 node_init event')
|
self.assertNumEventsEqual(
|
||||||
|
test_pub_node_init_events,
|
||||||
|
1,
|
||||||
|
'none or more than 1 node_init event')
|
||||||
test_pub_node_init_event = test_pub_node_init_events[0]
|
test_pub_node_init_event = test_pub_node_init_events[0]
|
||||||
self.assertMatchingField(
|
self.assertMatchingField(
|
||||||
test_pub_node_init_event,
|
test_pub_node_init_event,
|
||||||
|
|
|
@ -61,7 +61,10 @@ class TestService(TraceTestCase):
|
||||||
test_srv_node_init_events = self.get_events_with_procname(
|
test_srv_node_init_events = self.get_events_with_procname(
|
||||||
'test_service',
|
'test_service',
|
||||||
node_init_events)
|
node_init_events)
|
||||||
self.assertNumEvents(test_srv_node_init_events, 1, 'none or more than 1 node_init event')
|
self.assertNumEventsEqual(
|
||||||
|
test_srv_node_init_events,
|
||||||
|
1,
|
||||||
|
'none or more than 1 node_init event')
|
||||||
test_srv_node_init_event = test_srv_node_init_events[0]
|
test_srv_node_init_event = test_srv_node_init_events[0]
|
||||||
self.assertMatchingField(
|
self.assertMatchingField(
|
||||||
test_srv_node_init_event,
|
test_srv_node_init_event,
|
||||||
|
|
|
@ -54,7 +54,7 @@ class TestSubscription(TraceTestCase):
|
||||||
'topic_name',
|
'topic_name',
|
||||||
'/the_topic',
|
'/the_topic',
|
||||||
sub_init_events)
|
sub_init_events)
|
||||||
self.assertNumEvents(test_sub_init_events, 1, 'cannot find test topic name')
|
self.assertNumEventsEqual(test_sub_init_events, 1, 'cannot find test topic name')
|
||||||
test_sub_init_event = test_sub_init_events[0]
|
test_sub_init_event = test_sub_init_events[0]
|
||||||
|
|
||||||
# Check queue_depth value
|
# Check queue_depth value
|
||||||
|
@ -69,7 +69,7 @@ class TestSubscription(TraceTestCase):
|
||||||
test_sub_node_init_events = self.get_events_with_procname(
|
test_sub_node_init_events = self.get_events_with_procname(
|
||||||
'test_subscription',
|
'test_subscription',
|
||||||
node_init_events)
|
node_init_events)
|
||||||
self.assertNumEvents(
|
self.assertNumEventsEqual(
|
||||||
test_sub_node_init_events,
|
test_sub_node_init_events,
|
||||||
1,
|
1,
|
||||||
'none or more than 1 node_init event')
|
'none or more than 1 node_init event')
|
||||||
|
|
|
@ -64,7 +64,7 @@ class TestTimer(TraceTestCase):
|
||||||
|
|
||||||
# Find and check given timer period
|
# Find and check given timer period
|
||||||
test_timer_init_event = self.get_events_with_procname('test_timer', init_events)
|
test_timer_init_event = self.get_events_with_procname('test_timer', init_events)
|
||||||
self.assertNumEvents(test_timer_init_event, 1, 'none or more test timer init events')
|
self.assertNumEventsEqual(test_timer_init_event, 1, 'none or more test timer init events')
|
||||||
test_init_event = test_timer_init_event[0]
|
test_init_event = test_timer_init_event[0]
|
||||||
self.assertFieldEquals(test_init_event, 'period', 1000000, 'invalid period')
|
self.assertFieldEquals(test_init_event, 'period', 1000000, 'invalid period')
|
||||||
|
|
||||||
|
|
|
@ -172,7 +172,7 @@ class TraceTestCase(unittest.TestCase):
|
||||||
"""
|
"""
|
||||||
self.assertTrue(self.are_events_ordered(first_event, second_event))
|
self.assertTrue(self.are_events_ordered(first_event, second_event))
|
||||||
|
|
||||||
def assertNumEvents(
|
def assertNumEventsEqual(
|
||||||
self,
|
self,
|
||||||
events: List[DictEvent],
|
events: List[DictEvent],
|
||||||
expected_number: int,
|
expected_number: int,
|
||||||
|
@ -187,6 +187,21 @@ class TraceTestCase(unittest.TestCase):
|
||||||
"""
|
"""
|
||||||
self.assertEqual(len(events), expected_number, msg)
|
self.assertEqual(len(events), expected_number, msg)
|
||||||
|
|
||||||
|
def assertNumEventsGreaterEqual(
|
||||||
|
self,
|
||||||
|
events: List[DictEvent],
|
||||||
|
min_expected_number: int,
|
||||||
|
msg: str = 'wrong number of events'
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Check that the number of events is greater of equal.
|
||||||
|
|
||||||
|
:param events: the events to check
|
||||||
|
:param min_expected_number: the minimum expected number of events
|
||||||
|
:param msg: the message to display on failure
|
||||||
|
"""
|
||||||
|
self.assertGreaterEqual(len(events), min_expected_number, msg)
|
||||||
|
|
||||||
def assertMatchingField(
|
def assertMatchingField(
|
||||||
self,
|
self,
|
||||||
initial_event: DictEvent,
|
initial_event: DictEvent,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue