Exemplo n.º 1
0
def test_reader_resizebuffer():
    dp = DomainParticipant(0)
    tp = Topic(dp, "Message__DONOTPUBLISH", Message)
    sub = Subscriber(dp)
    dr = DataReader(sub, tp)

    assert len(dr.read(N=100)) == 0
    assert len(dr.read(N=200)) == 0
    assert len(dr.read(N=100)) == 0
Exemplo n.º 2
0
def test_reader_invalid():
    dp = DomainParticipant(0)
    tp = Topic(dp, "Message__DONOTPUBLISH", Message)
    sub = Subscriber(dp)
    dr = DataReader(sub, tp)

    with pytest.raises(TypeError):
        dr.read(-1)

    with pytest.raises(TypeError):
        dr.take(-1)
Exemplo n.º 3
0
def test_dynamic_subscribe(common_setup):
    type_id = common_setup.tp.data_type.__idl__.get_type_id()

    dp = DomainParticipant(common_setup.dp.domain_id)
    datatype, _ = get_types_for_typeid(dp, type_id, duration(seconds=1))
    assert datatype

    tp = Topic(dp, common_setup.tp.name, datatype)
    dr = DataReader(dp, tp)

    common_setup.dw.write(common_setup.msg)

    assert dr.read()[0].message == common_setup.msg.message
def test_keyed_type_alignment():
    dp = DomainParticipant()
    tp = Topic(dp, "Test", KeyedArrayType)
    dw = DataWriter(dp, tp)
    dr = DataReader(dp, tp)

    samp1 = KeyedArrayType(['u' * 17, 's' * 13, 'b' * 23],
                           ['u' * 3, 's' * 5, 'b' * 7], [-1] * 3, [-1] * 3,
                           [-1] * 3, [-1] * 3)

    dw.write(samp1)
    samp2 = dr.read()[0]
    assert KeyedArrayType.cdr.key(samp1) == KeyedArrayType.cdr.key(samp2)
def test_readcondition_read(common_setup):
    tp = Topic(common_setup.dp, "hi_sayer", MessageKeyed)
    dr = DataReader(common_setup.dp, tp)
    dw = DataWriter(common_setup.dp, tp)
    rc = ReadCondition(dr, SampleState.Any | ViewState.Any | InstanceState.NotAliveDisposed)

    assert not rc.triggered

    messages = [MessageKeyed(user_id=i, message=f"Hi {i}!") for i in range(5)]
    for m in messages:
        dw.write(m)

    received = dr.read(N=5)

    assert messages == received

    dw.dispose(messages[1])
    assert rc.triggered

    received = dr.read(condition=rc)

    assert len(received) == 1 and received[0] == messages[1]
Exemplo n.º 6
0
def test_dynamic_publish_complex():
    dp = DomainParticipant()
    tp = Topic(dp, 'DynTest', XStruct)
    rd = DataReader(dp, tp)

    type_id = XStruct.__idl__.get_type_id()
    datatype, tmap = get_types_for_typeid(dp, type_id, duration(seconds=1))
    assert datatype
    assert datatype.__idl__.get_type_id() == XStruct.__idl__.get_type_id()

    tp = Topic(dp, 'DynTest', datatype)
    wr = DataWriter(dp, tp)

    wr.write(datatype(A=tmap['XUnion'](A=tmap['XEnum'].V1), k=1))

    assert rd.read()[0].k == 1
Exemplo n.º 7
0
def test_dynamic_subscribe_complex():
    dp = DomainParticipant()
    tp = Topic(dp, 'DynTest', XStruct)
    wr = DataWriter(dp, tp)

    type_id = XStruct.__idl__.get_type_id()
    datatype, tmap = get_types_for_typeid(dp, type_id, duration(seconds=1))
    assert datatype
    assert datatype.__idl__.get_type_id() == XStruct.__idl__.get_type_id()

    tp = Topic(dp, 'DynTest', datatype)
    dr = DataReader(dp, tp)

    wr.write(XStruct(A=XUnion(A=XEnum.V1), k=1))

    assert dr.read()[0].k == 1
Exemplo n.º 8
0

# Define a HelloWorld datatype with one member, data, with as type 'string'
# In IDL this would be defined as "struct HelloWorld { string data; };"
@dataclass
class HelloWorld(IdlStruct, typename="HelloWorld.Msg"):
    data: str


# Create a DomainParticipant, your entrypoint to DDS
# The default domain id is 0.
dp = DomainParticipant()

# Create a Topic with topic name "Hello" and as datatype "HelloWorld" structs.
tp = Topic(dp, "Hello", HelloWorld)

# Create a DataWriter that can send structs on the "Hello" topic
dw = DataWriter(dp, tp)

# Create a DataReader that can receive structs on the "Hello" topic
dr = DataReader(dp, tp)

# Create a HelloWorld sample and write it to the network
sample = HelloWorld(data='Hello, World!')
dw.write(sample)

# Read samples from the network and print the data in the first one
# This should print "Hello, World!"
sample = dr.read()[0]
print(sample.data)