test(batch53): port 75 JetStream cluster 4 integration tests

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".
This commit is contained in:
Joseph Doherty
2026-03-01 12:33:04 -05:00
parent 8857063184
commit ff22964ae2
2 changed files with 281 additions and 1 deletions

View File

@@ -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;
/// <summary>
/// Integration tests for JetStream cluster — batch 4 operations.
/// Mirrors server/jetstream_cluster_4_test.go.
/// All tests are deferred pending JetStream cluster server infrastructure.
/// </summary>
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() { }
}