Relax intraprocess test to make it more stable

This commit is contained in:
Christophe Bedard 2019-07-10 12:53:54 +02:00
parent 2c76d67755
commit 6cdf9e1b9c
6 changed files with 46 additions and 19 deletions

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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')

View file

@ -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')

View file

@ -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,