Ejemplo n.º 1
0
    def test_readline_limit(self):
        stream = streams.StreamReader(7, loop=self.loop)

        def cb():
            stream.feed_data(b'chunk1')
            stream.feed_data(b'chunk2')
            stream.feed_data(b'chunk3\n')
            stream.feed_eof()

        self.loop.call_soon(cb)

        self.assertRaises(ValueError, self.loop.run_until_complete,
                          stream.readline())
        self.assertEqual([b'chunk3\n'], list(stream.buffer))
        self.assertEqual(7, stream.byte_count)
Ejemplo n.º 2
0
    def test_readline(self):
        # Read one line.
        stream = streams.StreamReader(loop=self.loop)
        stream.feed_data(b'chunk1 ')
        read_task = tasks.Task(stream.readline(), loop=self.loop)

        def cb():
            stream.feed_data(b'chunk2 ')
            stream.feed_data(b'chunk3 ')
            stream.feed_data(b'\n chunk4')
        self.loop.call_soon(cb)

        line = self.loop.run_until_complete(read_task)
        self.assertEqual(b'chunk1 chunk2 chunk3 \n', line)
        self.assertEqual(len(b'\n chunk4')-1, stream.byte_count)
Ejemplo n.º 3
0
    def test_read_until_eof(self):
        # Read all bytes until eof.
        stream = streams.StreamReader(loop=self.loop)
        read_task = tasks.Task(stream.read(-1), loop=self.loop)

        def cb():
            stream.feed_data(b'chunk1\n')
            stream.feed_data(b'chunk2')
            stream.feed_eof()
        self.loop.call_soon(cb)

        data = self.loop.run_until_complete(read_task)

        self.assertEqual(b'chunk1\nchunk2', data)
        self.assertFalse(stream.byte_count)
Ejemplo n.º 4
0
    def test_readexactly(self):
        # Read exact number of bytes.
        stream = streams.StreamReader(loop=self.loop)

        n = 2 * len(self.DATA)
        read_task = tasks.Task(stream.readexactly(n), loop=self.loop)

        def cb():
            stream.feed_data(self.DATA)
            stream.feed_data(self.DATA)
            stream.feed_data(self.DATA)
        self.loop.call_soon(cb)

        data = self.loop.run_until_complete(read_task)
        self.assertEqual(self.DATA + self.DATA, data)
        self.assertEqual(len(self.DATA), stream.byte_count)
Ejemplo n.º 5
0
    def test_exception_waiter(self):
        stream = streams.StreamReader(loop=self.loop)

        @tasks.coroutine
        def set_err():
            stream.set_exception(ValueError())

        @tasks.coroutine
        def readline():
            yield from stream.readline()

        t1 = tasks.Task(stream.readline(), loop=self.loop)
        t2 = tasks.Task(set_err(), loop=self.loop)

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

        self.assertRaises(ValueError, t1.result)
Ejemplo n.º 6
0
    def test_feed_data_byte_count(self):
        stream = streams.StreamReader(loop=self.loop)

        stream.feed_data(self.DATA)
        self.assertEqual(len(self.DATA), stream.byte_count)
Ejemplo n.º 7
0
    def test_feed_empty_data(self):
        stream = streams.StreamReader(loop=self.loop)

        stream.feed_data(b'')
        self.assertEqual(0, stream.byte_count)
Ejemplo n.º 8
0
 def test_ctor_global_loop(self, m_events):
     stream = streams.StreamReader()
     self.assertIs(stream.loop, m_events.get_event_loop.return_value)
Ejemplo n.º 9
0
    def test_readline_empty_eof(self):
        stream = streams.StreamReader(loop=self.loop)
        stream.feed_eof()

        line = self.loop.run_until_complete(stream.readline())
        self.assertEqual(b'', line)
Ejemplo n.º 10
0
def connect_read_pipe(loop, file):
    stream_reader = streams.StreamReader(loop=loop)
    protocol = _StreamReaderProtocol(stream_reader)
    loop._make_read_pipe_transport(file, protocol)
    return stream_reader