Cleanup
ci / checks (push) Failing after 23m22s

This commit is contained in:
khodowany
2026-10-08 02:13:45 -05:00
parent 300097a37e
commit bc7baea7c4
88 changed files with 18844 additions and 1335 deletions
+33
View File
@@ -14,6 +14,7 @@
#include <boost/asio/redirect_error.hpp>
#include <boost/asio/steady_timer.hpp>
#include <boost/asio/use_awaitable.hpp>
#include <boost/asio/thread_pool.hpp>
#include <vamp_zero/errors.hpp>
#include <vamp_zero/score_loader.hpp>
@@ -93,6 +94,38 @@ BOOST_AUTO_TEST_CASE(score_loader_starts_asynchronously_from_executor_handler) {
BOOST_CHECK_EQUAL(*fixture.completions, 1U);
}
BOOST_AUTO_TEST_CASE(score_loader_worker_keeps_control_executor_responsive_and_returns_completion) {
auto io = boost::asio::io_context{};
auto worker = boost::asio::thread_pool{1};
auto entered = std::promise<void>{};
auto release = std::promise<void>{};
auto resume = release.get_future().share();
auto completed = false;
auto control_thread = std::this_thread::get_id();
auto loader = vamp_zero::score_loader{io.get_executor(),
[&entered, resume](vamp_zero::score_reference reference) -> boost::asio::awaitable<std::expected<vamp_zero::score_document, modulus::error>> {
entered.set_value();
resume.wait();
co_return vamp_zero::score_document{.id = reference.id};
},
[&] { completed = true; BOOST_CHECK(std::this_thread::get_id() == control_thread); }, worker.get_executor()};
loader.select(std::make_shared<vamp_zero::catalog>(), performance("a"));
auto started = entered.get_future().wait_for(std::chrono::seconds{2}) == std::future_status::ready;
auto serviced = false;
boost::asio::post(io, [&] { serviced = true; });
io.poll();
BOOST_CHECK(serviced);
BOOST_CHECK(!completed);
release.set_value();
worker.join();
io.restart();
io.run();
BOOST_REQUIRE(started);
BOOST_CHECK(completed);
BOOST_REQUIRE(loader.snapshot().document);
BOOST_CHECK_EQUAL(loader.snapshot().document->id, "a");
}
BOOST_AUTO_TEST_CASE(score_loader_coalesces_pending_and_discards_stale_results) {
auto fixture = loader_fixture{};
fixture.loader.select(fixture.catalog, performance("a"));