def test_liveliness(manual_setup, hitpoint_factory): handler = hitpoint_factory() alive = hitpoint_factory() notalive = hitpoint_factory() class MyListenerWriter(Listener): def on_liveliness_lost(self, writer, status): handler.hit(data=timestamp.now()) class MyListenerReader(Listener): def on_liveliness_changed(self, reader, status): if status.alive_count == 1: alive.hit(data=status.alive_count_change) else: notalive.hit(data=status.alive_count_change) qos = Qos(Policy.Liveliness.ManualByTopic(duration(seconds=0.2)), Policy.Ownership.Exclusive) manual_setup.tp(qos=qos) manual_setup.dr(listener=MyListenerReader()) datawriter = manual_setup.dw(listener=MyListenerWriter()) write_time = timestamp.now() datawriter.write(manual_setup.msg) assert handler.was_hit() assert handler.data - write_time >= duration(seconds=0.2) assert alive.was_hit() and alive.data == 1 assert notalive.was_hit() and notalive.data == -1
def test_on_requested_deadline_missed(manual_setup, hitpoint): class MyListener(Listener): def on_requested_deadline_missed(self, reader, status): hitpoint.hit(data=timestamp.now()) qos = Qos(Policy.Deadline(duration(seconds=0.2))) datawriter = manual_setup.dw(qos=qos) manual_setup.dr(qos=qos, listener=MyListener()) write_time = timestamp.now() datawriter.write(manual_setup.msg) assert hitpoint.was_hit() assert hitpoint.data - write_time >= duration(seconds=0.2)
def test_on_sample_lost(manual_setup, hitpoint): class MyListener(Listener): def on_sample_lost(self, reader, status): hitpoint.hit() qos = Qos(Policy.DestinationOrder.BySourceTimestamp) datawriter = manual_setup.dw(qos=qos) datareader = manual_setup.dr(qos=qos, listener=MyListener()) t1 = timestamp.now() t2 = t1 + duration(seconds=1) datawriter.write(manual_setup.msg, timestamp=t2) datareader.take() datawriter.write(manual_setup.msg, timestamp=t1) assert hitpoint.was_hit()
def on_offered_deadline_missed(self, writer, status): hitpoint.hit(data=timestamp.now())
def on_requested_deadline_missed(self, reader, status): hitpoint.hit(data=timestamp.now())
def on_liveliness_lost(self, writer, status): handler.hit(data=timestamp.now())