def test_batched_successful_call_explicit_loop(framework_aio): ''' batched calls really happen in batches ''' # Trollius doesn't come with this, so won't work on py2 pytest.importorskip('asyncio.test_utils') from asyncio.test_utils import TestLoop def time_gen(): yield yield new_loop = TestLoop(time_gen) calls = [] def foo(*args, **kw): calls.append((args, kw)) txa = txaio.with_config(loop=new_loop) batched = txa.make_batched_timer(5) batched.call_later(1, foo, "first call") new_loop.advance_time(2.0) new_loop._run_once() assert len(calls) == 1
def test_create_future_explicit_loop(framework): """ process events on alternate loop= for create_future later """ pytest.importorskip('asyncio') if txaio.using_twisted: pytest.skip() import asyncio alt_loop = asyncio.new_event_loop() txa = txaio.with_config(loop=alt_loop) f = txa.create_future() results = [] f.add_done_callback(lambda r: results.append(r.result())) assert results == [] txaio.resolve(f, 'some result') # run_once() runs the txaio.config.loop so we shouldn't get any # results until we spin alt_loop assert results == [] run_once() assert results == [] with replace_loop(alt_loop): run_once() assert results == ['some result']
def test_create_future_failure_explicit_loop(framework): """ process events on alternate loop= for create_future later """ pytest.importorskip('asyncio') if txaio.using_twisted: pytest.skip() import asyncio alt_loop = asyncio.new_event_loop() the_exception = Exception('bad') txa = txaio.with_config(loop=alt_loop) f = txa.create_future_error(the_exception) results = [] def boom(r): try: results.append(r.result()) except Exception as e: results.append(e) f.add_done_callback(boom) # run_once() runs the txaio.config.loop so we shouldn't get any # results until we spin alt_loop assert results == [] run_once() assert results == [] with replace_loop(alt_loop): run_once() assert results == [the_exception]
def __init__(self, loop=None): self._txa = txaio.with_config(loop=loop)