test(historian): assert Deferred sink forwards historianTagname + doc nits
I1: DeferredAddressSpaceSinkTests.RecordingSink now captures HistorianTagname per EnsureVariable call (HistorianQueue/HistorianCalls, matching the Phase7ApplierTests pattern); new test EnsureVariable_forwards_historianTagname_to_inner_sink asserts the arg is forwarded unchanged through DeferredAddressSpaceSink. M1: OtOpcUaNodeManager.EnsureVariable doc-comment notes that a changed historize intent on an already-registered node is silently ignored until a RebuildAddressSpace (rebuild precondition for Task 3 implementers). N2: DeploymentArtifact.ExtractTagHistorize doc wording: "The live-edit side" → "The live-edit composer side".
This commit is contained in:
@@ -832,7 +832,10 @@ public sealed class OtOpcUaNodeManager : CustomNodeManager2
|
||||
/// <paramref name="parentFolderNodeId"/> (or root when null). Initial value=null, quality=Bad,
|
||||
/// timestamp=epoch — <see cref="WriteValue"/> fills these in once driver data flows.
|
||||
/// Idempotent. Materialises equipment-namespace tags so they're browseable before drivers
|
||||
/// issue SubscribeBulk.
|
||||
/// issue SubscribeBulk. Note: because of the early <c>_variables.ContainsKey</c> return, a
|
||||
/// re-apply of an EXISTING node with a changed historize intent (e.g. non-historized →
|
||||
/// historized) is silently ignored — a historize-intent change only takes effect after a
|
||||
/// <see cref="RebuildAddressSpace"/> (which the planner triggers on an equipment-tag delta).
|
||||
/// </summary>
|
||||
/// <param name="variableNodeId">The node identifier of the variable.</param>
|
||||
/// <param name="parentFolderNodeId">The node identifier of the parent folder; null to use the namespace root.</param>
|
||||
|
||||
@@ -680,7 +680,7 @@ public static class DeploymentArtifact
|
||||
/// <c>false</c>) and the optional <c>historianTagname</c> string override (absent / not a string /
|
||||
/// whitespace-or-empty ⇒ <c>null</c>, meaning the historian tagname defaults to the tag's FullName,
|
||||
/// resolved later). The raw string value is used — not trimmed — matching <c>ExtractTagFullName</c> /
|
||||
/// <c>ExtractTagAlarm</c>. Never throws. The live-edit side
|
||||
/// <c>ExtractTagAlarm</c>. Never throws. The live-edit composer side
|
||||
/// (<c>Phase7Composer.ExtractTagHistorize</c>) MUST parse identically (byte-parity).</summary>
|
||||
private static (bool IsHistorized, string? HistorianTagname) ExtractTagHistorize(string? tagConfig)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user