aiohttp.parsers.StreamParser

Here are the examples of the python api aiohttp.parsers.StreamParser taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

21 Examples 7

Example 1

Project: aiohttp Source File: test_stream_parser.py
Function: test_at_eof
def test_at_eof(loop):
    proto = parsers.StreamParser(loop=loop)
    assert not proto.at_eof()

    proto.feed_eof()
    assert proto.at_eof()

Example 2

Project: aiohttp Source File: test_stream_parser.py
Function: test_exception
def test_exception(loop):
    stream = parsers.StreamParser(loop=loop)
    assert stream.exception() is None

    exc = ValueError()
    stream.set_exception(exc)
    assert stream.exception() is exc

Example 3

Project: aiohttp Source File: test_stream_parser.py
def test_exception_connection_error(loop):
    stream = parsers.StreamParser(loop=loop)
    assert stream.exception() is None

    exc = ConnectionError()
    stream.set_exception(exc)
    assert stream.exception() is not exc
    assert isinstance(stream.exception(), RuntimeError)
    assert stream.exception().__cause__ is exc
    assert stream.exception().__context__ is exc

Example 4

Project: aiohttp Source File: test_stream_parser.py
Function: test_exception_waiter
def test_exception_waiter(loop, lines_parser):

    stream = parsers.StreamParser(loop=loop)

    stream._parser = lines_parser
    buf = stream._output = parsers.FlowControlDataQueue(
        stream, loop=loop)

    exc = ValueError()
    stream.set_exception(exc)
    assert buf.exception() is exc

Example 5

Project: aiohttp Source File: test_stream_parser.py
def test_set_parser_unset_prev(loop, lines_parser):
    stream = parsers.StreamParser(loop=loop)
    stream.set_parser(lines_parser)

    unset = stream.unset_parser = mock.Mock()
    stream.set_parser(lines_parser)

    assert unset.called

Example 6

Project: aiohttp Source File: test_stream_parser.py
def test_set_parser_exception(loop, lines_parser):
    stream = parsers.StreamParser(loop=loop)

    exc = ValueError()
    stream.set_exception(exc)
    s = stream.set_parser(lines_parser)
    assert s.exception() is exc

Example 7

Project: aiohttp Source File: test_stream_parser.py
def test_set_parser_feed_existing(loop, lines_parser):
    stream = parsers.StreamParser(loop=loop)
    stream.feed_data(b'line1')
    stream.feed_data(b'\r\nline2\r\ndata')
    s = stream.set_parser(lines_parser)

    assert ([(bytearray(b'line1\r\n'), 7), (bytearray(b'line2\r\n'), 7)] ==
            list(s._buffer))
    assert b'data' == bytes(stream._buffer)
    assert stream._parser is not None

    stream.unset_parser()
    assert stream._parser is None
    assert b'data' == bytes(stream._buffer)
    assert s._eof

Example 8

Project: aiohttp Source File: test_stream_parser.py
def test_set_parser_feed_existing_exc(loop):
    def p(out, buf):
        yield from buf.read(1)
        raise ValueError()

    stream = parsers.StreamParser(loop=loop)
    stream.feed_data(b'line1')
    s = stream.set_parser(p)
    assert isinstance(s.exception(), ValueError)

Example 9

Project: aiohttp Source File: test_stream_parser.py
def test_set_parser_feed_existing_eof(loop, lines_parser):
    stream = parsers.StreamParser(loop=loop)
    stream.feed_data(b'line1')
    stream.feed_data(b'\r\nline2\r\ndata')
    stream.feed_eof()
    s = stream.set_parser(lines_parser)

    assert ([(bytearray(b'line1\r\n'), 7), (bytearray(b'line2\r\n'), 7)] ==
            list(s._buffer))
    assert b'data' == bytes(stream._buffer)
    assert stream._parser is None

Example 10

Project: aiohttp Source File: test_stream_parser.py
def test_set_parser_feed_existing_eof_unhandled_eof(loop):
    def p(out, buf):
        while True:
            yield  # read chunk

    stream = parsers.StreamParser(loop=loop)
    stream.feed_data(b'line1')
    stream.feed_eof()
    s = stream.set_parser(p)
    assert not s.is_eof()
    assert isinstance(s.exception(), RuntimeError)

Example 11

Project: aiohttp Source File: test_stream_parser.py
def test_set_parser_unset(loop, lines_parser):
    stream = parsers.StreamParser(loop=loop)
    s = stream.set_parser(lines_parser)

    stream.feed_data(b'line1\r\nline2\r\n')
    assert ([(bytearray(b'line1\r\n'), 7), (bytearray(b'line2\r\n'), 7)] ==
            list(s._buffer))
    assert b'' == bytes(stream._buffer)
    stream.unset_parser()
    assert s._eof
    assert b'' == bytes(stream._buffer)

