From 293b9469411d33fc6f9de2e62f2a003c0109ef00 Mon Sep 17 00:00:00 2001 From: Nicholas Dudfield Date: Fri, 18 Sep 2026 19:36:05 +0700 Subject: [PATCH] test(consensus): detect lagged validatedLedgerWork at enqueue observeJobs only fires at run time after the 20s lag. Use jobDiagnostics queued:lagged plus pending Export latches as the pre-stop work evidence. --- .../consensus/SteppingExtensions_test.cpp | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/test/consensus/SteppingExtensions_test.cpp b/src/test/consensus/SteppingExtensions_test.cpp index d341459054..7a9c8aadd5 100644 --- a/src/test/consensus/SteppingExtensions_test.cpp +++ b/src/test/consensus/SteppingExtensions_test.cpp @@ -1281,17 +1281,6 @@ class SteppingExtensions_test : public beast::unit_test::suite auto const stats = world.observed; net.controller().setJobLag( observer, jtADVANCE, "validatedLedgerWork", 20s); - net.controller().observeJobs( - [&net, stats]( - std::uint32_t id, JobType type, std::string const& name) { - if (id != observer || !net.isLive(id)) - return; - if (type != jtADVANCE || name != "validatedLedgerWork") - return; - auto& ce = net.node(id).app().getConsensusExtensions(); - if (ce.hasEligiblePendingExports()) - stats->queuedExportWork = true; - }); auto const payment = world.submit( observer, @@ -1304,9 +1293,19 @@ class SteppingExtensions_test : public beast::unit_test::suite return std::nullopt; auto const origin = tx->getID(); net.runTo(warmLedger + 6); - net.controller().observeJobs({}); + auto const diag = net.jobDiagnostics(); + stats->queuedExportWork = + diag.find("validatedLedgerWork") != std::string::npos && + diag.find("queued:lagged") != std::string::npos && + net.node(observer) + .app() + .getConsensusExtensions() + .hasEligiblePendingExports(); if (!BEAST_EXPECT(stats->queuedExportWork)) + { + log << " no queued Export work: " << diag << std::endl; return std::nullopt; + } BEAST_EXPECT(!net.node(observer).app().getValidatorKeys().keys); BEAST_EXPECT(stats->ownReleases[observer] == 0); BEAST_EXPECT(stats->secrets[observer] == 0);