using Shouldly; using ZB.MOM.NatsNet.Server; namespace ZB.MOM.NatsNet.Server.Tests.ImplBacklog; public sealed class JetStreamSuperClusterTests { [Fact] // T:1453 public void JetStreamSuperClusterMoveCancel_ShouldSucceed() { var updates = new RecoveryUpdates(); var stream = new StreamAssignment { Client = new ClientInfo { Account = "ACC" }, Config = new StreamConfig { Name = "ORDERS" } }; updates.AddStream(stream); updates.RemoveStream(stream); updates.AddStreams.ShouldBeEmpty(); updates.RemoveStreams.ShouldContainKey("ACC:ORDERS"); } [Fact] // T:1454 public void JetStreamSuperClusterDoubleStreamMove_ShouldSucceed() { var cluster = new JetStreamCluster(); var assignment = new StreamAssignment { Config = new StreamConfig { Name = "ORDERS" } }; cluster.TrackInflightStreamProposal("ACC", assignment, deleted: false); cluster.TrackInflightStreamProposal("ACC", assignment, deleted: false); cluster.InflightStreams["ACC"]["ORDERS"].Ops.ShouldBe(2UL); } [Fact] // T:1457 public void JetStreamSuperClusterSystemLimitsPlacement_ShouldSucceed() { var engine = new JetStreamEngine(new global::ZB.MOM.NatsNet.Server.JetStream()); engine.IsClustered().ShouldBeFalse(); engine.IsClusteredNoLock().ShouldBeFalse(); } [Fact] // T:1465 public void JetStreamSuperClusterConsumerAckSubjectWithStreamImportProtocolError_ShouldSucceed() { var updates = new RecoveryUpdates(); var consumer = new ConsumerAssignment { Client = new ClientInfo { Account = "ACC" }, Stream = "ORDERS", Name = "ship" }; updates.AddOrUpdateConsumer(consumer); updates.UpdateConsumers["ACC:ORDERS"].ShouldContainKey("ORDERS:ship"); } }