def test_execute_lambda_unknown_exception(
            self, mock_start_transaction, mock_session, mock_transaction,
            mock_is_occ_conflict_exception, mock_is_retryable_exception,
            mock_is_invalid_session_exception, mock_executor,
            mock_no_throw_abort):
        error = KeyError()
        mock_start_transaction.return_value = mock_transaction
        mock_transaction.transaction_id = 'transaction_id'

        mock_is_occ_conflict_exception.return_value = False
        mock_is_retryable_exception.return_value = False
        mock_is_invalid_session_exception.return_value = False

        qldb_session = QldbSession(mock_session, MOCK_READ_AHEAD,
                                   mock_executor)
        mock_lambda = Mock()
        mock_lambda.side_effect = error

        with self.assertRaises(ExecuteError) as cm:
            qldb_session._execute_lambda(mock_lambda)

        assert_execute_error(self, cm.exception, error, False, False,
                             mock_transaction.transaction_id)
        self.assertTrue(qldb_session._is_alive)
        mock_no_throw_abort.assert_called_once_with()
        mock_transaction._commit.assert_not_called()
        mock_transaction._close_child_cursors.assert_called_once_with()
    def test_execute_lambda_occ_conflict(self, mock_start_transaction,
                                         mock_session, mock_transaction,
                                         mock_is_occ_conflict_exception,
                                         mock_is_retryable_exception,
                                         mock_is_invalid_session_exception,
                                         mock_executor, mock_no_throw_abort):
        ce = ClientError(MOCK_CLIENT_ERROR_MESSAGE, MOCK_MESSAGE)
        mock_start_transaction.return_value = mock_transaction
        mock_transaction.transaction_id = 'transaction_id'
        mock_is_retryable_exception.return_value = False
        mock_is_invalid_session_exception.return_value = False
        mock_is_occ_conflict_exception.return_value = True

        qldb_session = QldbSession(mock_session, MOCK_READ_AHEAD,
                                   mock_executor)
        mock_lambda = Mock()
        mock_lambda.side_effect = ce

        with self.assertRaises(ExecuteError) as cm:
            qldb_session._execute_lambda(mock_lambda)

        assert_execute_error(self, cm.exception, ce, False, False,
                             mock_transaction.transaction_id)
        mock_no_throw_abort.assert_not_called()
        mock_transaction._commit.assert_not_called()
        mock_transaction._close_child_cursors.assert_called_once_with()
Example #3
0
    def test_execute_lambda(self, mock_start_transaction, mock_session,
                            mock_transaction, mock_stream_cursor,
                            mock_buffered_cursor, mock_is_instance,
                            mock_executor):
        mock_start_transaction.return_value = mock_transaction
        mock_transaction.execute_lambda.return_value = MOCK_RESULT
        mock_transaction._commit.return_value = None
        mock_is_instance.return_value = True
        mock_stream_cursor.return_value = mock_stream_cursor
        mock_buffered_cursor.return_value = MOCK_RESULT
        lambda_execution_context = _LambdaExecutionContext()
        mock_lambda = Mock()
        mock_lambda.return_value = MOCK_RESULT

        qldb_session = QldbSession(mock_session, MOCK_READ_AHEAD,
                                   mock_executor, MOCK_DRIVER_RELEASE)
        result = qldb_session._execute_lambda(mock_lambda,
                                              MOCK_DEFAULT_RETRY_CONFIG,
                                              lambda_execution_context)

        mock_start_transaction.assert_called_once_with()
        mock_lambda.assert_called_once()
        mock_transaction._commit.assert_called_once_with()
        mock_is_instance.assert_called_with(MOCK_RESULT, mock_stream_cursor)
        mock_buffered_cursor.assert_called_once_with(MOCK_RESULT)
        self.assertEqual(result, MOCK_RESULT)
    def test_execute_lambda(self, mock_start_transaction, mock_session,
                            mock_transaction, mock_stream_cursor,
                            mock_buffered_cursor, mock_is_instance,
                            mock_executor):
        mock_start_transaction.return_value = mock_transaction
        mock_transaction.execute_lambda.return_value = MOCK_RESULT
        mock_transaction._commit.return_value = None
        mock_is_instance.return_value = True
        mock_stream_cursor.return_value = mock_stream_cursor
        mock_buffered_cursor.return_value = MOCK_RESULT
        mock_lambda = Mock()
        mock_lambda.return_value = MOCK_RESULT

        qldb_session = QldbSession(mock_session, MOCK_READ_AHEAD,
                                   mock_executor)
        result = qldb_session._execute_lambda(mock_lambda)

        mock_start_transaction.assert_called_once_with()
        mock_lambda.assert_called_once()
        mock_transaction._commit.assert_called_once_with()
        mock_transaction._close_child_cursors.assert_called_once_with()
        mock_is_instance.assert_called_with(MOCK_RESULT, mock_stream_cursor)
        mock_buffered_cursor.assert_called_once_with(MOCK_RESULT)
        self.assertEqual(result, MOCK_RESULT)