feat(batch5): implement jetstream error constructors group05

This commit is contained in:
Joseph Doherty
2026-02-28 08:40:12 -05:00
parent e914b468b6
commit bc085a7da1
4 changed files with 213 additions and 0 deletions

View File

@@ -512,6 +512,150 @@ public static partial class JsApiErrors
return Clone(ConsumerPullNotDurable);
}
public static JsApiError NewJSConsumerPullRequiresAckError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerPullRequiresAck);
}
public static JsApiError NewJSConsumerPullWithRateLimitError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerPullWithRateLimit);
}
public static JsApiError NewJSConsumerPushMaxWaitingError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerPushMaxWaiting);
}
public static JsApiError NewJSConsumerPushWithPriorityGroupError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerPushWithPriorityGroup);
}
public static JsApiError NewJSConsumerReplacementWithDifferentNameError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerReplacementWithDifferentName);
}
public static JsApiError NewJSConsumerReplayPolicyInvalidError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerReplayPolicyInvalid);
}
public static JsApiError NewJSConsumerReplicasExceedsStreamError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerReplicasExceedsStream);
}
public static JsApiError NewJSConsumerReplicasShouldMatchStreamError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerReplicasShouldMatchStream);
}
public static JsApiError NewJSConsumerSmallHeartbeatError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerSmallHeartbeat);
}
public static JsApiError NewJSConsumerWQConsumerNotDeliverAllError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerWQConsumerNotDeliverAll);
}
public static JsApiError NewJSConsumerWQConsumerNotUniqueError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerWQConsumerNotUnique);
}
public static JsApiError NewJSConsumerWQMultipleUnfilteredError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerWQMultipleUnfiltered);
}
public static JsApiError NewJSConsumerWQRequiresExplicitAckError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerWQRequiresExplicitAck);
}
public static JsApiError NewJSConsumerWithFlowControlNeedsHeartbeatsError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ConsumerWithFlowControlNeedsHeartbeats);
}
public static JsApiError NewJSInsufficientResourcesError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(InsufficientResources);
}
public static JsApiError NewJSMaximumConsumersLimitError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MaximumConsumersLimit);
}
public static JsApiError NewJSMaximumStreamsLimitError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MaximumStreamsLimit);
}
public static JsApiError NewJSMemoryResourcesExceededError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MemoryResourcesExceeded);
}
public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
@@ -624,4 +768,20 @@ public static partial class JsApiErrors
return NewWithTags(ConsumerOfflineReason, "{err}", err);
}
public static JsApiError NewJSConsumerStoreFailedError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(ConsumerStoreFailed, "{err}", err);
}
public static JsApiError NewJSInvalidJSONError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(InvalidJSON, "{err}", err);
}
}

View File

