Example #1
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] == ('', )
Example #2
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] == ('',)
Example #3
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.')