test(opcua): prove saturation observer runtime event delivery
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user