def test_close(self): mock_sock = mock.MagicMock() connection = ServerSocketConnection(mock_sock) connection.send_message = mock.MagicMock() connection.close() assert mock_sock.close.call_count == 1 assert connection.send_message.call_count == 1 assert connection.send_message.call_args[0] == ('', )
def test_close(self): mock_sock = mock.MagicMock() connection = ServerSocketConnection(mock_sock) connection.send_message = mock.MagicMock() connection.close() assert mock_sock.close.call_count == 1 assert connection.send_message.call_count == 1 assert connection.send_message.call_args[0] == ('',)
def run(self): """ Main daemon runloop function. Handles receiving and responding to MCRunner client commands. """ atexit.register(self.on_exit) self.logger.info('Starting mcrunnerd...') sock = self.socket_server() self.logger.info('mcrunnerd started.') while True: try: self.logger.debug('Awaiting socket connection') conn, client_address = sock.accept() connection = ServerSocketConnection(conn) self.logger.debug('Established socket connection') try: data = connection.receive_message() self.logger.debug('Handling socket data') self.handle_socket_data(data, connection) self.logger.debug('Socket data handled') finally: self.logger.debug('Closing socket connection') connection.close() except socket.error: self.logger.exception('Error during socket connection') except SystemExit: self.logger.info('Stopping mcrunnerd...') break self.logger.info('mcrunnerd stopped.')