Files
natsdotnet/tests/NATS.Server.Tests/FlushCoalescingTests.cs
Joseph Doherty 36e23fa31d feat(client): add flush coalescing to reduce write syscalls
Adds MaxFlushPending constant (10), SignalFlushPending/ResetFlushPending
helpers, and ShouldCoalesceFlush property to NatsClient, matching Go's
maxFlushPending / fsp flush-signal coalescing in server/client.go.
2026-02-25 02:33:44 -05:00

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);
}
}