adce27e7fa
#507 was filed as "injection inert in v3, re-migrate onto the raw subtree". Reading it, the retained code is not revivable: it resolves equipment from EquipmentNode.DriverInstanceId UNION EquipmentTags, and BOTH are structurally empty in v3 (AddressSpaceComposer always constructs EquipmentNode with a null DriverInstanceId; DeploymentArtifact hard-codes an empty EquipmentTags set). Removing the guard would have changed a log line and injected nothing. So it is deleted rather than fixed, and #507 closes as superseded by /raw browse-commit. Removed: HandleDiscoveredNodes, PartitionDiscoveredByDeviceHost, ShouldWarnPartition, PlansRoutingEqual, ApplyDiscoveredPlansForDriver, _discoveredByDriver, the redeploy re-inject tail, DiscoveredNodeMapper, DiscoveredInjection, AddressSpaceApplier.MaterialiseDiscoveredNodes, OpcUaPublishActor.MaterialiseDiscoveredNodes, and the Runtime-local copies of CapturingAddressSpaceBuilder/DiscoveredNode. The connect-time discovery loop goes too (StartDiscovery, RediscoverTick, HandleRediscoverAsync, DiscoveredNodesReady, TriggerRediscovery). With injection gone it had no consumer, and leaving it would either dead-letter or keep browsing real devices up to ~15x per connect to drop the result. ITagDiscovery itself stays — the /raw browse picker drives it through Commons/Browsing/DiscoveryDriverBrowser, which never went through the actor, so the picker is unaffected. deferment.md §4.4 called the 18 DiscoveryInjectionDormantV3 tests "Real — blocked on #507". They are not: they assert an equipment-rooted graft (EquipmentRootNodeId == "EQ-1") that v3 cannot produce, so they could never have unskipped as written. Deleted along with DiscoveredNodeMapperTests, the CapturingAddressSpaceBuilder tests, and the MaterialiseDiscoveredNodes tests in AddressSpaceApplierTests/OpcUaPublishActorTests. Runtime.Tests skipped: 31 -> 13. IHostConnectivityProbe is deliberately NOT resolved here. GetHostStatuses() has no production call site and nothing writes a DriverHostStatus row, but the table was re-created in the v3 initial migration, so deleting on inference would be wrong. Split to Gitea #521 with both options costed. CLAUDE.md, docs/drivers/{Galaxy,TwinCAT,MTConnect}.md updated — they described the seam as dead. Build clean; Runtime.Tests 476 passed / 13 skipped; OpcUaServer.Tests 362 passed / 4 skipped.
34 lines
2.4 KiB
C#
34 lines
2.4 KiB
C#
namespace ZB.MOM.WW.OtOpcUa.Runtime.Tests.Drivers;
|
|
|
|
/// <summary>
|
|
/// Shared xUnit <c>Skip</c> reason constants for tests whose intent is retained but whose subject is
|
|
/// not materialized in the v3 Batch-1 DARK address space. Equipment-tag variable nodes (and their
|
|
/// per-field intent: FullName / array / historize / native-alarm) are lit up by the Batch-4 dual
|
|
/// namespace + UNS↔Raw fan-out; until then the composer/artifact both emit an EMPTY equipment-tag
|
|
/// plan set, so any parity assertion over those plans has nothing to compare. The raw-tag parse
|
|
/// intent these tests characterized lives on in <see cref="TagConfigCorpusParityTests"/> (RawTagEntry
|
|
/// round-trip) and <c>TagConfigIntentTests</c> (the parse unit).
|
|
/// </summary>
|
|
internal static class DarkAddressSpaceReasons
|
|
{
|
|
/// <summary>Equipment-tag variable materialization + its per-field intent is dark until Batch 4.</summary>
|
|
public const string EquipmentTagsDarkBatch4 =
|
|
"v3 dark address space: equipment-tag variable plans (FullName/array/historize/alarm) do not " +
|
|
"materialize until Batch 4 (dual-namespace UNS↔Raw fan-out). The composer + artifact both emit an " +
|
|
"empty equipment-tag plan set this batch, so this parity has nothing to compare. Raw-tag parse " +
|
|
"intent is covered by TagConfigCorpusParityTests (RawTagEntry round-trip) + TagConfigIntentTests.";
|
|
|
|
// DiscoveryInjectionDormantV3 was removed with the injection path itself (§8.2, Gitea #507). The 18
|
|
// tests it skipped were v2 characterization tests — they asserted an equipment-rooted graft
|
|
// (EquipmentRootNodeId == "EQ-1") that v3 cannot produce, so they were deleted rather than unskipped.
|
|
// Discovered raw tags are authored through the /raw browse-commit flow; IRediscoverable now surfaces a
|
|
// re-browse prompt instead (DriverInstanceActorRediscoverySignalTests).
|
|
|
|
/// <summary>Equipment↔device host binding is architecturally retired in v3.</summary>
|
|
public const string EquipmentDeviceBindingRetired =
|
|
"v3: equipment no longer binds a driver/device (EquipmentNode has no DriverInstanceId/DeviceId/" +
|
|
"DeviceHost) — equipment references raw tags via UnsTagReference. The device-endpoint merge this " +
|
|
"test characterized is now covered by DeploymentArtifactRawPathTests " +
|
|
"(ParseDriverInstances_computes_nested_RawPath_and_merges_device_endpoint).";
|
|
}
|