def test_write_cb_with_no_data(self): sock = EventSocket() sock._sock = mock() sock._parent_output_empty_cb = mock() sock._debug = True sock._logger = mock() mock( sock, '_flag_activity' ) sock._write_buf = deque() assert_equals( None, sock._write_cb() ) assert_equals( sock._error_msg, "error writing socket output buffer" )
def test_write_cb_when_other_environment_error_raised(self): sock = EventSocket() sock._sock = mock() sock._peername = 'peer' sock._logger = mock() sock._debug = True sock._parent_output_empty_cb = mock() # assert not called sock._write_buf = deque(['data1','data2']) expect( sock._sock.send ).args( 'data1' ).raises( EnvironmentError(errno.ECONNABORTED,'try again') ) assert_raises( EnvironmentError, sock._write_cb )
def test_write_when_write_event_is_pending_and_debugging(self): sock = EventSocket() sock._write_event = mock() sock._peername = 'peername' sock._write_buf = deque(['data']) sock._debug = 2 sock._logger = mock() expect( sock._write_event.pending ).returns( True ) expect( sock._logger.debug ).args(str, 3, 7, 'peername') expect( sock._flag_activity ) sock.write( 'foo' ) assert_equals( deque(['data', 'foo']), sock._write_buf )
def test_bind_with_debugging(self): sock = EventSocket() sock._sock = mock() sock._debug = True sock._logger = mock() mock( sock, 'getsockname' ) expect(sock._logger.debug).args( "binding to %s", str(('arg1','arg2')) ) expect(sock._sock.bind).args( 'arg1', 'arg2' ) expect(sock.getsockname).returns( ('foo',1234) ) expect(eventsocket.event.read).args( sock, sock._protected_cb, sock._accept_cb ).returns('accept_event') sock.bind( 'arg1', 'arg2' ) assert_equals( "foo:1234", sock._peername ) assert_equals( 'accept_event', sock._accept_event )
def test_write_cb_when_not_all_data_sent_and_logging(self): sock = EventSocket() sock._sock = mock() sock._peername = 'peer' sock._logger = mock() sock._debug = True sock._parent_output_empty_cb = mock() # assert not called sock._write_buf = deque(['data1','data2']) expect( sock._sock.send ).args( 'data1' ).returns( 5 ) expect( sock._sock.send ).args( 'data2' ).returns( 2 ) expect( sock._logger.debug ).args( str, 7, 10, 'peer' ) expect( sock._flag_activity ) assert_true( sock._write_cb() ) assert_equals( deque(['ta2']), sock._write_buf )
def test_write_cb_when_eagain_raised_and_logging(self): sock = EventSocket() sock._sock = mock() sock._peername = 'peer' sock._logger = mock() sock._debug = True sock._parent_output_empty_cb = mock() # assert not called sock._write_buf = deque(['data1','data2']) expect( sock._sock.send ).args( 'data1' ).raises( EnvironmentError(errno.EAGAIN,'try again') ) expect( sock._logger.debug ).args( str, EnvironmentError, 'peer' ) expect( sock._logger.debug ).args( str, 0, 10, 'peer' ) expect( sock._flag_activity ) assert_true( sock._write_cb() ) assert_equals( deque(['data1','data2']), sock._write_buf )
def test_accept_cb_when_no_logger_and_no_parent_cb(self): sock = EventSocket() sock._sock = mock() sock._parent_read_cb = 'p_read_cb' sock._parent_error_cb = 'p_error_cb' sock._parent_close_cb = 'p_close_cb' sock._debug = False sock._logger = None sock._max_read_buffer = 42 expect(sock._sock.accept).returns( ('connection', 'address') ) expect(EventSocket.__init__).args( read_cb='p_read_cb', error_cb='p_error_cb', close_cb='p_close_cb', sock='connection', debug=False, logger=None, max_read_buffer=42 ) assert_true( sock._accept_cb() ) assert_equals( 'error accepting new socket', sock._error_msg )
def test_read_cb_when_debugging_and_parent_cb_and_no_pending_event(self): sock = EventSocket() sock._sock = mock() sock._logger = mock() sock._peername = 'peername' sock._debug = True sock._parent_read_cb = 'p_read_cb' mock( sock, 'getsockopt' ) expect( sock.getsockopt ).args( socket.SOL_SOCKET, socket.SO_RCVBUF ).returns( 42 ) expect( sock._sock.recv ).args( 42 ).returns( 'sumdata' ) expect( sock._logger.debug ).args( 'read 7 bytes from peername' ) expect( sock._flag_activity ) expect( eventsocket.event.timeout ).args( 0, sock._protected_cb, sock._parent_read_timer_cb ).returns('pending_read') assert_true( sock._read_cb() ) assert_equals( bytearray('sumdata'), sock._read_buf ) assert_equals( 'pending_read', sock._pending_read_cb_event )
def test_read_cb_when_buffer_overflow(self): sock = EventSocket() sock._sock = mock() sock._logger = mock() sock._peername = 'peername' sock._debug = True sock._max_read_buffer = 5 mock( sock, 'getsockopt' ) mock( sock, 'close' ) expect( sock.getsockopt ).args( socket.SOL_SOCKET, socket.SO_RCVBUF ).returns( 42 ) expect( sock._sock.recv ).args( 42 ).returns( 'sumdata' ) expect( sock._logger.debug ).args( 'read 7 bytes from peername' ) expect( sock._flag_activity ) expect( sock._logger.debug ).args( 'buffer for peername overflowed!' ) expect( sock.close ) assert_equals( None, sock._read_cb() ) assert_equals( bytearray(), sock._read_buf )
def test_accept_cb_when_logger_and_parent_cb(self): sock = EventSocket() sock._sock = mock() sock._parent_accept_cb = 'p_accept_cb' sock._parent_read_cb = 'p_read_cb' sock._parent_error_cb = 'p_error_cb' sock._parent_close_cb = 'p_close_cb' sock._debug = True sock._logger = mock() sock._max_read_buffer = 42 expect(sock._sock.accept).returns( ('connection', 'address') ) expect(sock._logger.debug).args( "accepted connection from address" ) expect(EventSocket.__init__).args( read_cb='p_read_cb', error_cb='p_error_cb', close_cb='p_close_cb', sock='connection', debug=True, logger=sock._logger, max_read_buffer=42 ) expect(sock._protected_cb).args( 'p_accept_cb', is_a(EventSocket) ) assert_true( sock._accept_cb() )