feat(otopcua): set Modbus/S7/Galaxy re-discovery policy to Once + Once-branch test (follow-up B)
This commit is contained in:
@@ -584,6 +584,15 @@ public sealed class GalaxyDriver
|
|||||||
|
|
||||||
// ===== ITagDiscovery (PR 4.1) =====
|
// ===== ITagDiscovery (PR 4.1) =====
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Run-once: <see cref="DiscoverAsync"/> fetches the full Galaxy hierarchy inline and
|
||||||
|
/// streams the complete node set within a single awaited call — there is no FOCAS-style
|
||||||
|
/// background cache that fills in after connect. Galaxy is a heavy network driver, so the
|
||||||
|
/// bounded post-connect retry loop is deliberately avoided; re-discovery on Galaxy
|
||||||
|
/// redeploy is handled separately via <see cref="IRediscoverable"/> + the deploy-event watcher.
|
||||||
|
/// </summary>
|
||||||
|
public DiscoveryRediscoverPolicy RediscoverPolicy => DiscoveryRediscoverPolicy.Once;
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public async Task DiscoverAsync(IAddressSpaceBuilder builder, CancellationToken cancellationToken)
|
public async Task DiscoverAsync(IAddressSpaceBuilder builder, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -261,6 +261,13 @@ public sealed class ModbusDriver
|
|||||||
|
|
||||||
// ---- ITagDiscovery ----
|
// ---- ITagDiscovery ----
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Run-once: <see cref="DiscoverAsync"/> emits the complete node set synchronously from
|
||||||
|
/// the configured tag table in a single pass — nothing fills in asynchronously after
|
||||||
|
/// connect, so a single discovery pass is sufficient.
|
||||||
|
/// </summary>
|
||||||
|
public DiscoveryRediscoverPolicy RediscoverPolicy => DiscoveryRediscoverPolicy.Once;
|
||||||
|
|
||||||
/// <summary>Discovers tags and builds the OPC UA address space.</summary>
|
/// <summary>Discovers tags and builds the OPC UA address space.</summary>
|
||||||
/// <param name="builder">Address space builder.</param>
|
/// <param name="builder">Address space builder.</param>
|
||||||
/// <param name="cancellationToken">Cancellation token.</param>
|
/// <param name="cancellationToken">Cancellation token.</param>
|
||||||
|
|||||||
@@ -1133,6 +1133,13 @@ public sealed class S7Driver
|
|||||||
|
|
||||||
// ---- ITagDiscovery ----
|
// ---- ITagDiscovery ----
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Run-once: <see cref="DiscoverAsync"/> emits the complete node set synchronously from
|
||||||
|
/// the configured tag table in a single pass — nothing fills in asynchronously after
|
||||||
|
/// connect, so a single discovery pass is sufficient.
|
||||||
|
/// </summary>
|
||||||
|
public DiscoveryRediscoverPolicy RediscoverPolicy => DiscoveryRediscoverPolicy.Once;
|
||||||
|
|
||||||
/// <summary>Discovers tags and builds the OPC UA address space.</summary>
|
/// <summary>Discovers tags and builds the OPC UA address space.</summary>
|
||||||
/// <param name="builder">Address space builder.</param>
|
/// <param name="builder">Address space builder.</param>
|
||||||
/// <param name="cancellationToken">Cancellation token.</param>
|
/// <param name="cancellationToken">Cancellation token.</param>
|
||||||
|
|||||||
@@ -18,6 +18,17 @@ public sealed class AbLegacyDriverTests
|
|||||||
drv.DriverInstanceId.ShouldBe("drv-1");
|
drv.DriverInstanceId.ShouldBe("drv-1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verifies AbLegacy opts into run-once post-connect re-discovery — it discovers its
|
||||||
|
/// complete node set synchronously from config, with no FOCAS-style background cache fill.
|
||||||
|
/// </summary>
|
||||||
|
[Fact]
|
||||||
|
public void RediscoverPolicy_is_Once()
|
||||||
|
{
|
||||||
|
var drv = new AbLegacyDriver(new AbLegacyDriverOptions(), "drv-1");
|
||||||
|
drv.RediscoverPolicy.ShouldBe(DiscoveryRediscoverPolicy.Once);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>Verifies that InitializeAsync with devices assigns family profiles.</summary>
|
/// <summary>Verifies that InitializeAsync with devices assigns family profiles.</summary>
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task InitializeAsync_with_devices_assigns_family_profiles()
|
public async Task InitializeAsync_with_devices_assigns_family_profiles()
|
||||||
|
|||||||
Reference in New Issue
Block a user