From bc085a7da11a83342fd28d5c665d143296acdacd Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sat, 28 Feb 2026 08:40:12 -0500 Subject: [PATCH] feat(batch5): implement jetstream error constructors group05 --- .../JetStreamErrors.GeneratedConstructors.cs | 160 ++++++++++++++++++ ...tStreamErrorsGeneratedConstructorsTests.cs | 33 ++++ porting.db | Bin 6406144 -> 6418432 bytes tools/generate-jetstream-errors.sh | 20 +++ 4 files changed, 213 insertions(+) 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 10ac13f..703b09d 100644 --- a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs +++ b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs @@ -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); + } + } 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 12b831f..2b2fc95 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs @@ -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(); + } } diff --git a/porting.db b/porting.db index 9c9a763b7a27689c89c67447112f5103e4dd8e58..cb49630b1fe84742b8d2c17f111e570fac1b732b 100644 GIT binary patch delta 4898 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 delta 2655 zcmZ9Oe^3KKp*(_kDJ6p>uGT+}XKH-kavGktD@>BV#eC`JlO~gq+ynGWEaX(pYyiu#96XunJ^p%$O)(x$aM5GzlvYs7>L+8ma$X2NMisVv4?dGq@HCHg7 z^-0#cO)qV3Yw2iVdFYIo%Y_#&kuXWN&s-v{?$SHbq-LjYqpsR?vRCI+gmx69)YqJcrGkf#fpI#-i2+4$V*T~YMIg%7t%!!;lmXrNZ zEz4d$Oim;zbWrM{#+!`pq4aY&RVVy{7E+5E?smqNJIb(f{=^mhJzGL7t3+h-U4hBoqaDP#J=mvlKu zrcIk;z?w7z_NkBQvSi-q9l&K33-o?^9O^1l3ha?ub4=egFhCI*aUpI*u?GfN5%n7f zz4h8R>RX-_Y)X0G-6G$o?b3B1L-aG7ea$9SxIW14!Hzv_E~E~z3TXZp)1YyPU3SJc zU1Vj>SnowP92;ZMcZrq2-fb>*{}|&wqgp?wZTDQ@4a)D_rScYoDNq0w&c5Tj&zJOL)43 z+9k9up?3*ymoPpOCK)ufbJ88EQ~gi+VRM7oU@sdpJIM-<dd|w3Aw|c0k*wy>9L`cesb#_uXU4ulPbu zfw2R^@6(s-m3py`Z*=XZb{SX2kFDG=zmeg`Ny0Se#Q%<24(Q`%K9nbl3TPWQ4T{gx zt2jbgE*u;;he0n0ndAd7QbihE%MBT%7pzp#48;?sMe#9FlSDQ2OqkuE`V;Eyjg#g^ z0-Fm$X>j|F8HC*d;f2h*rtLC2qzZV?CrY8iCyL-F*&zddq^*5`6;McCGx3y9l8@mIRvhRO-LOHTf~B@(dINbJse&NXGX&YG$sjysv}Ty zJ^Yc&V@R7}A}3Ua3jY&0nJnhOCwX{JWa!3@+edt2Cxw%dc?~%s(|%@__ye)xo5MZv z?Nmo$`;~ASsf7E(_!Wfek??2aFq|C??}6V3#29>06w=`1H1V<=`SUm5660`nq}igL z-$Hdz9D?4QkiKgoD3Ams5lKRPNHXF_W+5p^DiT1_5DN(+>Bwv(1Ia|PkZdFenS>hbG$21fRwE&0p~ xgsefD?TKJm-