Beispiel #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)
Beispiel #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())
 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)
Beispiel #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()
 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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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()
Beispiel #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())
Beispiel #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()
Beispiel #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)
Beispiel #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)
Beispiel #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()
Beispiel #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()
Beispiel #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)
Beispiel #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()
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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()
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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)
Beispiel #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()
Beispiel #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()
Beispiel #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)))
Beispiel #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)
Beispiel #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)
Beispiel #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)