Пример #1
0
    def test_waituntil_limit(self):
        buf = self._make_one()
        p = buf.waituntil(b'\n', 4)
        next(p)
        p.send(b'1')
        p.send(b'234')
        self.assertRaises(ValueError, p.send, b'5')

        buf = parsers.ParserBuffer()
        p = buf.waituntil(b'\n', 4)
        next(p)
        self.assertRaises(ValueError, p.send, b'12345\n6')

        buf = parsers.ParserBuffer()
        p = buf.waituntil(b'\n', 4)
        next(p)
        self.assertRaises(ValueError, p.send, b'12345\n6')

        class CustomExc(Exception):
            pass

        buf = parsers.ParserBuffer()
        p = buf.waituntil(b'\n', 4, CustomExc)
        next(p)
        self.assertRaises(CustomExc, p.send, b'12345\n6')
Пример #2
0
def create_request(raw_request_lines):
    """
  :param raw_request_lines: HTTP Request lines without line ends
  :type  raw_request_lines: list(str)

  :rtype: Request
  """
    class ParserOut:
        """
    :param message:
    :type  message: protocol.RawRequestMessage
    """
        def feed_data(po, m, _):
            po.message = m

        def feed_eof(po, *args):
            pass

    raw_request = "\r\n".join(raw_request_lines + ["\r\n"]).encode("utf-8")

    po = ParserOut()
    p = protocol.HttpRequestParser()

    asyncio.get_event_loop() \
      .run_until_complete(p(po, parsers.ParserBuffer(raw_request)))

    return Request(None, po.message, streams.EmptyStreamReader(), None, None,
                   None)
Пример #3
0
    def test_waituntil_limit(self):
        buf = self._make_one()
        p = buf.waituntil(b'\n', 4)
        next(p)
        p.send(b'1')
        p.send(b'234')
        self.assertRaises(errors.LineLimitExceededParserError, p.send, b'5')

        buf = parsers.ParserBuffer()
        p = buf.waituntil(b'\n', 4)
        next(p)
        self.assertRaises(
            errors.LineLimitExceededParserError, p.send, b'12345\n6')

        buf = parsers.ParserBuffer()
        p = buf.waituntil(b'\n', 4)
        next(p)
        self.assertRaises(
            errors.LineLimitExceededParserError, p.send, b'12345\n6')
Пример #4
0
    def test_shrink(self):
        buf = parsers.ParserBuffer()
        buf.feed_data(b'data')

        buf._shrink()
        self.assertEqual(bytes(buf), b'data')

        buf.offset = 2
        buf._shrink()
        self.assertEqual(bytes(buf), b'ta')
        self.assertEqual(2, len(buf))
        self.assertEqual(2, buf.size)
        self.assertEqual(0, buf.offset)
Пример #5
0
def buf():
    return parsers.ParserBuffer()
Пример #6
0
 def _make_one(self):
     return parsers.ParserBuffer()