Exemplo n.º 1
0
 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"
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    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()
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
    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()
Exemplo n.º 12
0
    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
Exemplo n.º 13
0
    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
Exemplo n.º 14
0
    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!"
Exemplo n.º 15
0
 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