def test_constructor(): generator = object() context = object() future = tasklets._TaskletFuture(generator, context) assert future.generator is generator assert future.context is context assert future.info == "Unknown"
def test_cancel_not_waiting(in_context): dependency = tasklets.Future() future = tasklets._TaskletFuture(None, in_context) future.cancel() assert not dependency.cancelled() with pytest.raises(exceptions.Cancelled): future.result()
def test__advance_tasklet_bad_yield(in_context): def generator_function(): yield 42 generator = generator_function() future = tasklets._TaskletFuture(generator, in_context) with pytest.raises(RuntimeError): future._advance_tasklet()
def test__advance_tasklet_return(in_context): def generator_function(): yield raise tasklets.Return(42) generator = generator_function() next(generator) # skip ahead to return future = tasklets._TaskletFuture(generator, in_context) future._advance_tasklet() assert future.result() == 42
def test__advance_tasklet_return(): def generator_function(): yield return 42 generator = generator_function() next(generator) # skip ahead to return future = tasklets._TaskletFuture(generator) future._advance_tasklet() assert future.result() == 42
def test__advance_tasklet_dependency_returns(in_context): def generator_function(dependency): some_value = yield dependency raise tasklets.Return(some_value + 42) dependency = tasklets.Future() generator = generator_function(dependency) future = tasklets._TaskletFuture(generator, in_context) future._advance_tasklet() dependency.set_result(21) assert future.result() == 63
def test__advance_tasklet_generator_raises(in_context): error = Exception("Spurious error.") def generator_function(): yield raise error generator = generator_function() next(generator) # skip ahead to return future = tasklets._TaskletFuture(generator, in_context) future._advance_tasklet() assert future.exception() is error
def test__advance_tasklet_parallel_yield(): def generator_function(dependencies): one, two = yield dependencies return one + two dependencies = (tasklets.Future(), tasklets.Future()) generator = generator_function(dependencies) future = tasklets._TaskletFuture(generator) future._advance_tasklet() dependencies[0].set_result(8) dependencies[1].set_result(3) assert future.result() == 11
def test_cancel_waiting_on_dependency(in_context): def generator_function(dependency): yield dependency dependency = tasklets.Future() generator = generator_function(dependency) future = tasklets._TaskletFuture(generator, in_context) future._advance_tasklet() future.cancel() assert dependency.cancelled() with pytest.raises(exceptions.Cancelled): future.result()
def test__advance_tasklet_parallel_yield(in_context): def generator_function(dependencies): one, two = yield dependencies raise tasklets.Return(one + two) dependencies = (tasklets.Future(), tasklets.Future()) generator = generator_function(dependencies) future = tasklets._TaskletFuture(generator, in_context) future._advance_tasklet() dependencies[0].set_result(8) dependencies[1].set_result(3) assert future.result() == 11 assert future.context is in_context
def test__advance_tasklet_dependency_raises(in_context): def generator_function(dependency): yield dependency error = Exception("Spurious error.") dependency = tasklets.Future() generator = generator_function(dependency) future = tasklets._TaskletFuture(generator, in_context) future._advance_tasklet() dependency.set_exception(error) assert future.exception() is error with pytest.raises(Exception): future.result()
def test__advance_tasklet_yields_rpc(in_context): def generator_function(dependency): value = yield dependency raise tasklets.Return(value + 3) dependency = mock.Mock(spec=_remote.RemoteCall) dependency.exception.return_value = None dependency.result.return_value = 8 generator = generator_function(dependency) future = tasklets._TaskletFuture(generator, in_context) future._advance_tasklet() callback = dependency.add_done_callback.call_args[0][0] callback(dependency) _eventloop.run() assert future.result() == 11
def test__advance_tasklet_yields_rpc(): def generator_function(dependency): value = yield dependency return value + 3 dependency = mock.Mock(spec=grpc.Future) dependency.exception.return_value = None dependency.result.return_value = 8 generator = generator_function(dependency) future = tasklets._TaskletFuture(generator) future._advance_tasklet() callback = dependency.add_done_callback.call_args[0][0] callback(dependency) _eventloop.run() assert future.result() == 11
def test__advance_tasklet_dependency_raises_with_try_except(in_context): def generator_function(dependency, error_handler): try: yield dependency except Exception: result = yield error_handler raise tasklets.Return(result) error = Exception("Spurious error.") dependency = tasklets.Future() error_handler = tasklets.Future() generator = generator_function(dependency, error_handler) future = tasklets._TaskletFuture(generator, in_context) future._advance_tasklet() dependency.set_exception(error) assert future.running() error_handler.set_result("hi mom!") assert future.result() == "hi mom!"
def test___repr__(): future = tasklets._TaskletFuture(None, None, info="Female") assert repr(future) == "_TaskletFuture('Female') <{}>".format( id(future))
def test_constructor(): generator = object() future = tasklets._TaskletFuture(generator) assert future.generator is generator