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
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)
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]
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
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
# 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)