feat(batch5): implement jetstream error constructors group07

This commit is contained in:
Joseph Doherty
2026-02-28 08:47:21 -05:00
parent aab2814201
commit a587e8e347
4 changed files with 195 additions and 0 deletions

View File

@@ -792,6 +792,134 @@ public static partial class JsApiErrors
return Clone(MirrorOverlappingSubjectFilters);
}
public static JsApiError NewJSMirrorWithAtomicPublishError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MirrorWithAtomicPublish);
}
public static JsApiError NewJSMirrorWithCountersError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MirrorWithCounters);
}
public static JsApiError NewJSMirrorWithFirstSeqError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MirrorWithFirstSeq);
}
public static JsApiError NewJSMirrorWithMsgSchedulesError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MirrorWithMsgSchedules);
}
public static JsApiError NewJSMirrorWithSourcesError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MirrorWithSources);
}
public static JsApiError NewJSMirrorWithStartSeqAndTimeError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MirrorWithStartSeqAndTime);
}
public static JsApiError NewJSMirrorWithSubjectFiltersError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MirrorWithSubjectFilters);
}
public static JsApiError NewJSMirrorWithSubjectsError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(MirrorWithSubjects);
}
public static JsApiError NewJSNoAccountError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(NoAccount);
}
public static JsApiError NewJSNoLimitsError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(NoLimits);
}
public static JsApiError NewJSNoMessageFoundError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(NoMessageFound);
}
public static JsApiError NewJSNotEmptyRequestError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(NotEmptyRequest);
}
public static JsApiError NewJSNotEnabledError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(NotEnabled);
}
public static JsApiError NewJSNotEnabledForAccountError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(NotEnabledForAccount);
}
public static JsApiError NewJSReplicasCountCannotBeNegativeError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(ReplicasCountCannotBeNegative);
}
public static JsApiError NewJSRequiredApiLevelError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(RequiredApiLevel);
}
public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
@@ -944,4 +1072,20 @@ public static partial class JsApiErrors
return NewWithTags(MirrorInvalidTransformDestination, "{err}", err);
}
public static JsApiError NewJSPedanticError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(Pedantic, "{err}", err);
}
public static JsApiError NewJSRaftGeneralError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(RaftGeneralErr, "{err}", err);
}
}

View File

