diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.IntegrationTests/JetStream/JetStreamCluster4Tests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.IntegrationTests/JetStream/JetStreamCluster4Tests.cs new file mode 100644 index 0000000..0eb6d69 --- /dev/null +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.IntegrationTests/JetStream/JetStreamCluster4Tests.cs @@ -0,0 +1,280 @@ +// Copyright 2025 The NATS Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Mirrors server/jetstream_cluster_4_test.go in the NATS server Go source. +// ALL tests in this file are deferred: they require a running JetStream cluster. + +namespace ZB.MOM.NatsNet.Server.IntegrationTests.JetStream; + +/// +/// Integration tests for JetStream cluster — batch 4 operations. +/// Mirrors server/jetstream_cluster_4_test.go. +/// All tests are deferred pending JetStream cluster server infrastructure. +/// +public sealed class JetStreamCluster4Tests +{ + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void WorkQueueStreamDiscardNewDesync_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamPlacementDistribution_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SourceWorkingQueueWithLimit_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerPauseViaConfig_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerPauseViaEndpoint_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerPauseTimerFollowsLeader_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerPauseResumeViaEndpoint_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerPauseHeartbeats_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerPauseAdvisories_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerPauseSurvivesRestart_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerNRGCleanup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ClusteredInterestConsumerFilterEdit_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DoubleAckRedelivery_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void BusyStreams_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SingleMaxConsumerUpdate_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamLastSequenceResetAfterStorageWipe_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AckFloorBetweenLeaderAndFollowers_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerLeak_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AccountNRG_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AccountNRGConfigNoPanic_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void WQRoundRobinSubjectRetention_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MetaSyncOrphanCleanup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void KeyValueDesyncAfterHardKill_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void KeyValueLastSeqMismatch_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PubAckSequenceDupe_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PubAckSequenceDupeAsync_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PubAckSequenceDupeResetAfterLeaderChange_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumeWithStartSequence_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AckDeleted_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void APILimitDefault_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void APILimitAdvisory_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PendingRequestsInJsz_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerReplicasAfterScale_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerReplicasAfterScaleMoveConsumer_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DesyncAfterQuitDuringCatchup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DesyncAfterErrorDuringCatchup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerDesyncAfterErrorDuringStreamCatchup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DesyncAfterEofFromOldStreamLeader_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ReservedResourcesAccountingAfterClusterReset_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void HardKillAfterStreamAdd_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DesyncAfterPublishToLeaderWithoutQuorum_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PreserveWALDuringCatchupWithMatchingTerm_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DesyncAfterRestartReplacesLeaderSnapshot_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void KeepRaftStateIfStreamCreationFailedDuringShutdown_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MetaSnapshotReCreateConsistency_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MetaSnapshotConsumerDeleteConsistency_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerDontSendSnapshotOnLeaderChange_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DontInstallSnapshotWhenStoppingStream_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DontInstallSnapshotWhenStoppingConsumer_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamConsumerStateResetAfterRecreate_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamAckMsgR1SignalsRemovedMsg_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamAckMsgR3SignalsRemovedMsg_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ExpectedPerSubjectConsistency_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MsgCounterRunningTotalConsistency_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsistencyAfterLeaderChange_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MetaStepdownPreferred_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void OnlyPublishAdvisoriesWhenInterest_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void RoutedAPIRecoverPerformance_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MessageTTLWhenSourcing_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MessageTTLWhenMirroring_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MessageTTLDisabled_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void CreateStreamPerf_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void TTLAndDedupe_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void InvalidTTLAndDedupe_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ServerPeerRemovePeersDrift_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamTagPlacement_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ObserverNotElectedMetaLeader_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ParallelCreateRaftGroup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SubjectDeleteMarkersMinimumTTL_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SubjectDeleteMarkersMinimumTTLExceptionMaxMsgsPer_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SubjectDeleteMarkersNoMsgTTLSet_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMMaxAgeOnRecover_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMMaxAgeRemoveMsgProposal_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMMaxAgeRemoveMsgProposalLimitRetries_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMTTLRemoveMsgProposal_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMInflightTTL_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMTTLAndMaxMsgsPer_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMMsgTTLReverseExpiry_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMResetLast_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SDMMaxAgeProposeExpiryShortRetry_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void InvalidR1Config_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MultiLeaderR3Config_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AccountMaxConnectionsReconnect_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MetaCompactThreshold_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MetaCompactSizeThreshold_ShouldSucceed() { } +} diff --git a/reports/current.md b/reports/current.md index 483887d..663a9e1 100644 --- a/reports/current.md +++ b/reports/current.md @@ -1,6 +1,6 @@ # NATS .NET Porting Status Report -Generated: 2026-03-01 17:27:28 UTC +Generated: 2026-03-01 17:33:05 UTC ## Modules (12 total)