def test_read_cb_when_no_data(self): sock = EventSocket() sock._sock = mock() 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( '' ) expect( sock.close ) assert_equals( None, sock._read_cb() )
def test_read_cb_simplest_case(self): sock = EventSocket() sock._sock = mock() 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._flag_activity ) assert_true( sock._read_cb() ) assert_equals( bytearray('sumdata'), sock._read_buf ) assert_equals( 'error reading from socket', sock._error_msg )
def test_read_cb_when_parent_cb_and_is_a_pending_event_and_already_buffered_data(self): sock = EventSocket() sock._read_buf = bytearray('foo') sock._sock = mock() sock._peername = 'peername' sock._parent_read_cb = 'p_read_cb' sock._pending_read_cb_event = 'pending_read' 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._flag_activity ) assert_true( sock._read_cb() ) assert_equals( bytearray('foosumdata'), sock._read_buf )
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 )