@@ -135,4 +135,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests
fromOverride.Description.ShouldBe(expected.Description);
ReferenceEquals(fromOverride, expected).ShouldBeFalse();
}
[Fact]
public void ConstructorSurface_Group05()
{
JsApiErrors.NewJSConsumerPullRequiresAckError().ErrCode.ShouldBe(JsApiErrors.ConsumerPullRequiresAck.ErrCode);
JsApiErrors.NewJSConsumerPullWithRateLimitError().ErrCode.ShouldBe(JsApiErrors.ConsumerPullWithRateLimit.ErrCode);
JsApiErrors.NewJSConsumerPushMaxWaitingError().ErrCode.ShouldBe(JsApiErrors.ConsumerPushMaxWaiting.ErrCode);
JsApiErrors.NewJSConsumerPushWithPriorityGroupError().ErrCode.ShouldBe(JsApiErrors.ConsumerPushWithPriorityGroup.ErrCode);
JsApiErrors.NewJSConsumerReplacementWithDifferentNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplacementWithDifferentName.ErrCode);
JsApiErrors.NewJSConsumerReplayPolicyInvalidError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplayPolicyInvalid.ErrCode);
JsApiErrors.NewJSConsumerReplicasExceedsStreamError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplicasExceedsStream.ErrCode);
JsApiErrors.NewJSConsumerReplicasShouldMatchStreamError().ErrCode.ShouldBe(JsApiErrors.ConsumerReplicasShouldMatchStream.ErrCode);
JsApiErrors.NewJSConsumerSmallHeartbeatError().ErrCode.ShouldBe(JsApiErrors.ConsumerSmallHeartbeat.ErrCode);
JsApiErrors.NewJSConsumerWQConsumerNotDeliverAllError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQConsumerNotDeliverAll.ErrCode);
JsApiErrors.NewJSConsumerWQConsumerNotUniqueError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQConsumerNotUnique.ErrCode);
JsApiErrors.NewJSConsumerWQMultipleUnfilteredError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQMultipleUnfiltered.ErrCode);
JsApiErrors.NewJSConsumerWQRequiresExplicitAckError().ErrCode.ShouldBe(JsApiErrors.ConsumerWQRequiresExplicitAck.ErrCode);
JsApiErrors.NewJSConsumerWithFlowControlNeedsHeartbeatsError().ErrCode.ShouldBe(JsApiErrors.ConsumerWithFlowControlNeedsHeartbeats.ErrCode);
JsApiErrors.NewJSInsufficientResourcesError().ErrCode.ShouldBe(JsApiErrors.InsufficientResources.ErrCode);
JsApiErrors.NewJSMaximumConsumersLimitError().ErrCode.ShouldBe(JsApiErrors.MaximumConsumersLimit.ErrCode);
JsApiErrors.NewJSMaximumStreamsLimitError().ErrCode.ShouldBe(JsApiErrors.MaximumStreamsLimit.ErrCode);
JsApiErrors.NewJSMemoryResourcesExceededError().ErrCode.ShouldBe(JsApiErrors.MemoryResourcesExceeded.ErrCode);
JsApiErrors.NewJSConsumerStoreFailedError(new InvalidOperationException("store failed")).Description.ShouldBe("error creating store for consumer: store failed");
JsApiErrors.NewJSInvalidJSONError(new InvalidOperationException("malformed")).Description.ShouldBe("invalid JSON: malformed");
var expected = new JsApiError { Code = 495, ErrCode = 9094, Description = "override-5" };
var fromOverride = JsApiErrors.NewJSConsumerPullRequiresAckError(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

@@ -68,6 +68,24 @@ simple_methods=(
"NewJSConsumerPriorityGroupWithPolicyNoneError|ConsumerPriorityGroupWithPolicyNone"
"NewJSConsumerPriorityPolicyWithoutGroupError|ConsumerPriorityPolicyWithoutGroup"
"NewJSConsumerPullNotDurableError|ConsumerPullNotDurable"
"NewJSConsumerPullRequiresAckError|ConsumerPullRequiresAck"
"NewJSConsumerPullWithRateLimitError|ConsumerPullWithRateLimit"
"NewJSConsumerPushMaxWaitingError|ConsumerPushMaxWaiting"
"NewJSConsumerPushWithPriorityGroupError|ConsumerPushWithPriorityGroup"
"NewJSConsumerReplacementWithDifferentNameError|ConsumerReplacementWithDifferentName"
"NewJSConsumerReplayPolicyInvalidError|ConsumerReplayPolicyInvalid"
"NewJSConsumerReplicasExceedsStreamError|ConsumerReplicasExceedsStream"
"NewJSConsumerReplicasShouldMatchStreamError|ConsumerReplicasShouldMatchStream"
"NewJSConsumerSmallHeartbeatError|ConsumerSmallHeartbeat"
"NewJSConsumerWQConsumerNotDeliverAllError|ConsumerWQConsumerNotDeliverAll"
"NewJSConsumerWQConsumerNotUniqueError|ConsumerWQConsumerNotUnique"
"NewJSConsumerWQMultipleUnfilteredError|ConsumerWQMultipleUnfiltered"
"NewJSConsumerWQRequiresExplicitAckError|ConsumerWQRequiresExplicitAck"
"NewJSConsumerWithFlowControlNeedsHeartbeatsError|ConsumerWithFlowControlNeedsHeartbeats"
"NewJSInsufficientResourcesError|InsufficientResources"
"NewJSMaximumConsumersLimitError|MaximumConsumersLimit"
"NewJSMaximumStreamsLimitError|MaximumStreamsLimit"
"NewJSMemoryResourcesExceededError|MemoryResourcesExceeded"
)
templated_methods=(
@@ -85,6 +103,8 @@ templated_methods=(
"NewJSConsumerMetadataLengthError|object?|limit|ConsumerMetadataLength|{limit}"
"NewJSConsumerNameTooLongError|object?|max|ConsumerNameTooLong|{max}"
"NewJSConsumerOfflineReasonError|Exception|err|ConsumerOfflineReason|{err}"
"NewJSConsumerStoreFailedError|Exception|err|ConsumerStoreFailed|{err}"
"NewJSInvalidJSONError|Exception|err|InvalidJSON|{err}"
)
{