コード例 #1
0
    def test_read_exception(self):
        buffer = parsers.DataQueue(loop=self.loop)
        buffer.feed_data(object())
        buffer.set_exception(ValueError())

        self.assertRaises(ValueError, self.loop.run_until_complete,
                          buffer.read())
コード例 #2
0
    def test_exception(self):
        buffer = parsers.DataQueue(loop=self.loop)
        self.assertIsNone(buffer.exception())

        exc = ValueError()
        buffer.set_exception(exc)
        self.assertIs(buffer.exception(), exc)
コード例 #3
0
    def test_exception_waiter(self):
        stream = parsers.StreamParser()

        stream._parser = self.lines_parser
        buf = stream._output = parsers.DataQueue(loop=self.loop)

        exc = ValueError()
        stream.set_exception(exc)
        self.assertIs(buf.exception(), exc)
コード例 #4
0
    def test_read_until_eof(self):
        item = object()
        buffer = parsers.DataQueue(loop=self.loop)
        buffer.feed_data(item)
        buffer.feed_eof()

        data = self.loop.run_until_complete(buffer.read())
        self.assertIs(data, item)

        self.assertRaises(parsers.EofStream, self.loop.run_until_complete,
                          buffer.read())
コード例 #5
0
    def test_read_eof(self):
        buffer = parsers.DataQueue(loop=self.loop)
        read_task = asyncio.Task(buffer.read(), loop=self.loop)

        def cb():
            buffer.feed_eof()

        self.loop.call_soon(cb)

        self.assertRaises(parsers.EofStream, self.loop.run_until_complete,
                          read_task)
コード例 #6
0
    def test_read(self):
        item = object()
        buffer = parsers.DataQueue(loop=self.loop)
        read_task = asyncio.Task(buffer.read(), loop=self.loop)

        def cb():
            buffer.feed_data(item)

        self.loop.call_soon(cb)

        data = self.loop.run_until_complete(read_task)
        self.assertIs(item, data)
コード例 #7
0
    def test_exception_waiter(self):
        buffer = parsers.DataQueue(loop=self.loop)

        @asyncio.coroutine
        def set_err():
            buffer.set_exception(ValueError())

        t1 = asyncio.Task(buffer.read(), loop=self.loop)
        t2 = asyncio.Task(set_err(), loop=self.loop)

        self.loop.run_until_complete(asyncio.wait([t1, t2], loop=self.loop))

        self.assertRaises(ValueError, t1.result)
コード例 #8
0
    def test_read_cancelled(self):
        buffer = parsers.DataQueue(loop=self.loop)
        read_task = asyncio.Task(buffer.read(), loop=self.loop)
        test_utils.run_briefly(self.loop)
        self.assertIsInstance(buffer._waiter, asyncio.Future)

        read_task.cancel()
        self.assertRaises(asyncio.CancelledError, self.loop.run_until_complete,
                          read_task)
        self.assertTrue(buffer._waiter.cancelled())

        buffer.feed_data(b'test')
        self.assertIsNone(buffer._waiter)
コード例 #9
0
ファイル: test_parsers.py プロジェクト: popravich/aiohttp
    def test_stream(self):
        item = object()
        buffer = parsers.DataQueue(self.stream, loop=self.loop)
        read_task = asyncio.Task(buffer.read(), loop=self.loop)

        def cb():
            buffer.feed_data(item)

        self.loop.call_soon(cb)
        self.loop.run_until_complete(read_task)

        self.assertTrue(self.stream.resume_stream.called)
        self.assertTrue(self.stream.pause_stream.called)
コード例 #10
0
    def test_chunks_parser(self):
        out = parsers.DataQueue(loop=self.loop)
        buf = self._make_one()

        p = parsers.ChunksParser(5)(out, buf)
        next(p)
        for d in (b'line1', b'lin', b'e2d', b'ata'):
            p.send(d)

        self.assertEqual(
            [bytearray(b'line1'), bytearray(b'line2')], list(out._buffer))
        try:
            p.throw(parsers.EofStream())
        except parsers.EofStream:
            pass

        self.assertEqual(bytes(buf), b'data')
コード例 #11
0
ファイル: test_parsers.py プロジェクト: popravich/aiohttp
    def test_lines_parser(self):
        out = parsers.DataQueue(self.stream, loop=self.loop)
        buf = self._make_one()

        p = parsers.LinesParser()(out, buf)
        next(p)
        for d in (b'line1', b'\r\n', b'lin', b'e2\r', b'\ndata'):
            p.send(d)

        self.assertEqual([bytearray(b'line1\r\n'),
                          bytearray(b'line2\r\n')], list(out._buffer))
        try:
            p.throw(parsers.EofStream())
        except parsers.EofStream:
            pass

        self.assertEqual(bytes(buf), b'data')
コード例 #12
0
 def test_feed_eof(self):
     buffer = parsers.DataQueue(loop=self.loop)
     buffer.feed_eof()
     self.assertTrue(buffer._eof)
コード例 #13
0
    def test_feed_data(self):
        buffer = parsers.DataQueue(loop=self.loop)

        item = object()
        buffer.feed_data(item)
        self.assertEqual([item], list(buffer._buffer))