Adds MaxFlushPending constant (10), SignalFlushPending/ResetFlushPending helpers, and ShouldCoalesceFlush property to NatsClient, matching Go's maxFlushPending / fsp flush-signal coalescing in server/client.go.
51 lines
1.6 KiB
C#
51 lines
1.6 KiB
C#
namespace NATS.Server.Tests;
|
|
|
|
// Go reference: server/client.go (maxFlushPending, pcd, flush signal coalescing)
|
|
|
|
public class FlushCoalescingTests
|
|
{
|
|
[Fact]
|
|
public void MaxFlushPending_defaults_to_10()
|
|
{
|
|
// Go reference: server/client.go maxFlushPending constant
|
|
NatsClient.MaxFlushPending.ShouldBe(10);
|
|
}
|
|
|
|
[Fact]
|
|
public void ShouldCoalesceFlush_true_when_below_max()
|
|
{
|
|
// When flush signals pending is below MaxFlushPending, coalescing is allowed
|
|
// Go reference: server/client.go fsp < maxFlushPending check
|
|
var pending = 5;
|
|
var shouldCoalesce = pending < NatsClient.MaxFlushPending;
|
|
shouldCoalesce.ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void ShouldCoalesceFlush_false_when_at_max()
|
|
{
|
|
// When flush signals pending reaches MaxFlushPending, force flush
|
|
var pending = NatsClient.MaxFlushPending;
|
|
var shouldCoalesce = pending < NatsClient.MaxFlushPending;
|
|
shouldCoalesce.ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void ShouldCoalesceFlush_false_when_above_max()
|
|
{
|
|
// Above max, definitely don't coalesce
|
|
var pending = NatsClient.MaxFlushPending + 5;
|
|
var shouldCoalesce = pending < NatsClient.MaxFlushPending;
|
|
shouldCoalesce.ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void FlushCoalescing_constant_matches_go_reference()
|
|
{
|
|
// Go reference: server/client.go maxFlushPending = 10
|
|
// Verify the constant is accessible and correct
|
|
NatsClient.MaxFlushPending.ShouldBeGreaterThan(0);
|
|
NatsClient.MaxFlushPending.ShouldBeLessThanOrEqualTo(100);
|
|
}
|
|
}
|