@@ -201,4 +201,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests
fromOverride.Description.ShouldBe(expected.Description);
ReferenceEquals(fromOverride, expected).ShouldBeFalse();
}
[Fact]
public void ConstructorSurface_Group07()
{
JsApiErrors.NewJSMirrorWithAtomicPublishError().ErrCode.ShouldBe(JsApiErrors.MirrorWithAtomicPublish.ErrCode);
JsApiErrors.NewJSMirrorWithCountersError().ErrCode.ShouldBe(JsApiErrors.MirrorWithCounters.ErrCode);
JsApiErrors.NewJSMirrorWithFirstSeqError().ErrCode.ShouldBe(JsApiErrors.MirrorWithFirstSeq.ErrCode);
JsApiErrors.NewJSMirrorWithMsgSchedulesError().ErrCode.ShouldBe(JsApiErrors.MirrorWithMsgSchedules.ErrCode);
JsApiErrors.NewJSMirrorWithSourcesError().ErrCode.ShouldBe(JsApiErrors.MirrorWithSources.ErrCode);
JsApiErrors.NewJSMirrorWithStartSeqAndTimeError().ErrCode.ShouldBe(JsApiErrors.MirrorWithStartSeqAndTime.ErrCode);
JsApiErrors.NewJSMirrorWithSubjectFiltersError().ErrCode.ShouldBe(JsApiErrors.MirrorWithSubjectFilters.ErrCode);
JsApiErrors.NewJSMirrorWithSubjectsError().ErrCode.ShouldBe(JsApiErrors.MirrorWithSubjects.ErrCode);
JsApiErrors.NewJSNoAccountError().ErrCode.ShouldBe(JsApiErrors.NoAccount.ErrCode);
JsApiErrors.NewJSNoLimitsError().ErrCode.ShouldBe(JsApiErrors.NoLimits.ErrCode);
JsApiErrors.NewJSNoMessageFoundError().ErrCode.ShouldBe(JsApiErrors.NoMessageFound.ErrCode);
JsApiErrors.NewJSNotEmptyRequestError().ErrCode.ShouldBe(JsApiErrors.NotEmptyRequest.ErrCode);
JsApiErrors.NewJSNotEnabledError().ErrCode.ShouldBe(JsApiErrors.NotEnabled.ErrCode);
JsApiErrors.NewJSNotEnabledForAccountError().ErrCode.ShouldBe(JsApiErrors.NotEnabledForAccount.ErrCode);
JsApiErrors.NewJSPeerRemapError().ErrCode.ShouldBe(JsApiErrors.PeerRemap.ErrCode);
JsApiErrors.NewJSReplicasCountCannotBeNegativeError().ErrCode.ShouldBe(JsApiErrors.ReplicasCountCannotBeNegative.ErrCode);
JsApiErrors.NewJSRequiredApiLevelError().ErrCode.ShouldBe(JsApiErrors.RequiredApiLevel.ErrCode);
JsApiErrors.NewJSPedanticError(new InvalidOperationException("strict")).Description.ShouldBe("pedantic mode: strict");
JsApiErrors.NewJSRaftGeneralError(new InvalidOperationException("raft failure")).Description.ShouldBe("raft failure");
JsApiErrors.NewJSRestoreSubscribeFailedError(new InvalidOperationException("subscribe failed"), "$JS.API.CONSUMER").Description.ShouldBe("JetStream unable to subscribe to restore snapshot $JS.API.CONSUMER: subscribe failed");
var expected = new JsApiError { Code = 493, ErrCode = 9096, Description = "override-7" };
var fromOverride = JsApiErrors.NewJSNoAccountError(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

@@ -103,6 +103,22 @@ simple_methods=(
"NewJSMirrorMaxMessageSizeTooBigError|MirrorMaxMessageSizeTooBig"
"NewJSMirrorMultipleFiltersNotAllowedError|MirrorMultipleFiltersNotAllowed"
"NewJSMirrorOverlappingSubjectFiltersError|MirrorOverlappingSubjectFilters"
"NewJSMirrorWithAtomicPublishError|MirrorWithAtomicPublish"
"NewJSMirrorWithCountersError|MirrorWithCounters"
"NewJSMirrorWithFirstSeqError|MirrorWithFirstSeq"
"NewJSMirrorWithMsgSchedulesError|MirrorWithMsgSchedules"
"NewJSMirrorWithSourcesError|MirrorWithSources"
"NewJSMirrorWithStartSeqAndTimeError|MirrorWithStartSeqAndTime"
"NewJSMirrorWithSubjectFiltersError|MirrorWithSubjectFilters"
"NewJSMirrorWithSubjectsError|MirrorWithSubjects"
"NewJSNoAccountError|NoAccount"
"NewJSNoLimitsError|NoLimits"
"NewJSNoMessageFoundError|NoMessageFound"
"NewJSNotEmptyRequestError|NotEmptyRequest"
"NewJSNotEnabledError|NotEnabled"
"NewJSNotEnabledForAccountError|NotEnabledForAccount"
"NewJSReplicasCountCannotBeNegativeError|ReplicasCountCannotBeNegative"
"NewJSRequiredApiLevelError|RequiredApiLevel"
)
templated_methods=(
@@ -125,6 +141,8 @@ templated_methods=(
"NewJSMirrorConsumerSetupFailedError|Exception|err|MirrorConsumerSetupFailed|{err}"
"NewJSMirrorInvalidSubjectFilterError|Exception|err|MirrorInvalidSubjectFilter|{err}"
"NewJSMirrorInvalidTransformDestinationError|Exception|err|MirrorInvalidTransformDestination|{err}"
"NewJSPedanticError|Exception|err|Pedantic|{err}"
"NewJSRaftGeneralError|Exception|err|RaftGeneralErr|{err}"
)
{