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)
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)
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)
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)
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)
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)
def test_feed_empty_data(self): stream = streams.StreamReader(loop=self.loop) stream.feed_data(b'') self.assertEqual(0, stream.byte_count)
def test_ctor_global_loop(self, m_events): stream = streams.StreamReader() self.assertIs(stream.loop, m_events.get_event_loop.return_value)
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)
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