Exemplo n.º 1
0
 def f():
     # callbacks run at different times
     responses = yield gen.multi_future([
         gen.Task(self.delay_callback, 3, arg="v1"),
         gen.Task(self.delay_callback, 1, arg="v2"),
     ])
     self.assertEqual(responses, ["v1", "v2"])
     self.stop()
Exemplo n.º 2
0
 def f():
     # callbacks run at different times
     responses = yield gen.Multi(dict(
         foo=gen.Task(self.delay_callback, 3, arg="v1"),
         bar=gen.Task(self.delay_callback, 1, arg="v2"),
     ))
     self.assertEqual(responses, dict(foo="v1", bar="v2"))
     self.stop()
Exemplo n.º 3
0
 def capitalize(self, request_data, callback):
     logging.info('capitalize')
     stream = IOStream(socket.socket(), io_loop=self.io_loop)
     logging.info('connecting')
     yield gen.Task(stream.connect, ('127.0.0.1', self.port))
     stream.write(utf8(request_data + '\n'))
     logging.info('reading')
     data = yield gen.Task(stream.read_until, b'\n')
     logging.info('returning')
     stream.close()
     callback(self.process_response(data))
Exemplo n.º 4
0
 def test_pass_callback(self):
     @gen.coroutine
     def f():
         raise gen.Return(42)
     result = yield gen.Task(f)
     self.assertEqual(result, 42)
     self.finished = True
Exemplo n.º 5
0
        def outer():
            for i in range(10):
                yield gen.Task(inner)

            stack_increase = _stack_depth() - initial_stack_depth
            self.assertTrue(stack_increase <= 2)
            self.stop()
Exemplo n.º 6
0
        def f():
            (yield gen.Callback("noargs"))()
            self.assertEqual((yield gen.Wait("noargs")), None)
            (yield gen.Callback("1arg"))(42)
            self.assertEqual((yield gen.Wait("1arg")), 42)

            (yield gen.Callback("kwargs"))(value=42)
            result = yield gen.Wait("kwargs")
            self.assertTrue(isinstance(result, gen.Arguments))
            self.assertEqual(((), dict(value=42)), result)
            self.assertEqual(dict(value=42), result.kwargs)

            (yield gen.Callback("2args"))(42, 43)
            result = yield gen.Wait("2args")
            self.assertTrue(isinstance(result, gen.Arguments))
            self.assertEqual(((42, 43), {}), result)
            self.assertEqual((42, 43), result.args)

            def task_func(callback):
                callback(None, error="foo")
            result = yield gen.Task(task_func)
            self.assertTrue(isinstance(result, gen.Arguments))
            self.assertEqual(((None,), dict(error="foo")), result)

            self.stop()
Exemplo n.º 7
0
 def test_multi_mixed_types(self):
     # A YieldPoint (Wait) and Future (Task) can be combined
     # (and use the YieldPoint codepath)
     (yield gen.Callback("k1"))("v1")
     responses = yield [gen.Wait("k1"),
                        gen.Task(self.delay_callback, 3, arg="v2")]
     self.assertEqual(responses, ["v1", "v2"])
Exemplo n.º 8
0
 def resolve(self, host, port, family=0):
     # getHostByName doesn't accept IP addresses, so if the input
     # looks like an IP address just return it immediately.
     if twisted.internet.abstract.isIPAddress(host):
         resolved = host
         resolved_family = socket.AF_INET
     elif twisted.internet.abstract.isIPv6Address(host):
         resolved = host
         resolved_family = socket.AF_INET6
     else:
         deferred = self.resolver.getHostByName(utf8(host))
         resolved = yield gen.Task(deferred.addBoth)
         if isinstance(resolved, failure.Failure):
             try:
                 resolved.raiseException()
             except twisted.names.error.DomainError as e:
                 raise IOError(e)
         elif twisted.internet.abstract.isIPAddress(resolved):
             resolved_family = socket.AF_INET
         elif twisted.internet.abstract.isIPv6Address(resolved):
             resolved_family = socket.AF_INET6
         else:
             resolved_family = socket.AF_UNSPEC
     if family != socket.AF_UNSPEC and family != resolved_family:
         raise Exception('Requested socket family %d but got %d' %
                         (family, resolved_family))
     result = [
         (resolved_family, (resolved, port)),
     ]
     raise gen.Return(result)
Exemplo n.º 9
0
 def test_multi_performance(self):
     # Yielding a list used to have quadratic performance; make
     # sure a large list stays reasonable.  On my laptop a list of
     # 2000 used to take 1.8s, now it takes 0.12.
     start = time.time()
     yield [gen.Task(self.io_loop.add_callback) for i in range(2000)]
     end = time.time()
     self.assertLess(end - start, 1.0)
Exemplo n.º 10
0
 def f(callback):
     yield gen.Task(self.io_loop.add_callback)
     try:
         1 / 0
     except ZeroDivisionError:
         self.expected_frame = traceback.extract_tb(
             sys.exc_info()[2], limit=1)[0]
         raise
