Exemple #1
0
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)
Exemple #2
0
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
Exemple #3
0
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)
    )
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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)
Exemple #8
0
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
Exemple #9
0
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)
Exemple #10
0
def test_participant_creation_w_listener():
    l = dds.NoOpDomainParticipantListener()
    p = dds.DomainParticipant(DOMAIN_ID, dds.DomainParticipantQos(), l)
    assert p.listener == l
    p.close()
Exemple #11
0
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
Exemple #12
0
 def scope_1():
     p1 = utils.create_participant()
     p2 = dds.DomainParticipant(id2, dds.DomainParticipantQos())
     p1.retain()
Exemple #13
0
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)