示例#1
0
 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)
示例#2
0
 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())
示例#3
0
 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)
示例#4
0
    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()
示例#5
0
 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)
示例#6
0
    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)
示例#7
0
 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)
示例#8
0
 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)
示例#9
0
 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)
示例#10
0
    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)
示例#11
0
 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)
示例#12
0
    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)
示例#13
0
 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)
示例#14
0
    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()
示例#15
0
 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())
示例#16
0
 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()
示例#17
0
 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)
示例#18
0
 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)
示例#19
0
    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()
示例#20
0
 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()
示例#21
0
 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)
示例#22
0
    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()
示例#23
0
 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)
示例#24
0
    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)
示例#25
0
    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)
示例#26
0
    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)
示例#27
0
    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)
示例#28
0
 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)
示例#29
0
    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)
示例#30
0
    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)
示例#31
0
    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()
示例#32
0
    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)
示例#33
0
    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)
示例#34
0
    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)
示例#35
0
    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)
示例#36
0
    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)
示例#37
0
    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)
示例#38
0
 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)
示例#39
0
    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)
示例#40
0
    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)
示例#41
0
    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)
示例#42
0
    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)
示例#43
0
    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)
示例#44
0
    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)
示例#45
0
    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)
示例#46
0
 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)
示例#47
0
    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)
示例#48
0
    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)
示例#49
0
 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)
示例#50
0
    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)
示例#51
0
    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)
示例#52
0
 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)
示例#53
0
    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)
示例#54
0
    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)
示例#55
0
    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()
示例#56
0
    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()
示例#57
0
    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)))
示例#58
0
    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)
示例#59
0
    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)
示例#60
0
    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)