Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
58 lines
2.1 KiB
C++
58 lines
2.1 KiB
C++
#include <mln/storage/file_source_manager.hpp>
|
|
#include <mln/storage/resource.hpp>
|
|
#include <mln/storage/resource_options.hpp>
|
|
#include <mln/test/util.hpp>
|
|
#include <mln/util/run_loop.hpp>
|
|
#include <mln/util/timer.hpp>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
using namespace mln;
|
|
|
|
TEST(DatabaseFileSource, PauseResume) {
|
|
util::RunLoop loop;
|
|
|
|
std::shared_ptr<FileSource> dbfs = FileSourceManager::get()->getFileSource(FileSourceType::Database,
|
|
ResourceOptions{});
|
|
dbfs->pause();
|
|
|
|
const Resource res{Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::LoadingMethod::CacheOnly};
|
|
auto req = dbfs->request(res, [&](const Response&) { loop.stop(); });
|
|
|
|
util::Timer resumeTimer;
|
|
resumeTimer.start(Milliseconds(5), Duration::zero(), [dbfs] { dbfs->resume(); });
|
|
|
|
loop.run();
|
|
}
|
|
|
|
TEST(DatabaseFileSource, VolatileResource) {
|
|
util::RunLoop loop;
|
|
|
|
std::shared_ptr<FileSource> dbfs = FileSourceManager::get()->getFileSource(FileSourceType::Database,
|
|
ResourceOptions{});
|
|
|
|
Resource resource{Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::LoadingMethod::CacheOnly};
|
|
Response response{};
|
|
response.data = std::make_shared<std::string>("Cached value");
|
|
std::unique_ptr<mln::AsyncRequest> req;
|
|
|
|
dbfs->forward(resource, response, [&] {
|
|
req = dbfs->request(resource, [&](Response res1) {
|
|
EXPECT_EQ(nullptr, res1.error);
|
|
ASSERT_TRUE(res1.data.get());
|
|
EXPECT_FALSE(res1.noContent);
|
|
EXPECT_EQ("Cached value", *res1.data);
|
|
resource.storagePolicy = Resource::StoragePolicy::Volatile;
|
|
req = dbfs->request(resource, [&](Response res2) {
|
|
req.reset();
|
|
ASSERT_TRUE(res2.error.get());
|
|
EXPECT_TRUE(res2.noContent);
|
|
EXPECT_EQ(Response::Error::Reason::NotFound, res2.error->reason);
|
|
EXPECT_EQ("Not found in offline database", res2.error->message);
|
|
loop.stop();
|
|
});
|
|
});
|
|
});
|
|
loop.run();
|
|
}
|