[core] Database file source does not return stored tiles for volatile resources
The `DatabaseFileSource.VolatileResource` test is included.
This commit is contained in:
@@ -21,7 +21,8 @@ public:
|
||||
: db(std::make_unique<OfflineDatabase>(cachePath)), onlineFileSource(std::move(onlineFileSource_)) {}
|
||||
|
||||
void request(const Resource& resource, const ActorRef<FileSourceRequest>& req) {
|
||||
auto offlineResponse = db->get(resource);
|
||||
optional<Response> offlineResponse =
|
||||
(resource.storagePolicy != Resource::StoragePolicy::Volatile) ? db->get(resource) : nullopt;
|
||||
if (!offlineResponse) {
|
||||
offlineResponse.emplace();
|
||||
offlineResponse->noContent = true;
|
||||
|
||||
@@ -22,5 +22,36 @@ TEST(DatabaseFileSource, PauseResume) {
|
||||
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<mbgl::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();
|
||||
}
|
||||
Reference in New Issue
Block a user