Skip to content

Commit 674b81e

Browse files
committed
Make Metronome tests fast
1 parent d0fead2 commit 674b81e

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

tests/test_producers.py

+16-15
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
from time import time
2+
13
import pytest
24
import trio
35

46
from slurry import Pipeline
5-
from slurry.sections import Repeat, Metronome, InsertValue
7+
from slurry.sections import Repeat, Metronome, InsertValue, _producers
68

79
from .fixtures import produce_alphabet
810

@@ -51,32 +53,31 @@ async def test_repeat_input(autojump_clock):
5153
break
5254
assert results == [('a', 1), ('a', 2), ('b', 2.5), ('b', 3.5), ('c', 4)]
5355

54-
async def test_metronome():
56+
async def test_metronome(autojump_clock, monkeypatch):
57+
monkeypatch.setattr(_producers, "time", trio.current_time)
5558
async with Pipeline.create(
56-
produce_alphabet(5, max=3),
59+
produce_alphabet(5, max=6, delay=1),
5760
Metronome(5)
5861
) as pipeline, pipeline.tap() as aiter:
5962
results = []
6063
start_time = trio.current_time()
61-
async for item in aiter:
62-
results.append((item, trio.current_time() - start_time))
63-
if len(results) == 2:
64+
while True:
65+
try:
66+
results.append((await aiter.__anext__(), trio.current_time() - start_time))
67+
except StopAsyncIteration:
6468
break
65-
assert [x[0] for x in results] == ['a', 'b']
66-
assert 5 - results[1][1] + results[0][1] < 0.1
69+
assert results == [(letter, 5.0 * (i + 1)) for i, letter in enumerate("abcde")]
6770

68-
async def test_metronome_no_input():
71+
async def test_metronome_no_input(autojump_clock, monkeypatch):
72+
monkeypatch.setattr(_producers, "time", trio.current_time)
6973
async with Pipeline.create(
7074
Metronome(5, "a")
7175
) as pipeline, pipeline.tap() as aiter:
7276
results = []
7377
start_time = trio.current_time()
74-
async for item in aiter:
75-
results.append((item, trio.current_time() - start_time))
76-
if len(results) == 2:
77-
break
78-
assert [x[0] for x in results] == ['a', 'a']
79-
assert 5 - results[1][1] + results[0][1] < 0.1
78+
for _ in range(5):
79+
results.append((await aiter.__anext__(), trio.current_time() - start_time))
80+
assert results == [("a", 5.0 * (i + 1)) for i in range(5)]
8081

8182
async def test_insert_value(autojump_clock):
8283
async with Pipeline.create(

0 commit comments

Comments
 (0)