Adds JetStreamCluster4Tests.cs with 85 deferred test stubs mirroring
golang/nats-server/server/jetstream_cluster_4_test.go. All tests skip
with "deferred: requires running JetStream cluster".
Port config hot-reload (44 tests), opts (1 test), account isolation
(5 tests), auth callout (5 tests), and JWT validation (11 tests) from
Go reload_test.go, opts_test.go, accounts_test.go, auth_callout_test.go,
and jwt_test.go as behavioral blackbox integration tests against the
.NET NatsServer using ReloadOptions() and the public NATS client API.
- Added ShouldSkip() and ServerRuntimeUnavailable to IntegrationTestBase
- Fixed WaitOnPeerCount -> WaitOnClusterReady
- Fixed using -> await using for NatsConnection (IAsyncDisposable)
- Removed duplicate PackageReference entries from csproj
Ports 51 tests from norace_1_test.go and 24 tests from norace_2_test.go
as [SkippableFact] integration tests. Creates test harness infrastructure
(IntegrationTestBase, CheckHelper, NatsTestClient, TestServerHelper,
TestCluster) and tags all tests with [Trait("Category", "NoRace")].
Tests skip unless NATS_INTEGRATION_ENABLED=true is set.
Ports 36 JetStream super-cluster tests from jetstream_super_cluster_test.go,
3 JetStream leaf-node tests from jetstream_leafnode_test.go, and 14 leaf-node
tests from leafnode_test.go into the integration test project. Creates the
required harness infrastructure (TestSuperCluster, TestCluster, IntegrationTestBase,
CheckHelper, ConfigHelper, NatsTestClient, TestServerHelper). All 53 tests are
marked [Fact(Skip = "...")] pending full multi-server cluster runtime.
Ports the first 118 tests from golang/nats-server/server/jetstream_cluster_1_test.go
to C# integration tests in JetStream/JetStreamCluster1Tests.cs. Adds the
Helpers/ scaffold (IntegrationTestBase, TestCluster, NatsTestClient, CheckHelper,
ConfigHelper) and Xunit.SkippableFact package; tests skip automatically unless
NATS_INTEGRATION_TESTS=true is set.
Create 7 helper files under ZB.MOM.NatsNet.Server.IntegrationTests/Helpers/
and add Xunit.SkippableFact package. All tests skip gracefully via
IntegrationTestBase.CanBoot() guard until the .NET server runtime is complete.
Port 80 features from server/events.go including the full events infrastructure:
internal send/receive loops, system subscription machinery, statsz heartbeats,
remote server tracking, connection event advisories, user-info handler, OCSP peer
reject events, remote latency merge, kick/ldm client, and helper functions.
Add ClearConnectionHeartbeatTimer/SetConnectionHeartbeatTimer to Account,
add MsgHandler/SysMsgHandler delegates and supporting types (ServerApiResponse,
EventFilterOptions, StatszEventOptions, UserInfo, KickClientReq, LdmClientReq,
AccNumSubsReq) to EventTypes.cs, and add Seq field to ServerInfo for heartbeat
sequence tracking.
GatewayzOptions, Gatewayz, RemoteGatewayz, AccountGatewayz were defined
in both MonitorHelpers.cs (batch 42) and MonitorTypes.cs (batch 46).
Removed duplicates from MonitorTypes.cs, keeping the versions in
MonitorHelpers.cs.
Adds NatsServer.Monitor.cs with all monitoring endpoint implementations
(Connz, Routez, Subsz, Gatewayz, Leafz, AccountStatz, Accountz, Varz,
Healthz, Raftz, Expvarz, Profilez, Stacksz, IPQueuesz, Root) and updates
Monitor/MonitorTypes.cs with the full set of monitoring response types.
Port 46 deferred features from server/events.go covering the internal event
system foundation:
- Group A (EventHelpers.cs): NewPubMsg/pool, RouteStat, GetHash/GetHashSize,
GetAcceptEncoding, RemoteLatencySubjectForResponse, TotalSubs, AccForClient,
IssuerForClient, ClearTimer; CompressionType enum
- Group B (NatsServerTypes.cs): ServerInfo advisory fields (Seq, Time,
Capabilities, Tags, Metadata) + capability methods (SetJetStreamEnabled,
IsJetStreamEnabled, SetBinaryStreamSnapshot, IsBinaryStreamSnapshot,
SetAccountNrg, IsAccountNrg)
- Group C (ClientTypes.cs): ForAssignmentSnap, ForProposal, ForAdvisory on
ClientInfo
- Group D (EventTypes.cs): PubMsg.ReturnToPool; PubMsg.Client typed as
ClientConnection?; InternalState.Client typed as ClientConnection?;
InternalState.Seq changed to long field for Interlocked.Increment
- Group E (ClientConnection.Events.cs): SendInternalMsg delegates to server
- Group F (Account.Events.cs): AccountTrafficStats/Set + Account.Statz()
- Group G (NatsServer.Events.cs): InternalReceiveLoop, InternalSendLoop,
SendShutdownEvent, SendInternalAccountSysMsg, SendInternalMsgLocked,
SendInternalMsg, SendInternalMsgFromClient, SendInternalResponse,
EventsRunning, EventsEnabled, Node, InitEventTracking, FilterRequest,
NoInlineCallback*, SysSubscribe*, SystemSubscribe, SysUnsubscribe,
InboxReply, NewRespInbox, WrapChk; EventFilterOptions, ServerApiResponse,
ApiError types
- Subscription.SysMsgCb field added for system subscription dispatch