From e4a3f07c9982cb862f58df8a98e789a5b8def351 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sun, 7 Jun 2026 03:37:04 -0400 Subject: [PATCH] test(integration): poll per-node diagnostics to remove timing fragility (review) --- .../MultiClusterScopingTests.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests/MultiClusterScopingTests.cs b/tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests/MultiClusterScopingTests.cs index b96cbd88..54c157ec 100644 --- a/tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests/MultiClusterScopingTests.cs +++ b/tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests/MultiClusterScopingTests.cs @@ -78,12 +78,23 @@ public sealed class MultiClusterScopingTests } // Per-node driver presence: each DriverHostActor spawned ONLY its own cluster's slice. + // Poll (rather than single-shot Ask) so transient timing after Sealed doesn't flake. var diagnostics = scope.ServiceProvider.GetRequiredService(); - var mainDrivers = await GetDriverNamesAsync(diagnostics, harness.NodeANodeId); + string[] mainDrivers = []; + await WaitForAsync(async () => + { + mainDrivers = await GetDriverNamesAsync(diagnostics, harness.NodeANodeId); + return mainDrivers.SequenceEqual(new[] { MainDriverId }); + }, TimeSpan.FromSeconds(10)); mainDrivers.ShouldBe(new[] { MainDriverId }); - var siteADrivers = await GetDriverNamesAsync(diagnostics, harness.NodeBNodeId); + string[] siteADrivers = []; + await WaitForAsync(async () => + { + siteADrivers = await GetDriverNamesAsync(diagnostics, harness.NodeBNodeId); + return siteADrivers.SequenceEqual(new[] { SiteADriverId }); + }, TimeSpan.FromSeconds(10)); siteADrivers.ShouldBe(new[] { SiteADriverId }); }