namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.TestSupport;
/// One prerequisite probe's outcome. returns many of these.
/// Short diagnostic id — e.g. service:aaBootstrap, sql:ZB, registry:ArchestrA.Framework.
/// Which subsystem the probe belongs to — lets callers filter (e.g. "Historian warns don't gate the core Galaxy smoke").
/// Outcome.
/// One-line specific message an operator can act on — "aaGR not installed — install the Galaxy Repository role from the System Platform setup" beats "failed".
public sealed record PrerequisiteCheck(
string Name,
PrerequisiteCategory Category,
PrerequisiteStatus Status,
string Detail);
public enum PrerequisiteStatus
{
/// Prerequisite is met; no action needed.
Pass,
/// Soft dependency missing — stack still runs but some feature (e.g. logging) is degraded.
Warn,
/// Hard dependency missing — live tests can't proceed; surfaces this.
Fail,
/// Probe wasn't applicable in this environment (e.g. non-Windows host, Historian not installed).
Skip,
}
public enum PrerequisiteCategory
{
/// Platform sanity — process bitness, OS platform, DCOM/RPCSS.
Environment,
/// Hard-required AVEVA Windows services (aaBootstrap, aaGR, NmxSvc).
AvevaCoreService,
/// Soft-required AVEVA Windows services (aaLogger, aaUserValidator) — warn only.
AvevaSoftService,
/// ArchestrA Framework install markers (registry + files).
AvevaInstall,
/// MXAccess COM server registration + file on disk.
MxAccessCom,
/// SQL Server reachability + ZB database presence + deployed-object count.
GalaxyRepository,
/// Historian services (optional — only required for HistoryRead IPC paths).
AvevaHistorian,
/// OtOpcUa-side services (OtOpcUa, OtOpcUaGalaxyHost) + third-party deps (GLAuth).
OtOpcUaService,
}