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 40df406..d17bc74 100644 Binary files a/porting.db and b/porting.db differ 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%)**