def test__advance_tasklet_bad_yield(): def generator_function(): yield 42 generator = generator_function() future = tasklets.TaskletFuture(generator) with pytest.raises(RuntimeError): future._advance_tasklet()
def test__advance_tasklet_parallel_yield(): def generator_function(*dependent): yield dependents dependents = (tasklets.Future(), tasklets.Future()) generator = generator_function(dependents) future = tasklets.TaskletFuture(generator) with pytest.raises(NotImplementedError): future._advance_tasklet()
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(): def generator_function(dependency): some_value = yield dependency return some_value + 42 dependency = tasklets.Future() generator = generator_function(dependency) future = tasklets.TaskletFuture(generator) future._advance_tasklet() dependency.set_result(21) assert future.result() == 63
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__advance_tasklet_generator_raises(): error = Exception("Spurious error.") def generator_function(): yield raise error generator = generator_function() next(generator) # skip ahead to return future = tasklets.TaskletFuture(generator) future._advance_tasklet() assert future.exception() is error
def test__advance_tasklet_dependency_raises(): def generator_function(dependency): yield dependency error = Exception("Spurious error.") dependency = tasklets.Future() generator = generator_function(dependency) future = tasklets.TaskletFuture(generator) future._advance_tasklet() dependency.set_exception(error) assert future.exception() is error with pytest.raises(Exception): future.result()
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_constructor(): generator = object() future = tasklets.TaskletFuture(generator) assert future.generator is generator