diff --git a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs index d3c827d..10ac13f 100644 --- a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs +++ b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs @@ -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); + } + } diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs index 6ad5c62..12b831f 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs @@ -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(); + } } diff --git a/porting.db b/porting.db index 47fcb44..9c9a763 100644 Binary files a/porting.db and b/porting.db differ diff --git a/tools/generate-jetstream-errors.sh b/tools/generate-jetstream-errors.sh index 73dcab3..95d3845 100755 --- a/tools/generate-jetstream-errors.sh +++ b/tools/generate-jetstream-errors.sh @@ -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}" ) {