Stream delay results as candidates complete
This commit is contained in:
@@ -163,6 +163,37 @@ class ProxyMonitorTUITests(unittest.TestCase):
|
||||
)
|
||||
self.assertEqual(recommended, "fast")
|
||||
|
||||
def test_delay_results_are_yielded_before_slower_candidates_finish(self) -> None:
|
||||
class ControlledClient:
|
||||
def __init__(self) -> None:
|
||||
self.slow_started = threading.Event()
|
||||
self.release_slow = threading.Event()
|
||||
|
||||
def measure_delay(self, _target: str, candidate: str, **_kwargs: object) -> int:
|
||||
if candidate == "slow":
|
||||
self.slow_started.set()
|
||||
self.release_slow.wait(timeout=2)
|
||||
return 300
|
||||
self.slow_started.wait(timeout=2)
|
||||
return 42
|
||||
|
||||
client = ControlledClient()
|
||||
stream = self.mod.iter_measure_candidates(
|
||||
client,
|
||||
"pc",
|
||||
["slow", "fast"],
|
||||
test_url="https://www.gstatic.com/generate_204",
|
||||
timeout_ms=5000,
|
||||
concurrency=2,
|
||||
)
|
||||
try:
|
||||
candidate, result = next(stream)
|
||||
self.assertEqual(candidate, "fast")
|
||||
self.assertEqual(result, (42, "42 ms"))
|
||||
finally:
|
||||
client.release_slow.set()
|
||||
self.assertEqual(list(stream), [("slow", (300, "300 ms"))])
|
||||
|
||||
def test_machine_rows_preserve_monitor_order_and_status(self) -> None:
|
||||
rows = self.mod.normalize_machine_rows(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user