From a841b553f2c2d58f266c08a2452d6864d5b7f42f Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sun, 1 Mar 2026 12:12:50 -0500 Subject: [PATCH] test(batch51): port 106 JetStream cluster 2 integration tests --- .../JetStream/JetStreamCluster2Tests.cs | 394 ++++++++++++++++++ 1 file changed, 394 insertions(+) create mode 100644 dotnet/tests/ZB.MOM.NatsNet.Server.IntegrationTests/JetStream/JetStreamCluster2Tests.cs diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.IntegrationTests/JetStream/JetStreamCluster2Tests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.IntegrationTests/JetStream/JetStreamCluster2Tests.cs new file mode 100644 index 0000000..16aebf6 --- /dev/null +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.IntegrationTests/JetStream/JetStreamCluster2Tests.cs @@ -0,0 +1,394 @@ +// 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_2_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 — consumer replication, failover, and recovery. +/// Mirrors server/jetstream_cluster_2_test.go. +/// All tests are deferred pending JetStream cluster server infrastructure. +/// +public sealed class JetStreamCluster2Tests +{ + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void JsApiImport_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MultiRestartBug_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ServerLimits_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AccountLoadFailure_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AckPendingWithExpired_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AckPendingWithMaxRedelivered_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MixedMode_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LeafnodeSpokes_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LeafNodeDenyNoDupe_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SingleLeafNodeWithoutSharedSystemAccount_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void Domains_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DomainsWithNoJsHub_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DomainsAndApiResponses_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DomainsAndSameNameSources_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SingleLeafNodeEnablingJetStream_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LeafNodesWithoutJs_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LeafNodesWithSameDomainNames_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LeafDifferentAccounts_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamInfoDeletedDetails_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MirrorAndSourceExpiration_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MirrorAndSourceSubLeaks_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void CreateConcurrentDurableConsumers_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void UpdateStreamToExisting_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void CrossAccountInterop_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MsgIdDuplicateBug_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void NilMsgWithHeaderThroughSourcedStream_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void VarzReporting_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PurgeBySequence_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MaxConsumers_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MaxConsumersMultipleConcurrentRequests_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AccountMaxStreamsAndConsumersMultipleConcurrentRequests_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PanicDecodingConsumerState_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PullConsumerLeakedSubs_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PushConsumerQueueGroup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerLastActiveReporting_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void RaceOnRaftCreate_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DeadlockOnVarz_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamCatchupNoState_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LargeHeaders_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void FlowControlRequiresHeartbeats_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MixedModeColdStartPrune_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MirrorAndSourceCrossNonNeighboringDomain_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void Seal_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamCreateIdempotent_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void RollupsRequirePurge_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void Rollups_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void RollupSubjectAndWatchers_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AppendOnly_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamUpdateSyncBug_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void KvMultipleConcurrentCreate_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AccountInfoForSystemAccount_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ListFilter_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerUpdates_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerMaxDeliverUpdate_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AccountReservations_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConcurrentAccountLimits_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void BalancedPlacement_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerPendingBug_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PullPerf_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PullConsumerLeaderChange_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void EphemeralPullConsumerServerShutdown_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void NakBackoffs_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void RedeliverBackoffs_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerUpgrade_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void AddConsumerWithInfo_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamReplicaUpdates_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamAndConsumerScaleUpAndDown_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void InterestRetentionWithFilteredConsumersExtra_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamConsumersCount_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void FilteredAndIdleConsumerNrgGrowth_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MirrorOrSourceNotActiveReporting_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamAdvisories_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DuplicateRoutesDisruptJetStreamMetaGroup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DuplicateMsgIdsOnCatchupAndLeaderTakeover_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerLeaderChangeDeadlock_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MemoryConsumerCompactVsSnapshot_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MemoryConsumerInterestRetention_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DeleteAndRestoreAndRestart_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MirrorSourceLoop_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MirrorDeDupWindow_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void NewHealthz_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerOverrides_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamRepublish_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerDeliverNewNotConsumingBeforeStepDownOrRestart_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerDeliverNewMaxRedeliveriesAndServerRestart_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void NoRestartAdvisories_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void R1StreamPlacementNoReservation_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerAndStreamNamesWithPathSeparators_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void FilteredMirrors_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SameClusterLeafNodes_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LeafNodeSpofMigrateLeaders_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LeafNodeSpofMigrateLeadersWithMigrateDelay_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamCatchupWithTruncateAndPriorSnapshot_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void NoOrphanedDueToNoConnection_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamResetOnExpirationDuringPeerDownAndRestartWithLeaderChange_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void PullConsumerMaxWaiting_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void EncryptedDoubleSnapshotBug_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void RePublishUpdateSupported_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DirectGetFromLeafnode_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void UnknownReplicaOnClusterRestart_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SnapshotBeforePurgeAndCatchup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamResetWithLargeFirstSeq_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamCatchupInteriorNilMsgs_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void LeaderAbortsCatchupOnFollowerError_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StreamDirectGetNotTooSoon_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void StaleReadsOnRestart_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ReplicasChangeStreamInfo_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MaxOutstandingCatchup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void CompressedStreamMessages_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void WorkQueueLosingMessagesOnConsumerDelete_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void R1ConsumerAdvisory_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void MessageTtlCatchup_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerRedeliveryAfterUnexpectedReplicatedAck_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ConsumerResetStartingSequenceToAgreedState_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SubjectDeleteMarkers_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SubjectDeleteMarkerClusteredProposal_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SubjectDeleteMarkersTtlRollupWithMaxAge_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SubjectDeleteMarkersTtlRollupWithoutMaxAge_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void SubjectDeleteMarkersTimingWithMaxAge_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DesyncAfterFailedScaleUp_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void ScaleUpWithQuorum_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DesyncAfterDiskResetOne_ShouldSucceed() { } + + [Fact(Skip = "deferred: requires running JetStream cluster")] + public void DesyncAfterDiskResetAllButOne_ShouldSucceed() { } +}