docs: backfill XML documentation across 756 files
v2-ci / build (push) Failing after 1m43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped

Adds <summary>, <param>, <typeparam>, and <inheritdoc/> tags to public
members surfaced by commentchecker — resolves 5,847 of 5,869 issues
(99.6%) across three /fixdocs passes.
This commit is contained in:
Joseph Doherty
2026-05-28 08:10:17 -04:00
parent f9fc7dd2e1
commit 64e3fbe035
756 changed files with 9876 additions and 96 deletions
@@ -13,6 +13,7 @@ namespace ZB.MOM.WW.OtOpcUa.ControlPlane.Tests;
public sealed class AdminOperationsActorTests : ControlPlaneActorTestBase
{
/// <summary>Verifies that starting a deployment inserts a row and dispatches to the coordinator.</summary>
[Fact]
public void StartDeployment_inserts_deployment_and_dispatches_to_coordinator()
{
@@ -41,6 +42,7 @@ public sealed class AdminOperationsActorTests : ControlPlaneActorTestBase
db.ConfigEdits.Single().EntityType.ShouldBe("Deployment");
}
/// <summary>Verifies that starting a deployment is refused when another is in flight.</summary>
[Fact]
public void StartDeployment_refuses_when_another_is_in_flight()
{
@@ -21,6 +21,7 @@ public sealed class AuditWriterActorTests : ControlPlaneActorTestBase
SourceNode: NodeId.Parse("node-a"),
CorrelationId: CorrelationId.NewId());
/// <summary>Verifies that buffered events flush when count threshold is reached.</summary>
[Fact]
public void Buffered_events_flush_on_count_threshold()
{
@@ -39,6 +40,7 @@ public sealed class AuditWriterActorTests : ControlPlaneActorTestBase
}, duration: TimeSpan.FromSeconds(2));
}
/// <summary>Verifies that duplicate event IDs within a batch are deduplicated in the buffer.</summary>
[Fact]
public void Duplicate_eventIds_within_a_batch_dedup_in_buffer()
{
@@ -59,6 +61,7 @@ public sealed class AuditWriterActorTests : ControlPlaneActorTestBase
db.ConfigAuditLogs.Count().ShouldBe(100, "in-buffer dedup should collapse duplicate EventIds");
}
/// <summary>Verifies that PostStop flushes the pending buffer.</summary>
[Fact]
public void PostStop_flushes_pending_buffer()
{
@@ -77,6 +80,7 @@ public sealed class AuditWriterActorTests : ControlPlaneActorTestBase
db.ConfigAuditLogs.Count().ShouldBe(10);
}
/// <summary>Verifies that EventId and CorrelationId are persisted to dedicated columns.</summary>
[Fact]
public void EventId_and_CorrelationId_are_persisted_to_dedicated_columns()
{
@@ -9,6 +9,7 @@ namespace ZB.MOM.WW.OtOpcUa.ControlPlane.Tests;
public sealed class ConfigComposerTests : ControlPlaneActorTestBase
{
/// <summary>Verifies that an empty database produces a stable, reproducible hash.</summary>
[Fact]
public async Task Empty_database_produces_stable_hash()
{
@@ -24,6 +25,7 @@ public sealed class ConfigComposerTests : ControlPlaneActorTestBase
a1.Blob.ShouldBe(a2.Blob);
}
/// <summary>Verifies that insertion order does not affect the configuration hash.</summary>
[Fact]
public async Task Same_rows_in_different_insert_orders_produce_same_hash()
{
@@ -51,6 +53,7 @@ public sealed class ConfigComposerTests : ControlPlaneActorTestBase
hashAB.ShouldBe(hashBA);
}
/// <summary>Verifies that different database configurations produce different hashes.</summary>
[Fact]
public async Task Different_data_produces_different_hash()
{
@@ -72,6 +75,7 @@ public sealed class ConfigComposerTests : ControlPlaneActorTestBase
hashAB.ShouldNotBe(hashA);
}
/// <summary>Verifies that the revision hash is a 64-character lowercase hexadecimal string.</summary>
[Fact]
public async Task Hash_is_64_lowercase_hex_chars()
{
@@ -13,6 +13,7 @@ public sealed class ConfigPublishCoordinatorTests : ControlPlaneActorTestBase
{
private static readonly RevisionHash TestRevision = RevisionHash.Parse(new string('a', 64));
/// <summary>Verifies that deployment seals immediately when no driver-role members are in the cluster.</summary>
[Fact]
public void EmptyCluster_dispatch_seals_immediately()
{
@@ -32,6 +33,7 @@ public sealed class ConfigPublishCoordinatorTests : ControlPlaneActorTestBase
}, duration: TimeSpan.FromSeconds(3));
}
/// <summary>Verifies that stale apply acknowledgments arriving after seal are ignored.</summary>
[Fact]
public void Stale_ApplyAck_after_seal_is_ignored()
{
@@ -15,6 +15,7 @@ public sealed class ConfigPublishCoordinatorTimeoutTests : ControlPlaneActorTest
{
private static readonly RevisionHash TestRevision = RevisionHash.Parse(new string('b', 64));
/// <summary>Verifies that DeadlineElapsed marks the current deployment as timed out.</summary>
[Fact]
public void DeadlineElapsed_for_current_deployment_marks_TimedOut()
{
@@ -48,6 +49,7 @@ public sealed class ConfigPublishCoordinatorTimeoutTests : ControlPlaneActorTest
}, duration: TimeSpan.FromSeconds(3));
}
/// <summary>Verifies that stale DeadlineElapsed for other deployments is ignored.</summary>
[Fact]
public void Stale_DeadlineElapsed_for_other_deployment_is_ignored()
{
@@ -66,6 +68,7 @@ public sealed class ConfigPublishCoordinatorTimeoutTests : ControlPlaneActorTest
status.ShouldNotBe(DeploymentStatus.TimedOut);
}
/// <summary>Verifies that PreStart recovers in-flight deployment state.</summary>
[Fact]
public void PreStart_recovers_inflight_deployment_state()
{
@@ -10,6 +10,7 @@ namespace ZB.MOM.WW.OtOpcUa.ControlPlane.Tests;
public sealed class FleetStatusBroadcasterTests : ControlPlaneActorTestBase
{
/// <summary>Verifies that the self member's join appears in the initial fleet status snapshot.</summary>
[Fact]
public void Self_member_up_lands_in_snapshot()
{
@@ -22,6 +23,7 @@ public sealed class FleetStatusBroadcasterTests : ControlPlaneActorTestBase
snapshot.Nodes.Any(n => n.Health == FleetNodeHealth.Healthy).ShouldBeTrue();
}
/// <summary>Verifies that heartbeat messages update the node revision in the next broadcast.</summary>
[Fact]
public void Heartbeat_updates_revision_in_next_snapshot()
{
@@ -16,6 +16,7 @@ namespace ZB.MOM.WW.OtOpcUa.ControlPlane.Tests.Harness;
/// </summary>
public abstract class ControlPlaneActorTestBase : TestKit
{
/// <summary>Gets the Akka configuration for test actors, including cluster and pub-sub extensions.</summary>
protected static string AkkaTestHocon => @"
akka {
loglevel = ""WARNING""
@@ -38,6 +39,7 @@ akka {
}
}";
/// <summary>Initializes a new instance of the test harness; joins the cluster and waits for up status.</summary>
protected ControlPlaneActorTestBase() : base(AkkaTestHocon)
{
// Self-join so the cluster transitions to Up and DistributedPubSub forms.
@@ -47,6 +49,9 @@ akka {
TimeSpan.FromSeconds(5));
}
/// <summary>Creates a new in-memory database context factory with an optional database name.</summary>
/// <param name="dbName">Optional database name; defaults to a random GUID if not provided.</param>
/// <returns>A context factory for creating in-memory config database contexts.</returns>
protected static IDbContextFactory<OtOpcUaConfigDbContext> NewInMemoryDbFactory(string? dbName = null)
{
dbName ??= Guid.NewGuid().ToString("N");
@@ -55,6 +60,8 @@ akka {
private sealed class InMemoryConfigDbFactory(string dbName) : IDbContextFactory<OtOpcUaConfigDbContext>
{
/// <summary>Creates a new in-memory database context.</summary>
/// <returns>A new OtOpcUaConfigDbContext instance.</returns>
public OtOpcUaConfigDbContext CreateDbContext()
{
var opts = new DbContextOptionsBuilder<OtOpcUaConfigDbContext>()
@@ -15,6 +15,7 @@ namespace ZB.MOM.WW.OtOpcUa.ControlPlane.Tests;
/// </summary>
public sealed class RedundancyStateActorTests : ControlPlaneActorTestBase
{
/// <summary>Verifies that a self-join event triggers RedundancyStateChanged through the broadcast override.</summary>
[Fact]
public void Self_join_triggers_RedundancyStateChanged_via_broadcast_override()
{
@@ -27,6 +28,7 @@ public sealed class RedundancyStateActorTests : ControlPlaneActorTestBase
msg.CorrelationId.Value.ShouldNotBe(Guid.Empty);
}
/// <summary>Verifies that multiple back-to-back events debounce to a single RedundancyStateChanged publication.</summary>
[Fact]
public void Multiple_back_to_back_events_debounce_to_single_publish()
{
@@ -7,6 +7,8 @@ namespace ZB.MOM.WW.OtOpcUa.ControlPlane.Tests;
public sealed class ServiceLevelCalculatorTests
{
/// <summary>Verifies that non-Up member statuses return a service level of zero.</summary>
/// <param name="status">The Akka cluster member status to test.</param>
[Theory]
[InlineData(MemberStatus.Down)]
[InlineData(MemberStatus.Removed)]
@@ -19,6 +21,7 @@ public sealed class ServiceLevelCalculatorTests
sl.ShouldBe((byte)0);
}
/// <summary>Verifies that a fully healthy non-leader member returns a service level of 240.</summary>
[Fact]
public void Fully_healthy_non_leader_returns_240()
{
@@ -27,6 +30,7 @@ public sealed class ServiceLevelCalculatorTests
sl.ShouldBe((byte)240);
}
/// <summary>Verifies that a fully healthy role leader returns a service level of 250.</summary>
[Fact]
public void Fully_healthy_role_leader_returns_250()
{
@@ -35,6 +39,7 @@ public sealed class ServiceLevelCalculatorTests
sl.ShouldBe((byte)250);
}
/// <summary>Verifies that a database reachable but stale returns a service level of 200.</summary>
[Fact]
public void Db_reachable_but_stale_returns_200()
{
@@ -43,6 +48,7 @@ public sealed class ServiceLevelCalculatorTests
sl.ShouldBe((byte)200);
}
/// <summary>Verifies that an unreachable and stale database returns a service level of 100.</summary>
[Fact]
public void Db_unreachable_and_stale_returns_100()
{
@@ -51,6 +57,7 @@ public sealed class ServiceLevelCalculatorTests
sl.ShouldBe((byte)100);
}
/// <summary>Verifies that an OPC UA probe failure on a non-stale database returns zero.</summary>
[Fact]
public void Opcua_probe_fail_when_not_stale_returns_zero()
{
@@ -60,6 +67,7 @@ public sealed class ServiceLevelCalculatorTests
sl.ShouldBe((byte)0);
}
/// <summary>Verifies that a Joining member status is treated like Up for service level grading.</summary>
[Fact]
public void Joining_member_is_treated_like_Up_for_grading()
{