feat(batch5): implement jetstream error constructors group04

This commit is contained in:
Joseph Doherty
2026-02-28 08:36:38 -05:00
parent 802e3d6576
commit e914b468b6
4 changed files with 213 additions and 0 deletions

View File

@@ -392,6 +392,126 @@ public static partial class JsApiErrors
return Clone(ConsumerMaxDeliverBackoff);
}
public static JsApiError NewJSConsumerMaxPendingAckPolicyRequiredError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerMaxPendingAckPolicyRequired);
}
public static JsApiError NewJSConsumerMaxRequestBatchNegativeError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerMaxRequestBatchNegative);
}
public static JsApiError NewJSConsumerMaxRequestExpiresTooSmallError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerMaxRequestExpiresTooSmall);
}
public static JsApiError NewJSConsumerMaxWaitingNegativeError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerMaxWaitingNegative);
}
public static JsApiError NewJSConsumerMultipleFiltersNotAllowedError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerMultipleFiltersNotAllowed);
}
public static JsApiError NewJSConsumerNameContainsPathSeparatorsError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerNameContainsPathSeparators);
}
public static JsApiError NewJSConsumerNameExistError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerNameExist);
}
public static JsApiError NewJSConsumerNotFoundError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerNotFound);
}
public static JsApiError NewJSConsumerOfflineError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerOffline);
}
public static JsApiError NewJSConsumerOnMappedError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerOnMapped);
}
public static JsApiError NewJSConsumerOverlappingSubjectFiltersError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerOverlappingSubjectFilters);
}
public static JsApiError NewJSConsumerPinnedTTLWithoutPriorityPolicyNoneError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerPinnedTTLWithoutPriorityPolicyNone);
}
public static JsApiError NewJSConsumerPriorityGroupWithPolicyNoneError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerPriorityGroupWithPolicyNone);
}
public static JsApiError NewJSConsumerPriorityPolicyWithoutGroupError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerPriorityPolicyWithoutGroup);
}
public static JsApiError NewJSConsumerPullNotDurableError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerPullNotDurable);
}
public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
@@ -464,4 +584,44 @@ public static partial class JsApiErrors
return NewWithTags(ConsumerInvalidSampling, "{err}", err);
}
public static JsApiError NewJSConsumerMaxPendingAckExcessError(object? limit, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(ConsumerMaxPendingAckExcess, "{limit}", limit);
}
public static JsApiError NewJSConsumerMaxRequestBatchExceededError(object? limit, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(ConsumerMaxRequestBatchExceeded, "{limit}", limit);
}
public static JsApiError NewJSConsumerMetadataLengthError(object? limit, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(ConsumerMetadataLength, "{limit}", limit);
}
public static JsApiError NewJSConsumerNameTooLongError(object? max, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(ConsumerNameTooLong, "{max}", max);
}
public static JsApiError NewJSConsumerOfflineReasonError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(ConsumerOfflineReason, "{err}", err);
}
}

View File

