mbproxy: close out the dashboard code-review minor findings
Resolves the remaining Minor items from the 2026-05-15 review so the web-UI dashboard work has no open follow-ups: a real-HubConnection end-to-end test for the SignalR feed, stable mbproxy.admin.broadcast.* log-event names, keyboard/aria accessibility on the fleet table, frontend JS hardening (URL-decode guard, NaN guards, shared util.js), reconciler<->capture-registry coverage, throwing-sink and embedded-asset tests, broadcaster polish, and a soft upper bound on AdminPushIntervalMs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -64,3 +64,18 @@ internal sealed class FakeStatusPushSink : IStatusPushSink
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// An <see cref="IStatusPushSink"/> whose every push fails with an exception from the
|
||||
/// supplied factory — used to prove <see cref="StatusBroadcaster.PushOnceAsync"/> swallows
|
||||
/// a transport fault (and that its <c>when (ex is not OperationCanceledException)</c> filter
|
||||
/// still lets a cancellation propagate).
|
||||
/// </summary>
|
||||
internal sealed class ThrowingStatusPushSink(Func<Exception> exceptionFactory) : IStatusPushSink
|
||||
{
|
||||
public Task PushFleetAsync(StatusResponse snapshot, CancellationToken ct)
|
||||
=> throw exceptionFactory();
|
||||
|
||||
public Task PushPlcAsync(string plcName, PlcDetailResponse detail, CancellationToken ct)
|
||||
=> throw exceptionFactory();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user