Example 12

Project: aiohttp Source File: test_stream_parser.py
Function: test_feed_parser
def test_feed_parser(loop, lines_parser):
    stream = parsers.StreamParser(loop=loop)
    s = stream.set_parser(lines_parser)

    stream.feed_data(b'line1')
    stream.feed_data(b'\r\nline2\r\ndata')
    assert b'data' == bytes(stream._buffer)

    stream.feed_eof()
    assert ([(bytearray(b'line1\r\n'), 7), (bytearray(b'line2\r\n'), 7)] ==
            list(s._buffer))
    assert b'data' == bytes(stream._buffer)
    assert s.is_eof()

Example 13

Project: aiohttp Source File: test_stream_parser.py
def test_feed_parser_exc(loop):
    def p(out, buf):
        yield  # read chunk
        raise ValueError()

    stream = parsers.StreamParser(loop=loop)
    s = stream.set_parser(p)

    stream.feed_data(b'line1')
    assert isinstance(s.exception(), ValueError)
    assert b'' == bytes(stream._buffer)

Example 14

Project: aiohttp Source File: test_stream_parser.py
def test_feed_parser_stop(loop):
    def p(out, buf):
        yield  # chunk

    stream = parsers.StreamParser(loop=loop)
    stream.set_parser(p)

    stream.feed_data(b'line1')
    assert stream._parser is None
    assert b'' == bytes(stream._buffer)

Example 15

Project: aiohttp Source File: test_stream_parser.py
def test_feed_eof_unhandled_eof(loop):
    def p(out, buf):
        while True:
            yield  # read chunk

    stream = parsers.StreamParser(loop=loop)
    s = stream.set_parser(p)

    stream.feed_data(b'line1')
    stream.feed_eof()
    assert not s.is_eof()
    assert isinstance(s.exception(), RuntimeError)

Example 16

Project: aiohttp Source File: test_stream_parser.py
def test_feed_parser2(loop, lines_parser):
    stream = parsers.StreamParser(loop=loop)
    s = stream.set_parser(lines_parser)

    stream.feed_data(b'line1\r\nline2\r\n')
    stream.feed_eof()
    assert ([(bytearray(b'line1\r\n'), 7), (bytearray(b'line2\r\n'), 7)] ==
            list(s._buffer))
    assert b'' == bytes(stream._buffer)
    assert s._eof

Example 17

Project: aiohttp Source File: test_stream_parser.py
def test_unset_parser_eof_unhandled_eof(loop):
    def p(out, buf):
        while True:
            yield  # read chunk

    stream = parsers.StreamParser(loop=loop)
    s = stream.set_parser(p)

    stream.feed_data(b'line1')
    stream.unset_parser()
    assert isinstance(s.exception(), RuntimeError)
    assert not s.is_eof()

Example 18

Project: aiohttp Source File: test_stream_parser.py
def test_eof_exc(loop):
    def p(out, buf):
        while True:
            yield  # read chunk

    class CustomEofErr(Exception):
        pass

    stream = parsers.StreamParser(eof_exc_class=CustomEofErr, loop=loop)
    s = stream.set_parser(p)

    stream.feed_eof()
    assert isinstance(s.exception(), CustomEofErr)

Example 19

Project: aiohttp Source File: test_stream_parser.py
Function: test_feed_data
def test_feed_data(loop):
    stream = parsers.StreamParser(loop=loop)

    stream.feed_data(DATA)
    assert DATA == bytes(stream._buffer)

Example 20

Project: aiohttp Source File: test_stream_parser.py
def test_feed_none_data(loop):
    stream = parsers.StreamParser(loop=loop)

    stream.feed_data(None)
    assert b'' == bytes(stream._buffer)

Example 21

Project: aiohttp Source File: test_stream_parser.py
def test_set_parser_feed_existing_stop(loop):
    def LinesParser(out, buf):
        try:
            chunk = yield from buf.readuntil(b'\n')
            out.feed_data(chunk, len(chunk))

            chunk = yield from buf.readuntil(b'\n')
            out.feed_data(chunk, len(chunk))
        finally:
            out.feed_eof()

    stream = parsers.StreamParser(loop=loop)
    stream.feed_data(b'line1')
    stream.feed_data(b'\r\nline2\r\ndata')
    s = stream.set_parser(LinesParser)

    assert b'line1\r\nline2\r\n' == b''.join(d for d, _ in s._buffer)
    assert b'data' == bytes(stream._buffer)
    assert stream._parser is None
    assert s._eof