perf(worker): launcher-configurable event queue capacity
This commit is contained in:
@@ -1099,4 +1099,59 @@ public sealed class GatewayOptionsValidatorTests
|
||||
Assert.True(result.Failed);
|
||||
Assert.Contains(result.Failures!, f => f.Contains("MaxMessageBytes") && f.Contains("reserve"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies the shipped worker event-queue capacity default passes validation and still matches
|
||||
/// the worker-side <c>MxAccessEventQueue.DefaultCapacity</c> the environment variable falls back
|
||||
/// to when the launcher value is unusable.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void Validate_Succeeds_WithDefaultEventQueueCapacity()
|
||||
{
|
||||
Assert.Equal(10000, new WorkerOptions().EventQueueCapacity);
|
||||
|
||||
ValidateOptionsResult result = new GatewayOptionsValidator().Validate(null, ValidOptions());
|
||||
Assert.True(result.Succeeded);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies a worker event-queue capacity outside the supported range fails validation. Too
|
||||
/// small leaves no burst headroom (an overflow faults the whole session); too large commits the
|
||||
/// 32-bit worker to an outsized pre-allocation.
|
||||
/// </summary>
|
||||
/// <param name="eventQueueCapacity">Capacity under test.</param>
|
||||
[Theory]
|
||||
[InlineData(0)]
|
||||
[InlineData(-1)]
|
||||
[InlineData(999)]
|
||||
[InlineData(1_000_001)]
|
||||
public void Validate_Fails_WhenEventQueueCapacityOutOfRange(int eventQueueCapacity)
|
||||
{
|
||||
ValidateOptionsResult result = new GatewayOptionsValidator().Validate(
|
||||
null,
|
||||
WithWorkerAndProtocol(
|
||||
new WorkerOptions { EventQueueCapacity = eventQueueCapacity },
|
||||
new ProtocolOptions()));
|
||||
|
||||
Assert.True(result.Failed);
|
||||
Assert.Contains(
|
||||
result.Failures!,
|
||||
f => f.Contains("MxGateway:Worker:EventQueueCapacity", StringComparison.Ordinal));
|
||||
}
|
||||
|
||||
/// <summary>Verifies the worker event-queue capacity bounds themselves are accepted.</summary>
|
||||
/// <param name="eventQueueCapacity">Capacity under test.</param>
|
||||
[Theory]
|
||||
[InlineData(1000)]
|
||||
[InlineData(1_000_000)]
|
||||
public void Validate_Succeeds_AtEventQueueCapacityBounds(int eventQueueCapacity)
|
||||
{
|
||||
ValidateOptionsResult result = new GatewayOptionsValidator().Validate(
|
||||
null,
|
||||
WithWorkerAndProtocol(
|
||||
new WorkerOptions { EventQueueCapacity = eventQueueCapacity },
|
||||
new ProtocolOptions()));
|
||||
|
||||
Assert.True(result.Succeeded);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user