def test_declare_qos_parameters_with_overrides(): node = Node('my_node', parameter_overrides=[ Parameter('qos_overrides./my_topic.publisher.depth', value=100), Parameter('qos_overrides./my_topic.publisher.reliability', value='best_effort'), ]) for i in range( 2 ): # try twice, the second time the parameters will be get and not declared _declare_qos_parameters(Publisher, node, '/my_topic', QoSProfile(depth=10), QoSOverridingOptions.with_default_policies()) qos_overrides = node.get_parameters_by_prefix('qos_overrides') assert len(qos_overrides) == 3 expected_params = ( ('/my_topic.publisher.depth', 100), ('/my_topic.publisher.history', 'keep_last'), ('/my_topic.publisher.reliability', 'best_effort'), ) for actual, expected in zip( sorted(qos_overrides.items(), key=lambda x: x[0]), expected_params): assert actual[0] == expected[0] # same param name assert actual[1].value == expected[1] # same param value
def __init__(self): super().__init__('qos_overrides_listener') self.sub = self.create_subscription( String, 'qos_overrides_chatter', self.chatter_callback, 10, qos_overriding_options=QoSOverridingOptions.with_default_policies( callback=self.qos_callback, # entity_id='my_custom_id', # Use this if you want a custo qos override id. ))
def __init__(self): super().__init__('qos_overrides_talker') self.i = 0 self.pub = self.create_publisher( String, 'qos_overrides_chatter', 10, qos_overriding_options=QoSOverridingOptions.with_default_policies( callback=self.qos_callback, # entity_id='my_custom_id', # Use this if you want a custo qos override id. )) timer_period = 1.0 self.tmr = self.create_timer(timer_period, self.timer_callback)
def test_declare_qos_parameters_with_unhappy_callback(): def qos_validation_callback(qos): result = QosCallbackResult() result.successful = False result.reason = 'my_custom_error_message' return result node = Node('my_node') with pytest.raises(InvalidQosOverridesError) as err: _declare_qos_parameters( Publisher, node, '/my_topic', QoSProfile(depth=10), QoSOverridingOptions.with_default_policies( callback=qos_validation_callback)) assert 'my_custom_error_message' in str(err.value)
def test_declare_qos_parameters(): node = Node('my_node') _declare_qos_parameters(Publisher, node, '/my_topic', QoSProfile(depth=10), QoSOverridingOptions.with_default_policies()) qos_overrides = node.get_parameters_by_prefix('qos_overrides') assert len(qos_overrides) == 3 expected_params = ( ('/my_topic.publisher.depth', 10), ('/my_topic.publisher.history', 'keep_last'), ('/my_topic.publisher.reliability', 'reliable'), ) for actual, expected in zip( sorted(qos_overrides.items(), key=lambda x: x[0]), expected_params): assert actual[0] == expected[0] # same param name assert actual[1].value == expected[1] # same param value
def test_declare_qos_parameters_with_happy_callback(): def qos_validation_callback(qos): result = QosCallbackResult() result.successful = True return result node = Node('my_node') _declare_qos_parameters( Publisher, node, '/my_topic', QoSProfile(depth=10), QoSOverridingOptions.with_default_policies( callback=qos_validation_callback)) qos_overrides = node.get_parameters_by_prefix('qos_overrides') assert len(qos_overrides) == 3 expected_params = ( ('/my_topic.publisher.depth', 10), ('/my_topic.publisher.history', 'keep_last'), ('/my_topic.publisher.reliability', 'reliable'), ) for actual, expected in zip( sorted(qos_overrides.items(), key=lambda x: x[0]), expected_params): assert actual[0] == expected[0] # same param name assert actual[1].value == expected[1] # same param value