def test_publish_subscribe(self): t1 = '/pubsub_1' t2 = '/pubsub_2' pub = ProxyPublisher({t1: String}) pub = ProxyPublisher({t2: String}, _latch=True) sub = ProxySubscriberCached({t1: String}) self.assertTrue(pub.is_available(t1)) self.assertTrue(pub.wait_for_any(t1)) self.assertFalse(pub.wait_for_any(t2)) pub.publish(t1, String('1')) pub.publish(t2, String('2')) rospy.sleep( .5) # make sure latched message is sent before subscriber is added sub = ProxySubscriberCached({t2: String}) rospy.sleep( .5) # make sure latched message can be received before checking self.assertTrue(sub.has_msg(t1)) self.assertEqual(sub.get_last_msg(t1).data, '1') sub.remove_last_msg(t1) self.assertFalse(sub.has_msg(t1)) self.assertIsNone(sub.get_last_msg(t1)) self.assertTrue(sub.has_msg(t2)) self.assertEqual(sub.get_last_msg(t2).data, '2')
def test_subscribe_buffer(self): t1 = '/buffered_1' pub = ProxyPublisher({t1: String}) sub = ProxySubscriberCached({t1: String}) sub.enable_buffer(t1) self.assertTrue(pub.wait_for_any(t1)) pub.publish(t1, String('1')) pub.publish(t1, String('2')) rospy.sleep(.5) # make sure messages can be received self.assertTrue(sub.has_msg(t1)) self.assertTrue(sub.has_buffered(t1)) self.assertEqual(sub.get_from_buffer(t1).data, '1') pub.publish(t1, String('3')) rospy.sleep(.5) # make sure messages can be received self.assertEqual(sub.get_from_buffer(t1).data, '2') self.assertEqual(sub.get_from_buffer(t1).data, '3') self.assertIsNone(sub.get_from_buffer(t1)) self.assertFalse(sub.has_buffered(t1))