diff --git a/src/etl/CacheLoader.hpp b/src/etl/CacheLoader.hpp index 0d53688d..bb162aa7 100644 --- a/src/etl/CacheLoader.hpp +++ b/src/etl/CacheLoader.hpp @@ -130,7 +130,8 @@ public: void stop() noexcept { - loader_->stop(); + if (loader_ != nullptr) + loader_->stop(); } /** @@ -139,7 +140,8 @@ public: void wait() noexcept { - loader_->wait(); + if (loader_ != nullptr) + loader_->wait(); } }; diff --git a/tests/unit/etl/CacheLoaderTests.cpp b/tests/unit/etl/CacheLoaderTests.cpp index 719a5fc4..c8d71d1a 100644 --- a/tests/unit/etl/CacheLoaderTests.cpp +++ b/tests/unit/etl/CacheLoaderTests.cpp @@ -270,3 +270,18 @@ TEST_F(CacheLoaderTest, DisabledCacheLoaderDoesNotLoadCache) loader.load(kSEQ); } + +TEST_F(CacheLoaderTest, DisabledCacheLoaderCanCallStopAndWait) +{ + auto const cfg = getParseCacheConfig(json::parse(R"({"cache": {"load": "none"}})")); + CacheLoader loader{cfg, backend_, cache}; + + EXPECT_CALL(cache, updateImp).Times(0); + EXPECT_CALL(cache, isFull).WillRepeatedly(Return(false)); + EXPECT_CALL(cache, setDisabled).Times(1); + + loader.load(kSEQ); + + EXPECT_NO_THROW(loader.stop()); + EXPECT_NO_THROW(loader.wait()); +}