def test_callback_reset(): 'We want to restart.' called = False p_total = None p_processed = None p_downloaded = None p_failed = None def call_me(total: Optional[int], processed: int, downloaded: int, failed: int): nonlocal called, p_total, p_processed, p_downloaded, p_failed called = True p_total = total p_processed = processed p_downloaded = downloaded p_failed = failed u = _status_update_wrapper(call_me) u.update(processed=10) u.update(downloaded=2) u.update(failed=1) u.update(remaining=2) u.reset() u.update(processed=10) u.update(downloaded=2) u.update(remaining=2) u.broadcast() assert called assert p_total == 12 assert p_downloaded == 2 assert p_processed == 10 assert p_failed == 0
def test_callback_everything(): 'Sometimes Servicex gets called when there is no total yet.' called = False p_total = None p_processed = None p_downloaded = None p_failed = None def call_me(total: Optional[int], processed: int, downloaded: int, failed: int): nonlocal called, p_total, p_processed, p_downloaded, p_failed called = True p_total = total p_processed = processed p_downloaded = downloaded p_failed = failed u = _status_update_wrapper(call_me) u.update(processed=10) u.update(downloaded=2) u.update(failed=1) u.update(remaining=1) u.broadcast() assert called assert p_total == 12 assert p_downloaded == 2 assert p_processed == 10 assert p_failed == 1
def test_callback_none(): 'What if there is no callback?' u = _status_update_wrapper(None) u.update(processed=10) u.update(downloaded=3) u.update(remaining=12) u.update(failed=1) u.broadcast()
def test_callback_no_updates(): called = False def call_me(total: Optional[int], processed: int, downloaded: int, failed: int): nonlocal called called = True u = _status_update_wrapper(call_me) u.broadcast()
async def test_transform_sequence(): u = _status_update_wrapper() v = [ i async for i in stream_status_updates( as_async_seq([(1, 0, 0), (0, 1, 0)]), u) ] assert len(v) == 2 assert u.failed == 0 assert u.total == 1
def test_callback_with_total_sequence(): 'Make sure we can del with multiple things at once' p_total = None def call_me(total: Optional[int], processed: int, downloaded: int, failed: int): nonlocal p_total p_total = total u = _status_update_wrapper(call_me) u.update(processed=0, remaining=6) u.update(processed=2, remaining=4) u.broadcast() assert p_total == 6
def test_callback_with_total_fluctuation(): 'Sometimes we get the total wrong..' p_total = None def call_me(total: Optional[int], processed: int, downloaded: int, failed: int): nonlocal p_total p_total = total u = _status_update_wrapper(call_me) u.update(processed=6, remaining=6) u.broadcast() assert p_total == 12 u.update(processed=6, remaining=5) u.broadcast() assert p_total == 12 u.update(processed=7, remaining=6) u.broadcast() assert p_total == 13
def test_callback_inc_with_nothing(): called = False p_total = None p_processed = None p_downloaded = None p_failed = None def call_me(total: Optional[int], processed: int, downloaded: int, failed: int): nonlocal called, p_total, p_processed, p_downloaded, p_failed called = True p_total = total p_processed = processed p_downloaded = downloaded p_failed = failed u = _status_update_wrapper(call_me) u.inc(downloaded=3) u.broadcast() assert p_downloaded == 3