test(harness): serialize Host.IntegrationTests; drop the reconciler's unused singleton proxy
Closes the last branch-only failures. Measured across five full-suite runs on this branch versus two on master in a clean worktree: master failed only AbCip in this assembly (2/2), while the branch additionally failed one or two E2E deploy tests, rotating between DeployHappyPath, DriverReconnect and EquipmentNamespaceMaterialization (4/4). Each passed in isolation, and the assembly on its own was 195/201 throughout — the failures only appeared under full-suite CPU contention. Cause is contention, not correctness. Every test here builds a real two-node Akka cluster — two Kestrel hosts, two ActorSystems with remoting, six admin singletons, an EF context, a deploy pipeline — and xUnit ran them concurrently with each other and with every other assembly. That was survivable while the coordinator sealed instantly on an empty expected-ack set; now that it waits for a real ack from every configured node, these tests measure an end-to-end round-trip and starve. Serialising this one assembly makes them deterministic: 195/201 with only AbCip_Green_AgainstSim, and the full-solution failure set is now IDENTICAL to master's — 7 shared, zero branch-only. Cost is wall-clock for this assembly, 40s -> 3m35s; it is a handful of heavyweight E2E tests, not a broad unit suite, and a widened timeout alone did not fix it (tried first, at 45s). Also drops createProxyToo for the address reconciler. Nothing resolves ClusterNodeAddressReconcilerKey from the registry — the actor only reads cluster state and logs — so the proxy was a second actor per node hunting for a singleton nobody addresses. Kept because it removes dead machinery, not because it fixed the flakiness; measured on its own, it did not. Claude-Session: https://claude.ai/code/session_01GASWkNEi68FSCtvr6rLoEW
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
using Xunit;
|
||||
|
||||
// Every test in this assembly builds a real two-node Akka cluster: two in-process Kestrel hosts,
|
||||
// two ActorSystems with remoting on ephemeral ports, six admin-role cluster singletons, an EF
|
||||
// context and a deploy pipeline. Running several of those concurrently — on top of the other test
|
||||
// assemblies dotnet test runs in parallel — starves the cluster-formation and ApplyAck timers these
|
||||
// tests measure, so failures appear under full-suite load and vanish in isolation.
|
||||
//
|
||||
// That was tolerable while the deploy path sealed immediately on an empty expected-ack set. Since
|
||||
// per-cluster mesh Phase 1 the coordinator waits for a real ack from every configured node, so these
|
||||
// tests now measure an end-to-end round-trip and are correspondingly more sensitive to CPU
|
||||
// starvation. Serialising this assembly trades wall-clock for determinism; the assembly is a handful
|
||||
// of heavyweight E2E tests, not a broad unit suite.
|
||||
[assembly: CollectionBehavior(DisableTestParallelization = true)]
|
||||
Reference in New Issue
Block a user