summaryrefslogtreecommitdiff
path: root/test/storage
diff options
context:
space:
mode:
Diffstat (limited to 'test/storage')
-rw-r--r--test/storage/main_resource_loader.test.cpp36
-rw-r--r--test/storage/offline_database.test.cpp8
2 files changed, 40 insertions, 4 deletions
diff --git a/test/storage/main_resource_loader.test.cpp b/test/storage/main_resource_loader.test.cpp
index ee9211b064..b5245dbad8 100644
--- a/test/storage/main_resource_loader.test.cpp
+++ b/test/storage/main_resource_loader.test.cpp
@@ -8,6 +8,7 @@
#include <mbgl/storage/resource_transform.hpp>
#include <mbgl/test/util.hpp>
#include <mbgl/util/run_loop.hpp>
+#include <mbgl/util/timer.hpp>
using namespace mbgl;
@@ -749,3 +750,38 @@ TEST(MainResourceLoader, TEST_REQUIRES_SERVER(CachedResourceLowPriority)) {
loop.run();
}
+
+TEST(MainResourceLoader, TEST_REQUIRES_SERVER(NoDoubleDispatch)) {
+ util::RunLoop loop;
+ MainResourceLoader fs(ResourceOptions{});
+
+ const Resource resource{Resource::Unknown, "http://127.0.0.1:3000/revalidate-same"};
+ Response response;
+ response.data = std::make_shared<std::string>("data");
+ response.etag.emplace("snowfall");
+
+ std::unique_ptr<AsyncRequest> req;
+ unsigned responseCount = 0u;
+ auto dbfs = FileSourceManager::get()->getFileSource(FileSourceType::Database, ResourceOptions{});
+ dbfs->forward(resource, response, [&] {
+ req = fs.request(resource, [&](Response res) {
+ EXPECT_EQ(nullptr, res.error);
+ EXPECT_FALSE(bool(res.modified));
+ EXPECT_TRUE(bool(res.etag));
+ EXPECT_EQ("snowfall", *res.etag);
+ if (!res.notModified) {
+ ASSERT_TRUE(res.data.get());
+ EXPECT_EQ("data", *res.data);
+ ++responseCount;
+ }
+ });
+ });
+
+ util::Timer timer;
+ timer.start(Milliseconds(100), Duration::zero(), [&loop, &responseCount] {
+ EXPECT_EQ(1u, responseCount);
+ loop.stop();
+ });
+
+ loop.run();
+}
diff --git a/test/storage/offline_database.test.cpp b/test/storage/offline_database.test.cpp
index f988457dac..f344151297 100644
--- a/test/storage/offline_database.test.cpp
+++ b/test/storage/offline_database.test.cpp
@@ -779,7 +779,7 @@ TEST(OfflineDatabase, MapboxTileLimitExceeded) {
db.put(ambientTile, response);
};
- auto insertRegionTile = [&](int64_t regionID, unsigned i) {
+ auto insertRegionTile = [&](int64_t regionID, uint64_t i) {
const Resource tile = Resource::tile("mapbox://region_tile_" + std::to_string(i), 1, 0, 0, 0, Tileset::Scheme::XYZ);
db.putRegionResource(regionID, tile, response);
};
@@ -801,14 +801,14 @@ TEST(OfflineDatabase, MapboxTileLimitExceeded) {
ASSERT_EQ(db.getOfflineMapboxTileCount(), 0);
// Fine because this region is under the tile limit.
- for (unsigned i = 0; i < limit - 10; ++i) {
+ for (uint64_t i = 0; i < limit - 10; ++i) {
insertRegionTile(region1->getID(), i);
}
ASSERT_EQ(db.getOfflineMapboxTileCount(), limit - 10);
// Fine because this region + the previous is at the limit.
- for (unsigned i = limit; i < limit + 10; ++i) {
+ for (uint64_t i = limit; i < limit + 10; ++i) {
insertRegionTile(region2->getID(), i);
}
@@ -848,7 +848,7 @@ TEST(OfflineDatabase, MapboxTileLimitExceeded) {
// 10, which would blow up the limit if it wasn't
// for the fact that tile 60 is already on the
// database and will not count.
- for (unsigned i = limit; i < limit + 10; ++i) {
+ for (uint64_t i = limit; i < limit + 10; ++i) {
insertRegionTile(region1->getID(), i);
}