def test_write_eof_pending(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'data'] tr.write_eof() self.assertTrue(tr._closing) self.assertFalse(self.protocol.connection_lost.called)
def test_ctor_with_waiter(self): fut = futures.Future(loop=self.loop) tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol, fut) self.loop.assert_reader(5, tr._read_ready) test_utils.run_briefly(self.loop) self.assertEqual(None, fut.result())
def test_ctor(self): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) self.loop.add_reader.assert_called_with(5, tr._read_ready) self.loop.call_soon.assert_called_with( self.protocol.connection_made, tr) self.assertTrue(tr._enable_read_hack)
def test_close(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr.write_eof = unittest.mock.Mock() tr.close() tr.write_eof.assert_called_with()
def test_pause_resume_writing(self): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr.pause_writing() self.assertFalse(tr._writing) tr.resume_writing() self.assertTrue(tr._writing)
def test_write_no_data(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr.write(b'') self.assertFalse(m_write.called) self.assertFalse(self.loop.add_writer.called) self.assertEqual([], tr._buffer)
def test_discard_output_without_pending_writes(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr.discard_output() self.assertTrue(tr._writing) self.assertFalse(self.loop.remove_writer.called) self.assertEqual([], tr._buffer)
def test_ctor(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) self.loop.add_reader.assert_called_with(5, tr._read_ready) self.loop.call_soon.assert_called_with(self.protocol.connection_made, tr) self.assertTrue(tr._enable_read_hack)
def test_pause_resume_writing(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr.pause_writing() self.assertFalse(tr._writing) tr.resume_writing() self.assertTrue(tr._writing)
def test_close_closing(self, m_fcntl): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr.write_eof = unittest.mock.Mock() tr._closing = True tr.close() self.assertFalse(tr.write_eof.called)
def test_discard_output_without_pending_writes(self): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr.discard_output() self.assertTrue(tr._writing) self.assertFalse(self.loop.remove_writer.called) self.assertEqual([], tr._buffer)
def test_write_eof(self, m_fcntl): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr.write_eof() self.assertTrue(tr._closing) self.loop.call_soon.assert_called_with( tr._call_connection_lost, None)
def test_write_eof_pending(self, m_fcntl): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr.register_protocol(self.protocol) tr._buffer = [b'data'] tr.write_eof() self.assertTrue(tr._closing) self.assertFalse(self.protocol.connection_lost.called)
def test_close(self): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr.write_eof = unittest.mock.Mock() tr.close() tr.write_eof.assert_called_with()
def test_ctor_with_waiter(self): fut = futures.Future(loop=self.loop) tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol, fut) self.loop.assert_reader(5, tr._read_ready) test_utils.run_briefly(self.loop) self.assertEqual(None, fut.result())
def test_ctor_with_waiter(self): fut = futures.Future(loop=self.loop) tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol, fut) self.loop.call_soon.assert_called_with(fut.set_result, None) self.loop.add_reader.assert_called_with(5, tr._read_ready) self.assertTrue(tr._enable_read_hack) fut.cancel()
def test_ctor_with_regular_file(self): with tempfile.TemporaryFile() as f: tr = unix_events._UnixWritePipeTransport(self.loop, f, self.protocol) self.assertFalse(self.loop.add_reader.called) self.loop.call_soon.assert_called_with( self.protocol.connection_made, tr) self.assertFalse(tr._enable_read_hack)
def test_discard_output(self): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] tr.discard_output() self.assertTrue(tr._writing) self.loop.remove_writer.assert_called_with(5) self.assertEqual([], tr._buffer)
def test__call_connection_lost(self): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) err = None tr._call_connection_lost(err) self.protocol.connection_lost.assert_called_with(err) self.pipe.close.assert_called_with()
def test_ctor_with_waiter(self): fut = futures.Future(loop=self.loop) tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol, fut) self.loop.call_soon.assert_called_with(fut.set_result, None) self.loop.add_reader.assert_called_with(5, tr._read_ready) self.assertTrue(tr._enable_read_hack) fut.cancel()
def test_discard_output(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] tr.discard_output() self.assertTrue(tr._writing) self.loop.remove_writer.assert_called_with(5) self.assertEqual([], tr._buffer)
def test__call_connection_lost_with_err(self, m_fcntl): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr.register_protocol(self.protocol) err = OSError() tr._call_connection_lost(err) self.protocol.connection_lost.assert_called_with(err) self.pipe.close.assert_called_with()
def test__write_ready(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr._buffer = [b'da', b'ta'] m_write.return_value = 4 tr._write_ready() m_write.assert_called_with(5, b'data') self.loop.remove_writer.assert_called_with(5) self.assertEqual([], tr._buffer)
def test_write_buffer(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr._buffer = [b'previous'] tr.write(b'data') self.assertFalse(m_write.called) self.assertFalse(self.loop.add_writer.called) self.assertEqual([b'previous', b'data'], tr._buffer)
def test_close_closing(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr.write_eof = unittest.mock.Mock() tr._closing = True tr.close() self.assertFalse(tr.write_eof.called)
def test_write_partial(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) m_write.return_value = 2 tr.write(b'data') m_write.assert_called_with(5, b'data') self.loop.add_writer.assert_called_with(5, tr._write_ready) self.assertEqual([b'ta'], tr._buffer)
def test_write(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) m_write.return_value = 4 tr.write(b'data') m_write.assert_called_with(5, b'data') self.assertFalse(self.loop.add_writer.called) self.assertEqual([], tr._buffer)
def test_write_no_data(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr.write(b'') self.assertFalse(m_write.called) self.assertFalse(self.loop.writers) self.assertEqual([], tr._buffer)
def test_write_eof(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr.write_eof() self.assertTrue(tr._closing) self.loop.remove_reader.assert_called_with(5) self.loop.call_soon.assert_called_with(tr._call_connection_lost, None)
def test__call_connection_lost_with_err(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) err = OSError() tr._call_connection_lost(err) self.protocol.connection_lost.assert_called_with(err) self.pipe.close.assert_called_with()
def test_write_again(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) m_write.side_effect = BlockingIOError() tr.write(b'data') m_write.assert_called_with(5, b'data') self.loop.add_writer.assert_called_with(5, tr._write_ready) self.assertEqual([b'data'], tr._buffer)
def test_write_buffer(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'previous'] tr.write(b'data') self.assertFalse(m_write.called) self.assertFalse(self.loop.add_writer.called) self.assertEqual([b'previous', b'data'], tr._buffer)
def test_write_again(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) m_write.side_effect = BlockingIOError() tr.write(b'data') m_write.assert_called_with(5, b'data') self.loop.assert_writer(5, tr._write_ready) self.assertEqual([b'data'], tr._buffer)
def test_write_close(self, m_write): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr._read_ready() # pipe was closed by peer tr.write(b'data') self.assertEqual(tr._conn_lost, 1) tr.write(b'data') self.assertEqual(tr._conn_lost, 2)
def test_write_close(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._read_ready() # pipe was closed by peer tr.write(b'data') self.assertEqual(tr._conn_lost, 1) tr.write(b'data') self.assertEqual(tr._conn_lost, 2)
def test_write_eof(self): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr.write_eof() self.assertTrue(tr._closing) self.assertFalse(self.loop.readers) test_utils.run_briefly(self.loop) self.protocol.connection_lost.assert_called_with(None)
def test__write_ready(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] m_write.return_value = 4 tr._write_ready() m_write.assert_called_with(5, b'data') self.loop.remove_writer.assert_called_with(5) self.assertEqual([], tr._buffer)
def test_write_partial(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) m_write.return_value = 2 tr.write(b'data') m_write.assert_called_with(5, b'data') self.loop.assert_writer(5, tr._write_ready) self.assertEqual([b'ta'], tr._buffer)
def test_write_eof(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr.write_eof() self.assertTrue(tr._closing) self.assertFalse(self.loop.readers) test_utils.run_briefly(self.loop) self.protocol.connection_lost.assert_called_with(None)
def test_write_eof(self): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr.write_eof() self.assertTrue(tr._closing) self.loop.remove_reader.assert_called_with(5) self.loop.call_soon.assert_called_with( tr._call_connection_lost, None)
def test__write_ready_again(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr._buffer = [b'da', b'ta'] m_write.side_effect = BlockingIOError() tr._write_ready() m_write.assert_called_with(5, b'data') self.assertFalse(self.loop.remove_writer.called) self.assertEqual([b'data'], tr._buffer)
def test_write(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) m_write.return_value = 4 tr.write(b'data') m_write.assert_called_with(5, b'data') self.assertFalse(self.loop.writers) self.assertEqual([], tr._buffer)
def test_write_eof(self): with tempfile.TemporaryFile() as f: tr = unix_events._UnixWritePipeTransport(self.loop, f, self.protocol) tr.write_eof() self.assertTrue(tr._closing) self.assertFalse(self.loop.remove_reader.called) self.loop.call_soon.assert_called_with(tr._call_connection_lost, None)
def test_write_eof(self): with tempfile.TemporaryFile() as f: tr = unix_events._UnixWritePipeTransport( self.loop, f, self.protocol) tr.write_eof() self.assertTrue(tr._closing) self.assertFalse(self.loop.remove_reader.called) self.loop.call_soon.assert_called_with( tr._call_connection_lost, None)
def test__write_ready(self, m_write): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) self.loop.add_writer(5, tr._write_ready) tr._buffer = [b'da', b'ta'] m_write.return_value = 4 tr._write_ready() m_write.assert_called_with(5, b'data') self.assertFalse(self.loop.writers) self.assertEqual([], tr._buffer)
def test__write_ready_again(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] m_write.side_effect = BlockingIOError() tr._write_ready() m_write.assert_called_with(5, b'data') self.assertFalse(self.loop.remove_writer.called) self.assertEqual([b'data'], tr._buffer)
def test__write_ready_empty(self, m_write): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] m_write.return_value = 0 tr._write_ready() m_write.assert_called_with(5, b'data') self.assertFalse(self.loop.remove_writer.called) self.assertEqual([b'data'], tr._buffer)
def test__write_ready_on_pause(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] tr.pause_writing() self.loop.remove_writer.reset_mock() tr._write_ready() self.assertFalse(m_write.called) self.assertFalse(self.loop.remove_writer.called) self.assertEqual([b'da', b'ta'], tr._buffer) self.assertFalse(tr._writing)
def test__write_ready_again(self, m_write): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) self.loop.add_writer(5, tr._write_ready) tr._buffer = [b'da', b'ta'] m_write.side_effect = BlockingIOError() tr._write_ready() m_write.assert_called_with(5, b'data') self.loop.assert_writer(5, tr._write_ready) self.assertEqual([b'data'], tr._buffer)
def test_abort(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr._buffer = [b'da', b'ta'] tr.abort() self.assertFalse(m_write.called) self.loop.remove_writer.assert_called_with(5) self.assertEqual([], tr._buffer) self.assertTrue(tr._closing) self.loop.call_soon.assert_called_with( tr._call_connection_lost, None)
def test__write_ready_on_pause(self, m_write): tr = unix_events._UnixWritePipeTransport( self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] tr.pause_writing() self.loop.remove_writer.reset_mock() tr._write_ready() self.assertFalse(m_write.called) self.assertFalse(self.loop.remove_writer.called) self.assertEqual([b'da', b'ta'], tr._buffer) self.assertFalse(tr._writing)
def test_abort(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] tr.abort() self.assertFalse(m_write.called) self.loop.remove_writer.assert_called_with(5) self.loop.remove_reader.assert_called_with(5) self.assertEqual([], tr._buffer) self.assertTrue(tr._closing) self.loop.call_soon.assert_called_with(tr._call_connection_lost, None)
def test_pause_resume_writing_with_nonempty_buffer(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] tr.pause_writing() self.assertFalse(tr._writing) self.loop.remove_writer.assert_called_with(5) self.assertEqual([b'da', b'ta'], tr._buffer) tr.resume_writing() self.assertTrue(tr._writing) self.loop.add_writer.assert_called_with(5, tr._write_ready) self.assertEqual([b'da', b'ta'], tr._buffer)
def test__write_ready_closing(self, m_fcntl, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe) tr.register_protocol(self.protocol) tr._closing = True tr._buffer = [b'da', b'ta'] m_write.return_value = 4 tr._write_ready() m_write.assert_called_with(5, b'data') self.loop.remove_writer.assert_called_with(5) self.assertEqual([], tr._buffer) self.protocol.connection_lost.assert_called_with(None) self.pipe.close.assert_called_with()
def test__write_ready_closing(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._closing = True tr._buffer = [b'da', b'ta'] m_write.return_value = 4 tr._write_ready() m_write.assert_called_with(5, b'data') self.loop.remove_writer.assert_called_with(5) self.loop.remove_reader.assert_called_with(5) self.assertEqual([], tr._buffer) self.protocol.connection_lost.assert_called_with(None) self.pipe.close.assert_called_with()
def test__call_connection_lost_with_err(self): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) err = OSError() tr._call_connection_lost(err) self.protocol.connection_lost.assert_called_with(err) self.pipe.close.assert_called_with() self.assertIsNone(tr._protocol) self.assertEqual(2, sys.getrefcount(self.protocol), pprint.pformat(gc.get_referrers(self.protocol))) self.assertIsNone(tr._loop) self.assertEqual(2, sys.getrefcount(self.loop), pprint.pformat(gc.get_referrers(self.loop)))
def test_abort(self, m_write): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) self.loop.add_writer(5, tr._write_ready) self.loop.add_reader(5, tr._read_ready) tr._buffer = [b'da', b'ta'] tr.abort() self.assertFalse(m_write.called) self.assertFalse(self.loop.readers) self.assertFalse(self.loop.writers) self.assertEqual([], tr._buffer) self.assertTrue(tr._closing) test_utils.run_briefly(self.loop) self.protocol.connection_lost.assert_called_with(None)
def test_abort(self, m_write): with tempfile.TemporaryFile() as f: fileno = f.fileno() tr = unix_events._UnixWritePipeTransport(self.loop, f, self.protocol) tr._buffer = [b'da', b'ta'] tr.abort() self.assertFalse(m_write.called) self.loop.remove_writer.assert_called_with(fileno) self.assertFalse(self.loop.remove_reader.called) self.assertEqual([], tr._buffer) self.assertTrue(tr._closing) self.loop.call_soon.assert_called_with(tr._call_connection_lost, None)
def test__write_ready_err(self, m_write, m_logexc): tr = unix_events._UnixWritePipeTransport(self.loop, self.pipe, self.protocol) tr._buffer = [b'da', b'ta'] m_write.side_effect = err = OSError() tr._write_ready() m_write.assert_called_with(5, b'data') self.loop.remove_writer.assert_called_with(5) self.loop.remove_reader.assert_called_with(5) self.assertEqual([], tr._buffer) self.assertTrue(tr._closing) self.loop.call_soon.assert_called_with(tr._call_connection_lost, err) m_logexc.assert_called_with('Fatal error for %s', tr) self.assertEqual(1, tr._conn_lost)