@@ -102,4 +102,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests
fromOverride.Description.ShouldBe(expected.Description);
ReferenceEquals(fromOverride, expected).ShouldBeFalse();
}
[Fact]
public void ConstructorSurface_Group04()
{
JsApiErrors.NewJSConsumerMaxPendingAckPolicyRequiredError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxPendingAckPolicyRequired.ErrCode);
JsApiErrors.NewJSConsumerMaxRequestBatchNegativeError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxRequestBatchNegative.ErrCode);
JsApiErrors.NewJSConsumerMaxRequestExpiresTooSmallError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxRequestExpiresTooSmall.ErrCode);
JsApiErrors.NewJSConsumerMaxWaitingNegativeError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxWaitingNegative.ErrCode);
JsApiErrors.NewJSConsumerMultipleFiltersNotAllowedError().ErrCode.ShouldBe(JsApiErrors.ConsumerMultipleFiltersNotAllowed.ErrCode);
JsApiErrors.NewJSConsumerNameContainsPathSeparatorsError().ErrCode.ShouldBe(JsApiErrors.ConsumerNameContainsPathSeparators.ErrCode);
JsApiErrors.NewJSConsumerNameExistError().ErrCode.ShouldBe(JsApiErrors.ConsumerNameExist.ErrCode);
JsApiErrors.NewJSConsumerNotFoundError().ErrCode.ShouldBe(JsApiErrors.ConsumerNotFound.ErrCode);
JsApiErrors.NewJSConsumerOfflineError().ErrCode.ShouldBe(JsApiErrors.ConsumerOffline.ErrCode);
JsApiErrors.NewJSConsumerOnMappedError().ErrCode.ShouldBe(JsApiErrors.ConsumerOnMapped.ErrCode);
JsApiErrors.NewJSConsumerOverlappingSubjectFiltersError().ErrCode.ShouldBe(JsApiErrors.ConsumerOverlappingSubjectFilters.ErrCode);
JsApiErrors.NewJSConsumerPinnedTTLWithoutPriorityPolicyNoneError().ErrCode.ShouldBe(JsApiErrors.ConsumerPinnedTTLWithoutPriorityPolicyNone.ErrCode);
JsApiErrors.NewJSConsumerPriorityGroupWithPolicyNoneError().ErrCode.ShouldBe(JsApiErrors.ConsumerPriorityGroupWithPolicyNone.ErrCode);
JsApiErrors.NewJSConsumerPriorityPolicyWithoutGroupError().ErrCode.ShouldBe(JsApiErrors.ConsumerPriorityPolicyWithoutGroup.ErrCode);
JsApiErrors.NewJSConsumerPullNotDurableError().ErrCode.ShouldBe(JsApiErrors.ConsumerPullNotDurable.ErrCode);
JsApiErrors.NewJSConsumerMaxPendingAckExcessError(250).Description.ShouldBe("consumer max ack pending exceeds system limit of 250");
JsApiErrors.NewJSConsumerMaxRequestBatchExceededError(88).Description.ShouldBe("consumer max request batch exceeds server limit of 88");
JsApiErrors.NewJSConsumerMetadataLengthError(4096).Description.ShouldBe("consumer metadata exceeds maximum size of 4096");
JsApiErrors.NewJSConsumerNameTooLongError(33).Description.ShouldBe("consumer name is too long, maximum allowed is 33");
JsApiErrors.NewJSConsumerOfflineReasonError(new InvalidOperationException("storage unavailable")).Description.ShouldBe("consumer is offline: storage unavailable");
var expected = new JsApiError { Code = 496, ErrCode = 9093, Description = "override-4" };
var fromOverride = JsApiErrors.NewJSConsumerPullNotDurableError(JsApiErrors.Unless(expected));
fromOverride.Code.ShouldBe(expected.Code);
fromOverride.ErrCode.ShouldBe(expected.ErrCode);
fromOverride.Description.ShouldBe(expected.Description);
ReferenceEquals(fromOverride, expected).ShouldBeFalse();
}
}

Binary file not shown.

View File

@@ -53,6 +53,21 @@ simple_methods=(
"NewJSConsumerInvalidGroupNameError|ConsumerInvalidGroupName"
"NewJSConsumerInvalidPriorityGroupError|ConsumerInvalidPriorityGroup"
"NewJSConsumerMaxDeliverBackoffError|ConsumerMaxDeliverBackoff"
"NewJSConsumerMaxPendingAckPolicyRequiredError|ConsumerMaxPendingAckPolicyRequired"
"NewJSConsumerMaxRequestBatchNegativeError|ConsumerMaxRequestBatchNegative"
"NewJSConsumerMaxRequestExpiresTooSmallError|ConsumerMaxRequestExpiresTooSmall"
"NewJSConsumerMaxWaitingNegativeError|ConsumerMaxWaitingNegative"
"NewJSConsumerMultipleFiltersNotAllowedError|ConsumerMultipleFiltersNotAllowed"
"NewJSConsumerNameContainsPathSeparatorsError|ConsumerNameContainsPathSeparators"
"NewJSConsumerNameExistError|ConsumerNameExist"
"NewJSConsumerNotFoundError|ConsumerNotFound"
"NewJSConsumerOfflineError|ConsumerOffline"
"NewJSConsumerOnMappedError|ConsumerOnMapped"
"NewJSConsumerOverlappingSubjectFiltersError|ConsumerOverlappingSubjectFilters"
"NewJSConsumerPinnedTTLWithoutPriorityPolicyNoneError|ConsumerPinnedTTLWithoutPriorityPolicyNone"
"NewJSConsumerPriorityGroupWithPolicyNoneError|ConsumerPriorityGroupWithPolicyNone"
"NewJSConsumerPriorityPolicyWithoutGroupError|ConsumerPriorityPolicyWithoutGroup"
"NewJSConsumerPullNotDurableError|ConsumerPullNotDurable"
)
templated_methods=(
@@ -65,6 +80,11 @@ templated_methods=(
"NewJSConsumerInvalidPolicyError|Exception|err|ConsumerInvalidPolicy|{err}"
"NewJSConsumerInvalidResetError|Exception|err|ConsumerInvalidReset|{err}"
"NewJSConsumerInvalidSamplingError|Exception|err|ConsumerInvalidSampling|{err}"
"NewJSConsumerMaxPendingAckExcessError|object?|limit|ConsumerMaxPendingAckExcess|{limit}"
"NewJSConsumerMaxRequestBatchExceededError|object?|limit|ConsumerMaxRequestBatchExceeded|{limit}"
"NewJSConsumerMetadataLengthError|object?|limit|ConsumerMetadataLength|{limit}"
"NewJSConsumerNameTooLongError|object?|max|ConsumerNameTooLong|{max}"
"NewJSConsumerOfflineReasonError|Exception|err|ConsumerOfflineReason|{err}"
)
{