Exemplo n.º 11
0
 def f2():
     (yield gen.Callback(1))()
     yield gen.Wait(1)
     self.io_loop.add_callback(lambda: 1 / 0)
     try:
         yield gen.Task(self.io_loop.add_timeout,
                        self.io_loop.time() + 10)
     except ZeroDivisionError:
         raise gen.Return(42)
Exemplo n.º 12
0
 def f():
     class Foo(object):
         pass
     arg = Foo()
     self.arg_ref = weakref.ref(arg)
     task = gen.Task(self.io_loop.add_callback, arg=arg)
     self.task_ref = weakref.ref(task)
     yield task
     self.stop()
Exemplo n.º 13
0
 def outer():
     for i in range(10):
         try:
             yield gen.Task(inner)
         except ZeroDivisionError:
             pass
     stack_increase = len(stack_context._state.contexts) - initial_stack_depth
     self.assertTrue(stack_increase <= 2)
     self.stop()
Exemplo n.º 14
0
 def get(self):
     # TODO: would be nice to go through the login flow instead of
     # cheating with a hard-coded access token.
     response = yield gen.Task(self.twitter_request,
                               '/users/show/%s' % self.get_argument('name'),
                               access_token=dict(key='hjkl', secret='vbnm'))
     if response is None:
         self.set_status(500)
         self.finish('error from twitter request')
     else:
         self.finish(response)
Exemplo n.º 15
0
    def get(self):
        io_loop = self.request.connection.stream.io_loop
        # Test the interaction of the two stack_contexts.

        def fail_task(callback):
            io_loop.add_callback(lambda: 1 / 0)
        try:
            yield gen.Task(fail_task)
            raise Exception("did not get expected exception")
        except ZeroDivisionError:
            self.finish('ok')
Exemplo n.º 16
0
 def test_body_size_override_reset(self):
     # The max_body_size override is reset between requests.
     stream = IOStream(socket.socket())
     try:
         yield stream.connect(('127.0.0.1', self.get_http_port()))
         # Use a raw stream so we can make sure it's all on one connection.
         stream.write(b'PUT /streaming?expected_size=10240 HTTP/1.1\r\n'
                      b'Content-Length: 10240\r\n\r\n')
         stream.write(b'a' * 10240)
         headers, response = yield gen.Task(read_stream_body, stream)
         self.assertEqual(response, b'10240')
         # Without the ?expected_size parameter, we get the old default value
         stream.write(b'PUT /streaming HTTP/1.1\r\n'
                      b'Content-Length: 10240\r\n\r\n')
         with ExpectLog(gen_log, '.*Content-Length too long'):
             data = yield stream.read_until_close()
         self.assertEqual(data, b'')
     finally:
         stream.close()
Exemplo n.º 17
0
 def test(self):
     yield gen.Task(self.io_loop.add_timeout, self.io_loop.time() + 1)
Exemplo n.º 18
0
 def test_async(self):
     yield gen.Task(self.io_loop.add_callback)
     self.finished = True
Exemplo n.º 19
0
def e1():
    for i in range(10):
        yield gen.Task(e2)
Exemplo n.º 20
0
 def f():
     yield gen.Task(self.io_loop.add_callback)
     1 / 0
Exemplo n.º 21
0
 def f():
     yield gen.Task(self.io_loop.add_callback)
     raise gen.Return(42)
Exemplo n.º 22
0
 def get(self):
     self.write('hello ')
     yield gen.Task(self.flush)
     self.write('world')
     yield gen.Task(self.flush)
     self.finish()
Exemplo n.º 23
0
 def async_body_producer(self, write):
     yield write(b'1234')
     yield gen.Task(IOLoop.current().add_callback)
     yield write(b'5678')
Exemplo n.º 24
0
 def test_long_timeout(self):
     time = self.io_loop.time
     yield gen.Task(self.io_loop.add_timeout, time() + 0.25)
Exemplo n.º 25
0
 def tornado_coroutine():
     yield gen.Task(self.io_loop.add_callback)
     raise gen.Return(42)
Exemplo n.º 26
0
 def test_with_args(self, *args):
     self.assertEqual(args, ('test',))
     yield gen.Task(self.io_loop.add_callback)
Exemplo n.º 27
0
 def test_short_timeout(self):
     time = self.io_loop.time
     yield gen.Task(self.io_loop.add_timeout, time() + 1)
Exemplo n.º 28
0
 def f():
     with ExceptionStackContext(lambda t, v, tb: False):
         yield gen.Task(self.io_loop.add_callback)
Exemplo n.º 29
0
 def test_with_kwargs(self, **kwargs):
     self.assertDictEqual(kwargs, {'test': 'test'})
     yield gen.Task(self.io_loop.add_callback)
Exemplo n.º 30
0
 def f2():
     self.assertEqual(self.active_contexts, ['c1', 'c2'])
     yield gen.Task(self.io_loop.add_callback)
     self.assertEqual(self.active_contexts, ['c1', 'c2'])