@@ -141,10 +141,11 @@ async def test_listen_too_fast(pub: Publisher, sub: aros.Sub[String]):
141141 last_payload = f"hello{ sample_count } "
142142 pub .publish (String (data = last_payload ))
143143 put_count += 1
144+ await asyncio .sleep (0.001 )
144145 last_payload = f"hello{ sample_count } "
145146 pub .publish (String (data = last_payload ))
146147 put_count += 1
147- await asyncio .sleep (0.01 )
148+ await asyncio .sleep (0.001 )
148149
149150 assert put_count / 2 == sample_count == max_iter
150151
@@ -172,8 +173,9 @@ async def test_reliable_too_fast(pub: Publisher, sub: aros.Sub[String]):
172173 put_queue = [str (v ) for v in data ]
173174 received_buf = []
174175 listener = sub .listen_reliable (fresh = True , queue_size = len (data ) * 2 )
175- await asyncio .sleep (0.1 )
176+ await asyncio .sleep (0.001 )
176177 pub .publish (String (data = put_queue .pop ()))
178+ await asyncio .sleep (0.001 )
177179 pub .publish (String (data = put_queue .pop ()))
178180 async with soft_timeout (2 ):
179181 async for sample in listener :
@@ -183,12 +185,35 @@ async def test_reliable_too_fast(pub: Publisher, sub: aros.Sub[String]):
183185 break
184186 if put_queue != []:
185187 pub .publish (String (data = put_queue .pop ()))
188+ await asyncio .sleep (0.001 )
186189 if put_queue != []:
187190 pub .publish (String (data = put_queue .pop ()))
191+ await asyncio .sleep (0.001 )
188192
189193 received_buf .reverse ()
190194 assert data == received_buf
191195
196+ async def test_reliable_extremely_fast (pub : Publisher , sub : aros .Sub [String ]):
197+ data = list (range (200 ))
198+ put_queue = [str (v ) for v in data ]
199+ received_buf = []
200+ listener = sub .listen_reliable (fresh = True , queue_size = len (data ) * 2 )
201+ pub .publish (String (data = put_queue .pop ()))
202+ pub .publish (String (data = put_queue .pop ()))
203+ async with soft_timeout (2 ):
204+ async for sample in listener :
205+ payload = int (sample .data )
206+ received_buf .append (payload )
207+ if len (received_buf ) >= len (data ):
208+ break
209+ if put_queue != []:
210+ pub .publish (String (data = put_queue .pop ()))
211+ if put_queue != []:
212+ pub .publish (String (data = put_queue .pop ()))
213+
214+ received_buf .reverse ()
215+ assert set (data ) == set (received_buf )
216+
192217
193218async def test_freshness (pub : Publisher , sub : aros .Sub [String ]):
194219 payload = "hello"
0 commit comments