public void IsResumableChangeStreamException_should_return_expected_result_for_servers_with_new_behavior([Values(false, true)] bool hasResumableChangeStreamErrorLabel) { var exception = CoreExceptionHelper.CreateMongoCommandException(-1); if (hasResumableChangeStreamErrorLabel) { exception.AddErrorLabel("ResumableChangeStreamError"); } var result = RetryabilityHelper.IsResumableChangeStreamException(exception, Feature.ServerReturnsResumableChangeStreamErrorLabel.FirstSupportedVersion); result.Should().Be(hasResumableChangeStreamErrorLabel); }
public void IsRetryableWriteException_should_return_expected_result([Values(false, true)] bool hasRetryableWriteLabel) { var exception = CoreExceptionHelper.CreateMongoCommandException(-1); if (hasRetryableWriteLabel) { exception.AddErrorLabel("RetryableWriteError"); } var result = RetryabilityHelper.IsRetryableWriteException(exception); result.Should().Be(hasRetryableWriteLabel); }
public void IsResumableChangeStreamException_should_return_expected_result_for_servers_with_old_behavior(object exceptionDescription, bool isResumable) { MongoException exception; if (exceptionDescription is Type exceptionType) { exception = (MongoException)CoreExceptionHelper.CreateException(exceptionType); } else { exception = CoreExceptionHelper.CreateMongoCommandException((int)exceptionDescription); } var result = RetryabilityHelper.IsResumableChangeStreamException(exception, Feature.ServerReturnsResumableChangeStreamErrorLabel.LastNotSupportedVersion); result.Should().Be(isResumable); }
public void AddRetryableWriteErrorLabelIfRequired_should_add_RetryableWriteError_when_required(object exceptionDescription, bool shouldAddErrorLabel) { MongoException exception; if (exceptionDescription is Type exceptionType) { exception = (MongoException)CoreExceptionHelper.CreateException(exceptionType); } else { exception = CoreExceptionHelper.CreateMongoCommandException((int)exceptionDescription); } RetryabilityHelper.AddRetryableWriteErrorLabelIfRequired(exception, Feature.ServerReturnsRetryableWriteErrorLabel.LastNotSupportedVersion); var hasRetryableWriteErrorLabel = exception.HasErrorLabel("RetryableWriteError"); hasRetryableWriteErrorLabel.Should().Be(shouldAddErrorLabel); }
public void AddRetryableWriteErrorLabelIfRequired_should_not_add_error_label_for_non_retryWrites_server( [Values(false, true)] bool isNetworkError) { MongoException exception = null; if (isNetworkError) { exception = (MongoException)CoreExceptionHelper.CreateException(typeof(MongoConnectionException)); } else { exception = CoreExceptionHelper.CreateMongoCommandException((int)ServerErrorCode.HostNotFound); } RetryabilityHelper.AddRetryableWriteErrorLabelIfRequired(exception, Feature.RetryableWrites.LastNotSupportedVersion); var hasRetryableWriteErrorLabel = exception.HasErrorLabel("RetryableWriteError"); hasRetryableWriteErrorLabel.Should().BeFalse(); }