test(ab): default AB matrices to one profile when unset; PLC-5/status-bit refusal fixture tests (#594, #593)

Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
Joseph Doherty
2026-10-08 06:45:51 -04:00
parent 3baa332d6b
commit b37e9613f7
3 changed files with 121 additions and 4 deletions
@@ -9,7 +9,10 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests;
/// Every AbCip compose profile binds host <c>:44818</c>, so only one can run at a time. When
/// <c>AB_SERVER_COMPOSE_PROFILE</c> is set, <see cref="Profiles"/> keeps only that profile, so the
/// rows match the running container instead of driving, say, Micro800 semantics at a ControlLogix.
/// Unset, every profile is crossed (the original behaviour).
/// Unset, only the default ControlLogix profile is crossed: ab_server does not self-identify its
/// <c>--plc</c> mode, so crossing every family at whichever container holds <c>:44818</c> failed the
/// non-matching rows instead of skipping them. Set <c>AB_SERVER_COMPOSE_PROFILE</c> to the running
/// profile (<c>compactlogix</c> / <c>micro800</c> / <c>guardlogix</c>) to select another family.
/// </remarks>
public static class TransportMatrix
{
@@ -24,8 +27,9 @@ public static class TransportMatrix
{
var only = Environment.GetEnvironmentVariable("AB_SERVER_COMPOSE_PROFILE");
return from p in KnownProfiles.All
where string.IsNullOrEmpty(only) ||
string.Equals(p.ComposeProfile, only, StringComparison.OrdinalIgnoreCase)
where string.Equals(p.ComposeProfile,
string.IsNullOrEmpty(only) ? KnownProfiles.ControlLogix.ComposeProfile : only,
StringComparison.OrdinalIgnoreCase)
from t in AllTransports
select new object[] { p, t };
}