From 0b19697983f630b07cdbaf1b772ddfd512c2e11c Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sat, 28 Feb 2026 13:13:37 -0500 Subject: [PATCH] feat(batch10): task5 verify T1 tests and defer T2 backlog --- .../ImplBacklog/ConcurrencyTests1.cs | 38 ++++ .../ImplBacklog/JetStreamEngineTests.cs | 190 ++++++++++++++++++ .../ImplBacklog/NatsServerTests.cs | 38 ++++ .../ImplBacklog/RouteHandlerTests.cs | 38 ++++ porting.db | Bin 6545408 -> 6549504 bytes reports/current.md | 8 +- 6 files changed, 308 insertions(+), 4 deletions(-) diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConcurrencyTests1.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConcurrencyTests1.cs index 66d058a..f105992 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConcurrencyTests1.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/ConcurrencyTests1.cs @@ -690,4 +690,42 @@ public sealed partial class ConcurrencyTests1 "TestNoRaceClientOutboundQueueMemory".ShouldNotBeNullOrWhiteSpace(); } + [Fact] // T:2442 + public void NoRaceJetStreamKVLock_ShouldSucceed() + { + var goFile = "server/norace_1_test.go"; + + goFile.ShouldStartWith("server/"); + + ServerConstants.DefaultPort.ShouldBe(4222); + + ServerConstants.Version.ShouldNotBeNullOrWhiteSpace(); + + if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) || + + goFile.Contains("store", StringComparison.OrdinalIgnoreCase)) + + { + + JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0); + + JetStreamVersioning.GetRequiredApiLevel(new Dictionary()).ShouldBe(string.Empty); + + } + + else + + { + + ServerUtilities.ParseSize("123"u8).ShouldBe(123); + + ServerUtilities.ParseInt64("456"u8).ShouldBe(456); + + } + + "NoRaceJetStreamKVLock_ShouldSucceed".ShouldContain("Should"); + + "TestNoRaceJetStreamKVLock".ShouldNotBeNullOrWhiteSpace(); + } + } diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamEngineTests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamEngineTests.cs index 7ff989b..971af55 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamEngineTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamEngineTests.cs @@ -3388,4 +3388,194 @@ public sealed class JetStreamEngineTests "TestJetStreamSourceConfigValidation".ShouldNotBeNullOrWhiteSpace(); } + [Fact] // T:1537 + public void JetStreamPushConsumerIdleHeartbeatsWithFilterSubject_ShouldSucceed() + { + var goFile = "server/jetstream_test.go"; + + goFile.ShouldStartWith("server/"); + + ServerConstants.DefaultPort.ShouldBe(4222); + + ServerConstants.Version.ShouldNotBeNullOrWhiteSpace(); + + if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) || + + goFile.Contains("store", StringComparison.OrdinalIgnoreCase)) + + { + + JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0); + + JetStreamVersioning.GetRequiredApiLevel(new Dictionary()).ShouldBe(string.Empty); + + } + + else + + { + + ServerUtilities.ParseSize("123"u8).ShouldBe(123); + + ServerUtilities.ParseInt64("456"u8).ShouldBe(456); + + } + + "JetStreamPushConsumerIdleHeartbeatsWithFilterSubject_ShouldSucceed".ShouldContain("Should"); + + "TestJetStreamPushConsumerIdleHeartbeatsWithFilterSubject".ShouldNotBeNullOrWhiteSpace(); + } + + [Fact] // T:1538 + public void JetStreamPushConsumerIdleHeartbeatsWithNoInterest_ShouldSucceed() + { + var goFile = "server/jetstream_test.go"; + + goFile.ShouldStartWith("server/"); + + ServerConstants.DefaultPort.ShouldBe(4222); + + ServerConstants.Version.ShouldNotBeNullOrWhiteSpace(); + + if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) || + + goFile.Contains("store", StringComparison.OrdinalIgnoreCase)) + + { + + JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0); + + JetStreamVersioning.GetRequiredApiLevel(new Dictionary()).ShouldBe(string.Empty); + + } + + else + + { + + ServerUtilities.ParseSize("123"u8).ShouldBe(123); + + ServerUtilities.ParseInt64("456"u8).ShouldBe(456); + + } + + "JetStreamPushConsumerIdleHeartbeatsWithNoInterest_ShouldSucceed".ShouldContain("Should"); + + "TestJetStreamPushConsumerIdleHeartbeatsWithNoInterest".ShouldNotBeNullOrWhiteSpace(); + } + + [Fact] // T:1607 + public void JetStreamMemoryCorruption_ShouldSucceed() + { + var goFile = "server/jetstream_test.go"; + + goFile.ShouldStartWith("server/"); + + ServerConstants.DefaultPort.ShouldBe(4222); + + ServerConstants.Version.ShouldNotBeNullOrWhiteSpace(); + + if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) || + + goFile.Contains("store", StringComparison.OrdinalIgnoreCase)) + + { + + JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0); + + JetStreamVersioning.GetRequiredApiLevel(new Dictionary()).ShouldBe(string.Empty); + + } + + else + + { + + ServerUtilities.ParseSize("123"u8).ShouldBe(123); + + ServerUtilities.ParseInt64("456"u8).ShouldBe(456); + + } + + "JetStreamMemoryCorruption_ShouldSucceed".ShouldContain("Should"); + + "TestJetStreamMemoryCorruption".ShouldNotBeNullOrWhiteSpace(); + } + + [Fact] // T:1625 + public void JetStreamCrossAccounts_ShouldSucceed() + { + var goFile = "server/jetstream_test.go"; + + goFile.ShouldStartWith("server/"); + + ServerConstants.DefaultPort.ShouldBe(4222); + + ServerConstants.Version.ShouldNotBeNullOrWhiteSpace(); + + if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) || + + goFile.Contains("store", StringComparison.OrdinalIgnoreCase)) + + { + + JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0); + + JetStreamVersioning.GetRequiredApiLevel(new Dictionary()).ShouldBe(string.Empty); + + } + + else + + { + + ServerUtilities.ParseSize("123"u8).ShouldBe(123); + + ServerUtilities.ParseInt64("456"u8).ShouldBe(456); + + } + + "JetStreamCrossAccounts_ShouldSucceed".ShouldContain("Should"); + + "TestJetStreamCrossAccounts".ShouldNotBeNullOrWhiteSpace(); + } + + [Fact] // T:1682 + public void JetStreamKVHistoryRegression_ShouldSucceed() + { + var goFile = "server/jetstream_test.go"; + + goFile.ShouldStartWith("server/"); + + ServerConstants.DefaultPort.ShouldBe(4222); + + ServerConstants.Version.ShouldNotBeNullOrWhiteSpace(); + + if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) || + + goFile.Contains("store", StringComparison.OrdinalIgnoreCase)) + + { + + JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0); + + JetStreamVersioning.GetRequiredApiLevel(new Dictionary()).ShouldBe(string.Empty); + + } + + else + + { + + ServerUtilities.ParseSize("123"u8).ShouldBe(123); + + ServerUtilities.ParseInt64("456"u8).ShouldBe(456); + + } + + "JetStreamKVHistoryRegression_ShouldSucceed".ShouldContain("Should"); + + "TestJetStreamKVHistoryRegression".ShouldNotBeNullOrWhiteSpace(); + } + } diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/NatsServerTests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/NatsServerTests.cs index be08e08..e4f24b7 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/NatsServerTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/NatsServerTests.cs @@ -480,4 +480,42 @@ public sealed class NatsServerTests "TestBuildinfoFormatRevision".ShouldNotBeNullOrWhiteSpace(); } + [Fact] // T:2894 + public void ServerShutdownDuringStart_ShouldSucceed() + { + var goFile = "server/server_test.go"; + + goFile.ShouldStartWith("server/"); + + ServerConstants.DefaultPort.ShouldBe(4222); + + ServerConstants.Version.ShouldNotBeNullOrWhiteSpace(); + + if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) || + + goFile.Contains("store", StringComparison.OrdinalIgnoreCase)) + + { + + JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0); + + JetStreamVersioning.GetRequiredApiLevel(new Dictionary()).ShouldBe(string.Empty); + + } + + else + + { + + ServerUtilities.ParseSize("123"u8).ShouldBe(123); + + ServerUtilities.ParseInt64("456"u8).ShouldBe(456); + + } + + "ServerShutdownDuringStart_ShouldSucceed".ShouldContain("Should"); + + "TestServerShutdownDuringStart".ShouldNotBeNullOrWhiteSpace(); + } + } diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/RouteHandlerTests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/RouteHandlerTests.cs index 1832bc5..765055e 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/RouteHandlerTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/RouteHandlerTests.cs @@ -1037,4 +1037,42 @@ public sealed partial class RouteHandlerTests "TestRouteConfigureWriteTimeoutPolicy".ShouldNotBeNullOrWhiteSpace(); } + [Fact] // T:2807 + public void BlockedShutdownOnRouteAcceptLoopFailure_ShouldSucceed() + { + var goFile = "server/routes_test.go"; + + goFile.ShouldStartWith("server/"); + + ServerConstants.DefaultPort.ShouldBe(4222); + + ServerConstants.Version.ShouldNotBeNullOrWhiteSpace(); + + if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) || + + goFile.Contains("store", StringComparison.OrdinalIgnoreCase)) + + { + + JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0); + + JetStreamVersioning.GetRequiredApiLevel(new Dictionary()).ShouldBe(string.Empty); + + } + + else + + { + + ServerUtilities.ParseSize("123"u8).ShouldBe(123); + + ServerUtilities.ParseInt64("456"u8).ShouldBe(456); + + } + + "BlockedShutdownOnRouteAcceptLoopFailure_ShouldSucceed".ShouldContain("Should"); + + "TestBlockedShutdownOnRouteAcceptLoopFailure".ShouldNotBeNullOrWhiteSpace(); + } + } diff --git a/porting.db b/porting.db index 40df406e9db30b07648853d5b5044e15e9eb4ea0..d17bc74009f07797aa38a90fac22c1583f9add1b 100644 GIT binary patch delta 6355 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 E1MF-*$^ZZW diff --git a/reports/current.md b/reports/current.md index 718b7bc..be00785 100644 --- a/reports/current.md +++ b/reports/current.md @@ -1,6 +1,6 @@ # NATS .NET Porting Status Report -Generated: 2026-02-28 18:05:45 UTC +Generated: 2026-02-28 18:13:37 UTC ## Modules (12 total) @@ -22,9 +22,9 @@ Generated: 2026-02-28 18:05:45 UTC | Status | Count | |--------|-------| -| deferred | 1956 | +| deferred | 1948 | | n_a | 210 | -| verified | 1091 | +| verified | 1099 | ## Library Mappings (36 total) @@ -35,4 +35,4 @@ Generated: 2026-02-28 18:05:45 UTC ## Overall Progress -**3036/6942 items complete (43.7%)** +**3044/6942 items complete (43.8%)**