61 lines
2.3 KiB
C#
61 lines
2.3 KiB
C#
using MxGateway.Server.Metrics;
|
|
|
|
namespace MxGateway.Tests.Metrics;
|
|
|
|
public sealed class GatewayMetricsTests
|
|
{
|
|
[Fact]
|
|
public void GetSnapshot_ReflectsSessionWorkerCommandEventAndFaultUpdates()
|
|
{
|
|
using GatewayMetrics metrics = new();
|
|
|
|
metrics.SessionOpened();
|
|
metrics.WorkerStarted(TimeSpan.FromMilliseconds(250));
|
|
metrics.CommandStarted("Register");
|
|
metrics.CommandSucceeded("Register", TimeSpan.FromMilliseconds(10));
|
|
metrics.CommandStarted("WriteSecured");
|
|
metrics.CommandFailed("WriteSecured", "AuthorizationFailed", TimeSpan.FromMilliseconds(12));
|
|
metrics.EventReceived("session-1", "OnDataChange");
|
|
metrics.EventReceived("session-1", "OnDataChange");
|
|
metrics.SetEventQueueDepth(7);
|
|
metrics.QueueOverflow("session-events");
|
|
metrics.Fault("CommandTimeout");
|
|
metrics.WorkerKilled("CommandTimeout");
|
|
metrics.WorkerStopped("Killed");
|
|
metrics.HeartbeatFailed("session-1");
|
|
metrics.StreamDisconnected("ClientCancelled");
|
|
metrics.SessionClosed();
|
|
|
|
GatewayMetricsSnapshot snapshot = metrics.GetSnapshot();
|
|
|
|
Assert.Equal(0, snapshot.OpenSessions);
|
|
Assert.Equal(0, snapshot.WorkersRunning);
|
|
Assert.Equal(7, snapshot.EventQueueDepth);
|
|
Assert.Equal(1, snapshot.SessionsOpened);
|
|
Assert.Equal(1, snapshot.SessionsClosed);
|
|
Assert.Equal(2, snapshot.CommandsStarted);
|
|
Assert.Equal(1, snapshot.CommandsSucceeded);
|
|
Assert.Equal(1, snapshot.CommandsFailed);
|
|
Assert.Equal(2, snapshot.EventsReceived);
|
|
Assert.Equal(1, snapshot.QueueOverflows);
|
|
Assert.Equal(1, snapshot.Faults);
|
|
Assert.Equal(1, snapshot.WorkerKills);
|
|
Assert.Equal(1, snapshot.WorkerExits);
|
|
Assert.Equal(1, snapshot.HeartbeatFailures);
|
|
Assert.Equal(1, snapshot.StreamDisconnects);
|
|
Assert.Equal(1, snapshot.CommandFailuresByMethod["WriteSecured"]);
|
|
Assert.Equal(2, snapshot.EventsByFamily["OnDataChange"]);
|
|
}
|
|
|
|
[Fact]
|
|
public void SetEventQueueDepth_RejectsNegativeDepth()
|
|
{
|
|
using GatewayMetrics metrics = new();
|
|
|
|
ArgumentOutOfRangeException exception = Assert.Throws<ArgumentOutOfRangeException>(
|
|
() => metrics.SetEventQueueDepth(-1));
|
|
|
|
Assert.Equal("depth", exception.ParamName);
|
|
}
|
|
}
|