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();
}
}