test(opcua): prove saturation observer runtime event delivery

This commit is contained in:
Joseph Doherty
2026-11-10 14:54:17 -05:00
parent 9ad218d44f
commit 92ddd08fda
4 changed files with 35 additions and 11 deletions
@@ -859,6 +859,7 @@ public sealed class Sdk2LifecycleSoakTests
var stdout = observer.StandardOutput.ReadToEndAsync(deadline.Token);
var stderr = observer.StandardError.ReadToEndAsync(deadline.Token);
await control.AttachAsync(deadline.Token);
if (!foreignMarker) SaturationProtocolRuntimeProbe(1).ShouldBe(2);
if (foreignMarker) SaturationMarkers.Log.Boundary(Guid.NewGuid().ToString("D"), "window1-start", 321, 80);
control.Boundary("window1-start", 321, 80);
await Task.Delay(20, deadline.Token);
@@ -868,6 +869,12 @@ public sealed class Sdk2LifecycleSoakTests
control.Boundary("window2-end", 384, 96);
await control.DetachAndDrainAsync(deadline.Token);
control.Readiness.ShouldBe(!foreignMarker);
if (!foreignMarker)
{
using var parsed = JsonDocument.Parse(await File.ReadAllTextAsync(Path.Combine(directory, "drained.json"), deadline.Token));
parsed.RootElement.GetProperty("runtimeControlJit").GetInt32().ShouldBeGreaterThan(0,
"the known non-SDK probe must prove runtime-provider delivery and method classification");
}
SaturationMarkers.Log.IsEnabled().ShouldBeFalse("Stop and stream drain precede return to the target");
await observer.WaitForExitAsync(deadline.Token);
observer.ExitCode.ShouldBe(0, await stderr);
@@ -880,6 +887,10 @@ public sealed class Sdk2LifecycleSoakTests
}
}
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining
| System.Runtime.CompilerServices.MethodImplOptions.NoOptimization)]
private static int SaturationProtocolRuntimeProbe(int value) => value + 1;
[EventSource(Name = "OtOpcUa-Sdk2-Saturation")]
private sealed class SaturationMarkers : EventSource
{