task6(batch39): implement shutdown and signal flow paths

This commit is contained in:
Joseph Doherty
2026-03-01 01:30:17 -05:00
parent c0ec1f3341
commit 09f73a0d2f
7 changed files with 333 additions and 0 deletions

View File

@@ -6,6 +6,52 @@ namespace ZB.MOM.NatsNet.Server.Tests.ImplBacklog;
public sealed partial class ConcurrencyTests1
{
[Fact] // T:2389
public void NoRaceJetStreamWorkQueueLoadBalance_ShouldSucceed()
{
var stream = NatsStream.Create(
new Account { Name = "A" },
new StreamConfig { Name = "S", Subjects = ["jobs.>"] },
null,
null,
null,
null);
stream.ShouldNotBeNull();
var consumer = NatsConsumer.Create(stream!, new ConsumerConfig { Durable = "D", MaxWaiting = 4 }, ConsumerAction.CreateOrUpdate, null);
consumer.ShouldNotBeNull();
consumer!.ProcessNextMsgRequest("_INBOX.wq", "{\"batch\":2}"u8.ToArray()).ShouldBeTrue();
consumer.PendingRequests().ShouldContainKey("_INBOX.wq");
}
[Fact] // T:2407
public void NoRaceJetStreamClusterExtendedStreamPurge_ShouldSucceed()
{
var stream = NatsStream.Create(
new Account { Name = "A" },
new StreamConfig { Name = "S", Subjects = ["jobs.>"] },
null,
null,
null,
null);
stream.ShouldNotBeNull();
var consumer = NatsConsumer.Create(stream!, new ConsumerConfig { Durable = "D" }, ConsumerAction.CreateOrUpdate, null);
consumer.ShouldNotBeNull();
consumer!.ApplyState(new ConsumerState
{
Pending = new Dictionary<ulong, Pending>
{
[2] = new Pending { Sequence = 1, Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() },
},
});
consumer.Purge();
consumer.GetConsumerState().Pending.ShouldBeNull();
}
[Fact] // T:2373
public void NoRaceClosedSlowConsumerWriteDeadline_ShouldSucceed()
{