176 lines
6.4 KiB
C#
176 lines
6.4 KiB
C#
using System.Reflection;
|
|
using Shouldly;
|
|
using ZB.MOM.NatsNet.Server;
|
|
|
|
namespace ZB.MOM.NatsNet.Server.Tests.ImplBacklog;
|
|
|
|
public sealed class JetStreamClusterStreamsGroupATests
|
|
{
|
|
[Fact] // T:1578
|
|
public void MonitorCluster_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("MonitorCluster", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1579
|
|
public void CheckClusterSize_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("CheckClusterSize", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1580
|
|
public void ClusterStreamConfig_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("ClusterStreamConfig", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1581
|
|
public void MetaSnapshot_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("MetaSnapshot", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1582
|
|
public void ApplyMetaSnapshot_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("ApplyMetaSnapshot", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1583
|
|
public void DecodeMetaSnapshot_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("DecodeMetaSnapshot", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1584
|
|
public void EncodeMetaSnapshot_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("EncodeMetaSnapshot", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1585
|
|
public void CollectStreamAndConsumerChanges_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("CollectStreamAndConsumerChanges", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1586
|
|
public void SetStreamAssignmentRecovering_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("SetStreamAssignmentRecovering", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1587
|
|
public void SetConsumerAssignmentRecovering_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("SetConsumerAssignmentRecovering", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1588
|
|
public void CopyGroup_StreamAssignment_ShouldCloneGroupPeers()
|
|
{
|
|
var sa = new StreamAssignment
|
|
{
|
|
Group = new RaftGroup { Name = "RG", Peers = ["A", "B"] },
|
|
Config = new StreamConfig { Name = "S", Replicas = 3 },
|
|
};
|
|
|
|
var method = typeof(StreamAssignment).GetMethod("CopyGroup", BindingFlags.Instance | BindingFlags.NonPublic);
|
|
method.ShouldNotBeNull();
|
|
var copy = method!.Invoke(sa, []) as StreamAssignment;
|
|
copy.ShouldNotBeNull();
|
|
copy!.Group.ShouldNotBeNull();
|
|
ReferenceEquals(copy.Group, sa.Group).ShouldBeFalse();
|
|
copy.Group.Peers.SequenceEqual(sa.Group!.Peers).ShouldBeTrue();
|
|
}
|
|
|
|
[Fact] // T:1589
|
|
public void CopyGroup_ConsumerAssignment_ShouldCloneGroupPeers()
|
|
{
|
|
var ca = new ConsumerAssignment
|
|
{
|
|
Name = "C",
|
|
Stream = "S",
|
|
Group = new RaftGroup { Name = "RG", Peers = ["A", "B"] },
|
|
};
|
|
|
|
var method = typeof(ConsumerAssignment).GetMethod("CopyGroup", BindingFlags.Instance | BindingFlags.NonPublic);
|
|
method.ShouldNotBeNull();
|
|
var copy = method!.Invoke(ca, []) as ConsumerAssignment;
|
|
copy.ShouldNotBeNull();
|
|
copy!.Group.ShouldNotBeNull();
|
|
ReferenceEquals(copy.Group, ca.Group).ShouldBeFalse();
|
|
copy.Group.Peers.SequenceEqual(ca.Group!.Peers).ShouldBeTrue();
|
|
}
|
|
|
|
[Fact] // T:1590
|
|
public void MissingPeers_StreamAssignment_ShouldReflectReplicaGap()
|
|
{
|
|
var sa = new StreamAssignment
|
|
{
|
|
Config = new StreamConfig { Name = "S", Replicas = 3 },
|
|
Group = new RaftGroup { Peers = ["A", "B"] },
|
|
};
|
|
var method = typeof(StreamAssignment).GetMethod("MissingPeers", BindingFlags.Instance | BindingFlags.NonPublic);
|
|
method.ShouldNotBeNull();
|
|
((bool)method!.Invoke(sa, [])!).ShouldBeTrue();
|
|
}
|
|
|
|
[Fact] // T:1591
|
|
public void ProcessAddPeer_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("ProcessAddPeer", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1592
|
|
public void ProcessRemovePeer_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("ProcessRemovePeer", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1593
|
|
public void RemovePeerFromStream_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("RemovePeerFromStream", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1594
|
|
public void RemovePeerFromStreamLocked_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("RemovePeerFromStreamLocked", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1595
|
|
public void HasPeerEntries_Method_ShouldExist()
|
|
{
|
|
typeof(JetStreamEngine).GetMethod("HasPeerEntries", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact] // T:1596
|
|
public void RecoveryKey_StreamAssignment_ShouldUseAccountAndName()
|
|
{
|
|
var sa = new StreamAssignment
|
|
{
|
|
Client = new ClientInfo { Account = "A", ServiceName = "SA" },
|
|
Config = new StreamConfig { Name = "ORDERS" },
|
|
};
|
|
var method = typeof(StreamAssignment).GetMethod("RecoveryKey", BindingFlags.Instance | BindingFlags.NonPublic);
|
|
method.ShouldNotBeNull();
|
|
method!.Invoke(sa, [])!.ToString().ShouldBe("SA:ORDERS");
|
|
}
|
|
|
|
[Fact] // T:1597
|
|
public void StreamRecoveryKey_ConsumerAssignment_ShouldUseAccountAndStream()
|
|
{
|
|
var ca = new ConsumerAssignment
|
|
{
|
|
Client = new ClientInfo { Account = "A", ServiceName = "SA" },
|
|
Stream = "ORDERS",
|
|
Name = "C1",
|
|
};
|
|
var method = typeof(ConsumerAssignment).GetMethod("StreamRecoveryKey", BindingFlags.Instance | BindingFlags.NonPublic);
|
|
method.ShouldNotBeNull();
|
|
method!.Invoke(ca, [])!.ToString().ShouldBe("SA:ORDERS");
|
|
}
|
|
}
|