def test_domain_participant_qos_to_string(): the_qos = dds.DomainParticipantQos() assert str(the_qos) != "" assert "<participant_qos>" in str(the_qos) assert "</participant_qos>" in str(the_qos) min_length = len(str(the_qos)) the_qos << dds.EntityFactory(False) assert min_length != len(str(the_qos)) assert "<entity_factory>" in str(the_qos)
def test_set_qos_exception(): p = dds.DomainParticipant(DOMAIN_ID, dds.DomainParticipantQos()) qos = p.qos d = dds.Duration(77) db = dds.Database() db.shutdown_cleanup_period = d qos << db with pytest.raises(dds.ImmutablePolicyError): p.qos = qos
def test_participant_creation_w_qos(): user_data_values = [10, 11, 12, 13, 14, 15] qos = dds.DomainParticipantQos() qos.user_data.value = user_data_values qos.database.shutdown_cleanup_period = dds.Duration.from_milliseconds(100) p = dds.DomainParticipant(DOMAIN_ID, qos) retrieved_qos = p.qos assert retrieved_qos.user_data.value == user_data_values assert ( retrieved_qos.database.shutdown_cleanup_period == dds.Duration.from_milliseconds(100) )
def test_set_get_qos(): p = utils.create_participant() qos = p.qos assert qos.entity_factory.autoenable_created_entities qos << dds.EntityFactory.manually_enable() assert not (qos.entity_factory.autoenable_created_entities) p.qos = qos # assert qos == p.qos assert not (qos.entity_factory.autoenable_created_entities) qos << dds.EntityFactory.auto_enable() p << qos retrieved_qos = dds.DomainParticipantQos() p >> retrieved_qos assert retrieved_qos.entity_factory.autoenable_created_entities
def test_find_extensions(): p_qos = dds.DomainParticipantQos() p_qos << dds.EntityName("MyParticipant1") assert p_qos.participant_name.name == "MyParticipant1" p1 = dds.DomainParticipant(DOMAIN_ID, p_qos) assert p1.qos.participant_name.name == "MyParticipant1" p_qos << dds.EntityName("MyParticipant2") p2 = dds.DomainParticipant(DOMAIN_ID, p_qos) assert dds.DomainParticipant.find("MyParticipant1") == p1 assert dds.DomainParticipant.find("MyParticipant2") == p2 assert dds.DomainParticipant.find("MyParticipant3") == None
def test_retain_for_listener(set_after): listener = dds.NoOpDomainParticipantListener() if set_after: p = utils.create_participant() p.bind_listener(listener, dds.StatusMask.none()) else: p = dds.DomainParticipant(DOMAIN_ID, dds.DomainParticipantQos(), listener) def inner(): with dds.DomainParticipant.find(DOMAIN_ID) as new_p: assert new_p != None new_p.bind_listener(None, dds.StatusMask.none()) inner() assert dds.DomainParticipant.find(DOMAIN_ID) == None
def __init__(self, domain_id, use_dynamic_data, use_qos_object, use_custom_topic, use_replier_cft, use_pub_sub_args, use_callback_funcs, use_simple_replier): qos = dds.DomainParticipantQos() qos.database.shutdown_cleanup_period = dds.Duration.from_milliseconds( 100) self._participant = dds.DomainParticipant(domain_id, qos) if use_dynamic_data: self._type = get_keyed_string_dynamic_type() self.create_data_fnc = create_dynamic_rr_data self.parse_data_fnc = parse_dynamic_rr_data self.copy_sample_fnc = copy_dynamic_sample create_topic_func = create_dynamic_topic else: self._type = type_cls = dds.KeyedStringTopicType self.create_data_fnc = create_rr_data self.parse_data_fnc = parse_rr_data self.copy_sample_fnc = copy_sample create_topic_func = create_topic service_name = 'Test' if use_qos_object: request_writer_qos = request.Requester.default_writer_qos request_reader_qos = request.Replier.default_reader_qos reply_writer_qos = request.Replier.default_writer_qos reply_reader_qos = request.Requester.default_reader_qos else: request_writer_qos = request_reader_qos = reply_writer_qos = reply_reader_qos = None if use_custom_topic: # Test with custom Topic object request_topic = create_topic_func(self._participant, 'TestRequest') # Test with custom string Topic name reply_topic = 'TestReply' else: request_topic = reply_topic = None if use_replier_cft: replier_filter = dds.Filter("NOT (key MATCH 'filtered')") request_reader_topic = create_topic_func( self._participant, 'TestRequest') if request_topic is None else request_topic if isinstance(self._type, dds.DynamicType): request_reader_topic = dds.DynamicData.ContentFilteredTopic( request_reader_topic, 'request_cft', replier_filter) else: request_reader_topic = dds.KeyedStringTopicType.ContentFilteredTopic( request_reader_topic, 'request_cft', replier_filter) else: request_reader_topic = request_topic if use_pub_sub_args: publisher = dds.Publisher(self._participant) subscriber = dds.Subscriber(self._participant) else: publisher = subscriber = None self._cb = use_callback_funcs self._request_queue = queue.Queue() self._reply_queue = queue.Queue() if use_callback_funcs: def replier_callback(replier): for sample in (s for s in replier.take_requests() if s.info.valid): self._request_queue.put(self.copy_sample_fnc(sample)) def requester_callback(requester): for sample in (s for s in requester.take_replies() if s.info.valid): self._reply_queue.put(self.copy_sample_fnc(sample)) else: replier_callback = requester_callback = None self._requester = request.Requester(self._type, self._type, self._participant, service_name, request_topic, reply_topic, request_writer_qos, reply_reader_qos, publisher, subscriber, requester_callback) self._simple = use_simple_replier if use_simple_replier: def simple_replier_callback(request): key, value = self.parse_data_fnc(request) reply = self.create_data_fnc(key, value + ' reply') return reply self._replier = request.SimpleReplier( self._type, self._type, self._participant, simple_replier_callback, service_name, request_reader_topic, reply_topic, reply_writer_qos, request_reader_qos, publisher, subscriber) else: self._replier = request.Replier(self._type, self._type, self._participant, service_name, request_reader_topic, reply_topic, reply_writer_qos, request_reader_qos, publisher, subscriber, replier_callback)
def test_getters(): DEFAULT_PROFILE = "my_default_profile1" TEST_LIB = "my_test_library1" domain_participant_qos = dds.DomainParticipantQos() pub_qos = dds.PublisherQos() dw_qos = dds.DataWriterQos() sub_qos = dds.SubscriberQos() dr_qos = dds.DataWriterQos() topic_qos = dds.TopicQos() topic_a = "topic_A" topic_b = "topic_B" my_uri = LOCATION + "../xml/QosProviderTest_qos1.xml" qos_provider = dds.QosProvider(my_uri) my_other_profile_name = "my_other_profile1" assert qos_provider.default_library == TEST_LIB assert qos_provider.default_profile == DEFAULT_PROFILE assert qos_provider.default_profile_library == TEST_LIB domain_participant_qos = qos_provider.participant_qos assert domain_participant_qos.participant_name.name == "defaultParticipantName" pub_qos = qos_provider.publisher_qos assert pub_qos.entity_name.name == "defaultPublisherName" dw_qos = qos_provider.datawriter_qos assert dw_qos.entity_name.name == "defaultPublicationName" dw_qos = qos_provider.get_topic_datawriter_qos(topic_a) assert dw_qos.entity_name.name == "defaultPublicationNameA" dw_qos = qos_provider.get_topic_datawriter_qos(topic_b) assert dw_qos.entity_name.name == "defaultPublicationNameB" sub_qos = qos_provider.subscriber_qos assert sub_qos.entity_name.name == "defaultSubscriberName" dr_qos = qos_provider.datareader_qos assert dr_qos.entity_name.name == "defaultSubscriptionName" dr_qos = qos_provider.get_topic_datareader_qos(topic_a) assert dr_qos.entity_name.name == "defaultSubscriptionNameA" dr_qos = qos_provider.get_topic_datareader_qos(topic_b) assert dr_qos.entity_name.name == "defaultSubscriptionNameB" topic_qos = qos_provider.topic_qos assert topic_qos.resource_limits.max_samples == 100 topic_qos = qos_provider.get_topic_name_qos(topic_a) assert topic_qos.resource_limits.max_samples == 101 topic_qos = qos_provider.get_topic_name_qos(topic_b) assert topic_qos.resource_limits.max_samples == 102 # Start using my_other_profile_name domain_participant_qos = qos_provider.participant_qos_from_profile( my_other_profile_name) assert domain_participant_qos.participant_name.name == "otherParticipantName" pub_qos = qos_provider.publisher_qos_from_profile(my_other_profile_name) assert pub_qos.entity_name.name == "otherPublisherName" dw_qos = qos_provider.datawriter_qos_from_profile(my_other_profile_name) assert dw_qos.entity_name.name == "otherPublicationName" dw_qos = qos_provider.set_topic_datawriter_qos(my_other_profile_name, topic_a) assert dw_qos.entity_name.name == "otherPublicationNameA" dw_qos = qos_provider.set_topic_datawriter_qos(my_other_profile_name, topic_b) assert dw_qos.entity_name.name == "otherPublicationNameB" sub_qos = qos_provider.subscriber_qos_from_profile(my_other_profile_name) assert sub_qos.entity_name.name == "otherSubscriberName" dr_qos = qos_provider.datareader_qos_from_profile(my_other_profile_name) assert dr_qos.entity_name.name == "otherSubscriptionName" dr_qos = qos_provider.set_topic_datareader_qos(my_other_profile_name, topic_a) assert dr_qos.entity_name.name == "otherSubscriptionNameA" dr_qos = qos_provider.set_topic_datareader_qos(my_other_profile_name, topic_b) assert dr_qos.entity_name.name == "otherSubscriptionNameB" topic_qos = qos_provider.topic_qos_from_profile(my_other_profile_name) assert topic_qos.resource_limits.max_samples == 200 topic_qos = qos_provider.set_topic_name_qos(my_other_profile_name, topic_a) assert topic_qos.resource_limits.max_samples == 201 topic_qos = qos_provider.set_topic_name_qos(my_other_profile_name, topic_b) assert topic_qos.resource_limits.max_samples == 202
def test_participant_creation_failure(): qos = dds.DomainParticipantQos() qos.resource_limits.type_object_max_serialized_length = -2 with pytest.raises(dds.Error): dds.DomainParticipant(0, qos)
def test_participant_creation_w_listener(): l = dds.NoOpDomainParticipantListener() p = dds.DomainParticipant(DOMAIN_ID, dds.DomainParticipantQos(), l) assert p.listener == l p.close()
def test_participant_creation_w_default_qos(): p = dds.DomainParticipant(DOMAIN_ID, dds.DomainParticipantQos()) assert p.domain_id == DOMAIN_ID event_count = p.qos.event.max_count assert event_count == dds.Event().max_count
def scope_1(): p1 = utils.create_participant() p2 = dds.DomainParticipant(id2, dds.DomainParticipantQos()) p1.retain()
def create_participant(domain_id=0): qos = dds.DomainParticipantQos() qos.database.shutdown_cleanup_period = dds.Duration.from_milliseconds(10) return dds.DomainParticipant(domain_id, qos)