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()
示例#2
0
    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