diff options
Diffstat (limited to 'test/storage')
-rw-r--r-- | test/storage/asset_file_source.test.cpp | 22 | ||||
-rw-r--r-- | test/storage/default_file_source.test.cpp | 100 | ||||
-rw-r--r-- | test/storage/http_file_source.test.cpp | 27 | ||||
-rw-r--r-- | test/storage/local_file_source.test.cpp | 20 | ||||
-rw-r--r-- | test/storage/offline_database.test.cpp | 62 | ||||
-rw-r--r-- | test/storage/offline_download.test.cpp | 10 | ||||
-rw-r--r-- | test/storage/online_file_source.test.cpp | 28 |
7 files changed, 135 insertions, 134 deletions
diff --git a/test/storage/asset_file_source.test.cpp b/test/storage/asset_file_source.test.cpp index 978a41a306..694d56be6d 100644 --- a/test/storage/asset_file_source.test.cpp +++ b/test/storage/asset_file_source.test.cpp @@ -33,8 +33,8 @@ TEST(AssetFileSource, Load) { requestCallback = [this, asset, endCallback](mbgl::Response res) { EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("content is here\n", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("content is here\n", *res.data.uncompressedData()); if (!--numRequests) { endCallback(); @@ -86,8 +86,8 @@ TEST(AssetFileSource, EmptyFile) { std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "asset://empty" }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("", *res.data.uncompressedData()); loop.stop(); }); @@ -102,8 +102,8 @@ TEST(AssetFileSource, NonEmptyFile) { std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "asset://nonempty" }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("content is here\n", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("content is here\n", *res.data.uncompressedData()); loop.stop(); }); @@ -119,7 +119,7 @@ TEST(AssetFileSource, NonExistentFile) { req.reset(); ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); // Do not assert on platform-specific error message. loop.stop(); }); @@ -137,7 +137,7 @@ TEST(AssetFileSource, InvalidURL) { ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::Other, res.error->reason); EXPECT_EQ("Invalid asset URL", res.error->message); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); loop.stop(); }); @@ -153,7 +153,7 @@ TEST(AssetFileSource, ReadDirectory) { req.reset(); ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); // Do not assert on platform-specific error message. loop.stop(); }); @@ -169,8 +169,8 @@ TEST(AssetFileSource, URLEncoding) { std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "asset://%6eonempty" }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("content is here\n", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("content is here\n", *res.data.uncompressedData()); loop.stop(); }); diff --git a/test/storage/default_file_source.test.cpp b/test/storage/default_file_source.test.cpp index c11d442270..f74a515d86 100644 --- a/test/storage/default_file_source.test.cpp +++ b/test/storage/default_file_source.test.cpp @@ -19,8 +19,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheResponse)) { req1 = fs.request(resource, [&](Response res) { req1.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Response 1", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Response 1", *res.data.uncompressedData()); EXPECT_TRUE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -32,8 +32,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheResponse)) { req2 = fs.request(resource, [&](Response res2) { req2.reset(); EXPECT_EQ(response.error, res2.error); - ASSERT_TRUE(res2.data.get()); - EXPECT_EQ(*response.data, *res2.data); + ASSERT_TRUE(res2.data); + EXPECT_EQ(*response.data.uncompressedData(), *res2.data.uncompressedData()); EXPECT_EQ(response.expires, res2.expires); EXPECT_EQ(response.mustRevalidate, res2.mustRevalidate); EXPECT_EQ(response.modified, res2.modified); @@ -61,8 +61,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateSame)) { EXPECT_EQ(nullptr, res.error); EXPECT_FALSE(res.notModified); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Response", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Response", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_TRUE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -81,8 +81,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateSame)) { gotResponse = true; EXPECT_EQ(nullptr, res2.error); EXPECT_FALSE(res2.notModified); - ASSERT_TRUE(res2.data.get()); - EXPECT_EQ("Response", *res2.data); + ASSERT_TRUE(res2.data); + EXPECT_EQ("Response", *res2.data.uncompressedData()); EXPECT_TRUE(bool(res2.expires)); EXPECT_TRUE(res2.mustRevalidate); EXPECT_FALSE(bool(res2.modified)); @@ -95,7 +95,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateSame)) { req2.reset(); EXPECT_EQ(nullptr, res2.error); EXPECT_TRUE(res2.notModified); - EXPECT_FALSE(res2.data.get()); + EXPECT_FALSE(res2.data); EXPECT_TRUE(bool(res2.expires)); EXPECT_TRUE(res2.mustRevalidate); EXPECT_FALSE(bool(res2.modified)); @@ -124,8 +124,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateModified)) { EXPECT_EQ(nullptr, res.error); EXPECT_FALSE(res.notModified); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Response", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Response", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_TRUE(res.mustRevalidate); EXPECT_EQ(Timestamp{ Seconds(1420070400) }, *res.modified); @@ -144,8 +144,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateModified)) { gotResponse = true; EXPECT_EQ(nullptr, res2.error); EXPECT_FALSE(res2.notModified); - ASSERT_TRUE(res2.data.get()); - EXPECT_EQ("Response", *res2.data); + ASSERT_TRUE(res2.data); + EXPECT_EQ("Response", *res2.data.uncompressedData()); EXPECT_TRUE(bool(res2.expires)); EXPECT_TRUE(res2.mustRevalidate); EXPECT_EQ(Timestamp{ Seconds(1420070400) }, *res2.modified); @@ -158,7 +158,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateModified)) { req2.reset(); EXPECT_EQ(nullptr, res2.error); EXPECT_TRUE(res2.notModified); - EXPECT_FALSE(res2.data.get()); + EXPECT_FALSE(res2.data); EXPECT_TRUE(bool(res2.expires)); EXPECT_TRUE(res2.mustRevalidate); EXPECT_EQ(Timestamp{ Seconds(1420070400) }, *res2.modified); @@ -184,8 +184,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateEtag)) { req1.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Response 1", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Response 1", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_TRUE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -196,9 +196,9 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateEtag)) { req2.reset(); EXPECT_EQ(nullptr, res2.error); - ASSERT_TRUE(res2.data.get()); - EXPECT_NE(res.data, res2.data); - EXPECT_EQ("Response 2", *res2.data); + ASSERT_TRUE(res2.data); + EXPECT_FALSE(*res.data.uncompressedData() == *res2.data.uncompressedData()); + EXPECT_EQ("Response 2", *res2.data.uncompressedData()); EXPECT_FALSE(bool(res2.expires)); EXPECT_TRUE(res2.mustRevalidate); EXPECT_FALSE(bool(res2.modified)); @@ -235,8 +235,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(HTTPIssue1369)) { req = fs.request(resource, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -256,7 +256,7 @@ TEST(DefaultFileSource, OptionalNonExpired) { using namespace std::chrono_literals; Response response; - response.data = std::make_shared<std::string>("Cached value"); + response.data = Blob{ "Cached value", false }; response.expires = util::now() + 1h; fs.put(optionalResource, response); @@ -264,8 +264,8 @@ TEST(DefaultFileSource, OptionalNonExpired) { req = fs.request(optionalResource, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Cached value", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Cached value", *res.data.uncompressedData()); ASSERT_TRUE(bool(res.expires)); EXPECT_EQ(*response.expires, *res.expires); EXPECT_FALSE(res.mustRevalidate); @@ -286,7 +286,7 @@ TEST(DefaultFileSource, OptionalExpired) { using namespace std::chrono_literals; Response response; - response.data = std::make_shared<std::string>("Cached value"); + response.data = Blob{ "Cached value", false }; response.expires = util::now() - 1h; fs.put(optionalResource, response); @@ -294,8 +294,8 @@ TEST(DefaultFileSource, OptionalExpired) { req = fs.request(optionalResource, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Cached value", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Cached value", *res.data.uncompressedData()); ASSERT_TRUE(bool(res.expires)); EXPECT_EQ(*response.expires, *res.expires); EXPECT_FALSE(res.mustRevalidate); @@ -361,7 +361,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagNotModified)) { // Put a fake value into the cache to make sure we're not retrieving anything from the cache. Response response; - response.data = std::make_shared<std::string>("Cached value"); + response.data = Blob{ "Cached value", false }; response.expires = util::now() + 1h; fs.put(resource, response); @@ -370,7 +370,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagNotModified)) { req.reset(); EXPECT_EQ(nullptr, res.error); EXPECT_TRUE(res.notModified); - EXPECT_FALSE(res.data.get()); + EXPECT_FALSE(res.data); ASSERT_TRUE(bool(res.expires)); EXPECT_LT(util::now(), *res.expires); EXPECT_TRUE(res.mustRevalidate); @@ -396,7 +396,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagModified)) { // Put a fake value into the cache to make sure we're not retrieving anything from the cache. Response response; - response.data = std::make_shared<std::string>("Cached value"); + response.data = Blob{ "Cached value", false }; response.expires = util::now() + 1h; fs.put(resource, response); @@ -405,8 +405,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagModified)) { req.reset(); EXPECT_EQ(nullptr, res.error); EXPECT_FALSE(res.notModified); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Response", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Response", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_TRUE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -430,7 +430,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheFull)) { // Put a fake value into the cache to make sure we're not retrieving anything from the cache. Response response; - response.data = std::make_shared<std::string>("Cached value"); + response.data = Blob{ "Cached value", false }; response.expires = util::now() + 1h; fs.put(resource, response); @@ -439,8 +439,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheFull)) { req.reset(); EXPECT_EQ(nullptr, res.error); EXPECT_FALSE(res.notModified); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Response", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Response", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_TRUE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -466,7 +466,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedNotModified)) // Put a fake value into the cache to make sure we're not retrieving anything from the cache. Response response; - response.data = std::make_shared<std::string>("Cached value"); + response.data = Blob{ "Cached value", false }; response.expires = util::now() + 1h; fs.put(resource, response); @@ -475,7 +475,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedNotModified)) req.reset(); EXPECT_EQ(nullptr, res.error); EXPECT_TRUE(res.notModified); - EXPECT_FALSE(res.data.get()); + EXPECT_FALSE(res.data); ASSERT_TRUE(bool(res.expires)); EXPECT_LT(util::now(), *res.expires); EXPECT_TRUE(res.mustRevalidate); @@ -502,7 +502,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedModified)) { // Put a fake value into the cache to make sure we're not retrieving anything from the cache. Response response; - response.data = std::make_shared<std::string>("Cached value"); + response.data = Blob{ "Cached value", false }; response.expires = util::now() + 1h; fs.put(resource, response); @@ -511,8 +511,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedModified)) { req.reset(); EXPECT_EQ(nullptr, res.error); EXPECT_FALSE(res.notModified); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Response", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Response", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_TRUE(res.mustRevalidate); EXPECT_EQ(Timestamp{ Seconds(1420070400) }, *res.modified); @@ -543,8 +543,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(SetResourceTransform)) { req = fs.request(resource1, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -560,8 +560,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(SetResourceTransform)) { req = fs.request(resource2, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -584,7 +584,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(RespondToStaleMustRevalidate)) { // Put an existing value in the cache that has expired, and has must-revalidate set. Response response; - response.data = std::make_shared<std::string>("Cached value"); + response.data = Blob{ "Cached value", false }; response.modified = Timestamp(Seconds(1417392000)); // December 1, 2014 response.expires = Timestamp(Seconds(1417392000)); response.mustRevalidate = true; @@ -598,8 +598,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(RespondToStaleMustRevalidate)) { EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); EXPECT_EQ("Cached resource is unusable", res.error->message); EXPECT_FALSE(res.notModified); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Cached value", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Cached value", *res.data.uncompressedData()); ASSERT_TRUE(res.expires); EXPECT_EQ(Timestamp{ Seconds(1417392000) }, *res.expires); EXPECT_TRUE(res.mustRevalidate); @@ -622,7 +622,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(RespondToStaleMustRevalidate)) { // request. We're replacing the data so that we can check that the DefaultFileSource doesn't // attempt another database access if we already have the value. resource.loadingMethod = Resource::LoadingMethod::NetworkOnly; - resource.priorData = std::make_shared<std::string>("Prior value"); + resource.priorData = Blob{ "Prior value", false }; req = fs.request(resource, [&](Response res) { req.reset(); @@ -632,11 +632,11 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(RespondToStaleMustRevalidate)) { // OnlineFileSource to ensure that requestors know that this is the first time they're // seeing this data. EXPECT_FALSE(res.notModified); - ASSERT_TRUE(res.data.get()); + ASSERT_TRUE(res.data); // Ensure that it's the value that we manually inserted into the cache rather than the value // the server returns, since we should be executing a revalidation request which doesn't // return new data, only a 304 Not Modified response. - EXPECT_EQ("Prior value", *res.data); + EXPECT_EQ("Prior value", *res.data.uncompressedData()); ASSERT_TRUE(res.expires); EXPECT_LE(util::now(), *res.expires); EXPECT_TRUE(res.mustRevalidate); diff --git a/test/storage/http_file_source.test.cpp b/test/storage/http_file_source.test.cpp index 006b7a0fb3..093a5c1ced 100644 --- a/test/storage/http_file_source.test.cpp +++ b/test/storage/http_file_source.test.cpp @@ -23,8 +23,8 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP200)) { auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test" }, [&](Response res) { EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -43,7 +43,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP404)) { ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); EXPECT_EQ("HTTP status code 404", res.error->message); - EXPECT_FALSE(bool(res.data)); + EXPECT_FALSE(res.data); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -61,7 +61,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTPTile404)) { auto req = fs.request({ Resource::Tile, "http://127.0.0.1:3000/doesnotexist" }, [&](Response res) { EXPECT_TRUE(res.noContent); EXPECT_FALSE(bool(res.error)); - EXPECT_FALSE(bool(res.data)); + EXPECT_FALSE(res.data); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -79,7 +79,8 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP200EmptyData)) { auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/empty-data" }, [&](Response res) { EXPECT_FALSE(res.noContent); EXPECT_FALSE(bool(res.error)); - EXPECT_EQ(*res.data, std::string()); + ASSERT_TRUE(res.data); + EXPECT_EQ(0u, res.data.uncompressedData()->size()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -97,7 +98,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP204)) { auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/no-content" }, [&](Response res) { EXPECT_TRUE(res.noContent); EXPECT_FALSE(bool(res.error)); - EXPECT_FALSE(bool(res.data)); + EXPECT_FALSE(res.data); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -116,7 +117,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP500)) { ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::Server, res.error->reason); EXPECT_EQ("HTTP status code 500", res.error->message); - EXPECT_FALSE(bool(res.data)); + EXPECT_FALSE(res.data); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -134,8 +135,8 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(ExpiresParsing)) { auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test?modified=1420794326&expires=1420797926&etag=foo" }, [&](Response res) { EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_EQ(Timestamp{ Seconds(1420797926) }, res.expires); EXPECT_FALSE(res.mustRevalidate); EXPECT_EQ(Timestamp{ Seconds(1420794326) }, res.modified); @@ -152,8 +153,8 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(CacheControlParsing)) { auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test?cachecontrol=max-age=120" }, [&](Response res) { EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_GT(Seconds(2), util::abs(*res.expires - util::now() - Seconds(120))) << "Expiration date isn't about 120 seconds in the future"; EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -181,8 +182,8 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(Load)) { [&, i, current](Response res) { reqs[i].reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ(std::string("Request ") + std::to_string(current), *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ(std::string("Request ") + std::to_string(current), *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); diff --git a/test/storage/local_file_source.test.cpp b/test/storage/local_file_source.test.cpp index e1756f8e7d..76848f6682 100644 --- a/test/storage/local_file_source.test.cpp +++ b/test/storage/local_file_source.test.cpp @@ -37,8 +37,8 @@ TEST(LocalFileSource, EmptyFile) { std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL("empty") }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("", *res.data.uncompressedData()); loop.stop(); }); @@ -53,8 +53,8 @@ TEST(LocalFileSource, NonEmptyFile) { std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL("nonempty") }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("content is here\n", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("content is here\n", *res.data.uncompressedData()); loop.stop(); }); @@ -70,7 +70,7 @@ TEST(LocalFileSource, NonExistentFile) { req.reset(); ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); // Do not assert on platform-specific error message. loop.stop(); }); @@ -88,7 +88,7 @@ TEST(LocalFileSource, InvalidURL) { ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::Other, res.error->reason); EXPECT_EQ("Invalid file URL", res.error->message); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); loop.stop(); }); @@ -104,7 +104,7 @@ TEST(LocalFileSource, ReadDirectory) { req.reset(); ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); // Do not assert on platform-specific error message. loop.stop(); }); @@ -120,8 +120,8 @@ TEST(LocalFileSource, URLEncoding) { std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL("%6eonempty") }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("content is here\n", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("content is here\n", *res.data.uncompressedData()); loop.stop(); }); @@ -142,7 +142,7 @@ TEST(LocalFileSource, URLLimit) { req.reset(); ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::Other, res.error->reason); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); loop.stop(); }); diff --git a/test/storage/offline_database.test.cpp b/test/storage/offline_database.test.cpp index 94daf59c02..23e70448b0 100644 --- a/test/storage/offline_database.test.cpp +++ b/test/storage/offline_database.test.cpp @@ -34,8 +34,8 @@ void deleteFile(const char* name) { } } -void writeFile(const char* name, const std::string& data) { - mbgl::util::write_file(name, data); +void writeFile(const char* name, mbgl::Blob&& data) { + mbgl::util::writeFile(name, data); } } // namespace @@ -79,7 +79,7 @@ TEST(OfflineDatabase, TEST_REQUIRES_WRITE(Invalid)) { createDir("test/fixtures/offline_database"); deleteFile("test/fixtures/offline_database/invalid.db"); - writeFile("test/fixtures/offline_database/invalid.db", "this is an invalid file"); + writeFile("test/fixtures/offline_database/invalid.db", Blob{ "this is an invalid file", false }); Log::setObserver(std::make_unique<FixtureLogObserver>()); @@ -124,23 +124,23 @@ TEST(OfflineDatabase, PutResource) { Resource resource { Resource::Style, "http://example.com/" }; Response response; - response.data = std::make_shared<std::string>("first"); + response.data = Blob{ "first", false }; auto insertPutResult = db.put(resource, response); EXPECT_TRUE(insertPutResult.first); EXPECT_EQ(5u, insertPutResult.second); auto insertGetResult = db.get(resource); EXPECT_EQ(nullptr, insertGetResult->error.get()); - EXPECT_EQ("first", *insertGetResult->data); + EXPECT_EQ("first", *insertGetResult->data.uncompressedData()); - response.data = std::make_shared<std::string>("second"); + response.data = Blob{ "second", false }; auto updatePutResult = db.put(resource, response); EXPECT_FALSE(updatePutResult.first); EXPECT_EQ(6u, updatePutResult.second); auto updateGetResult = db.get(resource); EXPECT_EQ(nullptr, updateGetResult->error.get()); - EXPECT_EQ("second", *updateGetResult->data); + EXPECT_EQ("second", *updateGetResult->data.uncompressedData()); } TEST(OfflineDatabase, PutTile) { @@ -158,23 +158,23 @@ TEST(OfflineDatabase, PutTile) { }; Response response; - response.data = std::make_shared<std::string>("first"); + response.data = Blob{ "first", false }; auto insertPutResult = db.put(resource, response); EXPECT_TRUE(insertPutResult.first); EXPECT_EQ(5u, insertPutResult.second); auto insertGetResult = db.get(resource); EXPECT_EQ(nullptr, insertGetResult->error.get()); - EXPECT_EQ("first", *insertGetResult->data); + EXPECT_EQ("first", *insertGetResult->data.uncompressedData()); - response.data = std::make_shared<std::string>("second"); + response.data = Blob{ "second", false }; auto updatePutResult = db.put(resource, response); EXPECT_FALSE(updatePutResult.first); EXPECT_EQ(6u, updatePutResult.second); auto updateGetResult = db.get(resource); EXPECT_EQ(nullptr, updateGetResult->error.get()); - EXPECT_EQ("second", *updateGetResult->data); + EXPECT_EQ("second", *updateGetResult->data.uncompressedData()); } TEST(OfflineDatabase, PutResourceNoContent) { @@ -190,7 +190,7 @@ TEST(OfflineDatabase, PutResourceNoContent) { auto res = db.get(resource); EXPECT_EQ(nullptr, res->error); EXPECT_TRUE(res->noContent); - EXPECT_FALSE(res->data.get()); + EXPECT_FALSE(res->data); } TEST(OfflineDatabase, PutTileNotFound) { @@ -213,7 +213,7 @@ TEST(OfflineDatabase, PutTileNotFound) { auto res = db.get(resource); EXPECT_EQ(nullptr, res->error); EXPECT_TRUE(res->noContent); - EXPECT_FALSE(res->data.get()); + EXPECT_FALSE(res->data); } TEST(OfflineDatabase, CreateRegion) { @@ -344,15 +344,15 @@ TEST(OfflineDatabase, TEST_REQUIRES_WRITE(ConcurrentUse)) { thread2.join(); } -static std::shared_ptr<std::string> randomString(size_t size) { - auto result = std::make_shared<std::string>(size, 0); +static mbgl::Blob randomBlob(size_t size) { + auto result = std::string(size, char()); std::mt19937 random; for (size_t i = 0; i < size; i++) { - (*result)[i] = random(); + result[i] = random(); } - return result; + return { std::move(result), false }; } TEST(OfflineDatabase, PutReturnsSize) { @@ -361,11 +361,11 @@ TEST(OfflineDatabase, PutReturnsSize) { OfflineDatabase db(":memory:"); Response compressible; - compressible.data = std::make_shared<std::string>(1024, 0); + compressible.data = Blob{ std::string(1024, char()), false }; EXPECT_EQ(17u, db.put(Resource::style("http://example.com/compressible"), compressible).second); Response incompressible; - incompressible.data = randomString(1024); + incompressible.data = randomBlob(1024); EXPECT_EQ(1024u, db.put(Resource::style("http://example.com/incompressible"), incompressible).second); Response noContent; @@ -379,7 +379,7 @@ TEST(OfflineDatabase, PutEvictsLeastRecentlyUsedResources) { OfflineDatabase db(":memory:", 1024 * 100); Response response; - response.data = randomString(1024); + response.data = randomBlob(1024); for (uint32_t i = 1; i <= 100; i++) { Resource resource = Resource::style("http://example.com/"s + util::toString(i)); @@ -398,7 +398,7 @@ TEST(OfflineDatabase, PutRegionResourceDoesNotEvict) { OfflineRegion region = db.createRegion(definition, OfflineRegionMetadata()); Response response; - response.data = randomString(1024); + response.data = randomBlob(1024); for (uint32_t i = 1; i <= 100; i++) { db.putRegionResource(region.getID(), Resource::style("http://example.com/"s + util::toString(i)), response); @@ -414,7 +414,7 @@ TEST(OfflineDatabase, PutFailsWhenEvictionInsuffices) { OfflineDatabase db(":memory:", 1024 * 100); Response big; - big.data = randomString(1024 * 100); + big.data = randomBlob(1024 * 100); EXPECT_FALSE(db.put(Resource::style("http://example.com/big"), big).first); EXPECT_FALSE(bool(db.get(Resource::style("http://example.com/big")))); @@ -435,7 +435,7 @@ TEST(OfflineDatabase, GetRegionCompletedStatus) { EXPECT_EQ(0u, status1.completedTileSize); Response response; - response.data = std::make_shared<std::string>("data"); + response.data = Blob{ "data", false }; uint64_t styleSize = db.putRegionResource(region.getID(), Resource::style("http://example.com/"), response); @@ -465,7 +465,7 @@ TEST(OfflineDatabase, HasRegionResource) { EXPECT_FALSE(bool(db.hasRegionResource(region.getID(), Resource::style("http://example.com/20")))); Response response; - response.data = randomString(1024); + response.data = randomBlob(1024); for (uint32_t i = 1; i <= 100; i++) { db.putRegionResource(region.getID(), Resource::style("http://example.com/"s + util::toString(i)), response); @@ -493,7 +493,7 @@ TEST(OfflineDatabase, HasRegionResourceTile) { }; Response response; - response.data = std::make_shared<std::string>("first"); + response.data = Blob{ "first", false }; EXPECT_FALSE(bool(db.hasRegionResource(region.getID(), resource))); db.putRegionResource(region.getID(), resource, response); @@ -522,7 +522,7 @@ TEST(OfflineDatabase, OfflineMapboxTileCount) { Resource mapboxTile2 = Resource::tile("mapbox://tiles/2", 1.0, 0, 0, 1, Tileset::Scheme::XYZ); Response response; - response.data = std::make_shared<std::string>("data"); + response.data = Blob{ "data", false }; // Count is initially zero. EXPECT_EQ(0u, db.getOfflineMapboxTileCount()); @@ -609,7 +609,7 @@ TEST(OfflineDatabase, MigrateFromV2Schema) { // v2.db is a v2 database containing a single offline region with a small number of resources. deleteFile("test/fixtures/offline_database/migrated.db"); - writeFile("test/fixtures/offline_database/migrated.db", util::read_file("test/fixtures/offline_database/v2.db")); + writeFile("test/fixtures/offline_database/migrated.db", util::readFile("test/fixtures/offline_database/v2.db")); { OfflineDatabase db("test/fixtures/offline_database/migrated.db", 0); @@ -630,7 +630,7 @@ TEST(OfflineDatabase, MigrateFromV3Schema) { // v3.db is a v3 database, migrated from v2. deleteFile("test/fixtures/offline_database/migrated.db"); - writeFile("test/fixtures/offline_database/migrated.db", util::read_file("test/fixtures/offline_database/v3.db")); + writeFile("test/fixtures/offline_database/migrated.db", util::readFile("test/fixtures/offline_database/v3.db")); { OfflineDatabase db("test/fixtures/offline_database/migrated.db", 0); @@ -649,7 +649,7 @@ TEST(OfflineDatabase, MigrateFromV4Schema) { // v4.db is a v4 database, migrated from v2 & v3. This database used `journal_mode = WAL` and `synchronous = NORMAL`. deleteFile("test/fixtures/offline_database/migrated.db"); - writeFile("test/fixtures/offline_database/migrated.db", util::read_file("test/fixtures/offline_database/v4.db")); + writeFile("test/fixtures/offline_database/migrated.db", util::readFile("test/fixtures/offline_database/v4.db")); { OfflineDatabase db("test/fixtures/offline_database/migrated.db", 0); @@ -675,7 +675,7 @@ TEST(OfflineDatabase, MigrateFromV5Schema) { // v5.db is a v5 database, migrated from v2, v3 & v4. deleteFile("test/fixtures/offline_database/migrated.db"); - writeFile("test/fixtures/offline_database/migrated.db", util::read_file("test/fixtures/offline_database/v5.db")); + writeFile("test/fixtures/offline_database/migrated.db", util::readFile("test/fixtures/offline_database/v5.db")); { OfflineDatabase db("test/fixtures/offline_database/migrated.db", 0); @@ -703,7 +703,7 @@ TEST(OfflineDatabase, DowngradeSchema) { // and recreated with the current schema. deleteFile("test/fixtures/offline_database/migrated.db"); - writeFile("test/fixtures/offline_database/migrated.db", util::read_file("test/fixtures/offline_database/v999.db")); + writeFile("test/fixtures/offline_database/migrated.db", util::readFile("test/fixtures/offline_database/v999.db")); { OfflineDatabase db("test/fixtures/offline_database/migrated.db", 0); diff --git a/test/storage/offline_download.test.cpp b/test/storage/offline_download.test.cpp index 57780eba40..f7528fb024 100644 --- a/test/storage/offline_download.test.cpp +++ b/test/storage/offline_download.test.cpp @@ -14,7 +14,6 @@ #include <iostream> using namespace mbgl; -using namespace std::literals::string_literals; class MockObserver : public OfflineRegionObserver { public: @@ -50,10 +49,11 @@ public: Response response(const std::string& path) { Response result; - result.data = std::make_shared<std::string>(util::read_file("test/fixtures/offline_download/"s + path)); - size_t uncompressed = result.data->size(); - size_t compressed = util::compress(*result.data).size(); - size += std::min(uncompressed, compressed); + result.data = util::readFile("test/fixtures/offline_download/" + path); + const auto data = util::isCompressible(*result.data.uncompressedData()) + ? result.data.compressedData() + : result.data.uncompressedData(); + size += data->size(); return result; } }; diff --git a/test/storage/online_file_source.test.cpp b/test/storage/online_file_source.test.cpp index 70bfe3ac95..9744c0a02e 100644 --- a/test/storage/online_file_source.test.cpp +++ b/test/storage/online_file_source.test.cpp @@ -33,8 +33,8 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(CancelMultiple)) { std::unique_ptr<AsyncRequest> req = fs.request(resource, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -61,7 +61,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(TemporaryError)) { ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::Server, res.error->reason); EXPECT_EQ("HTTP status code 500", res.error->message); - ASSERT_FALSE(bool(res.data)); + ASSERT_FALSE(res.data); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -72,8 +72,8 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(TemporaryError)) { EXPECT_LT(0.99, duration) << "Backoff timer didn't wait 1 second"; EXPECT_GT(1.2, duration) << "Backoff timer fired too late"; EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -100,7 +100,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(ConnectionError)) { EXPECT_GT(wait + 0.2, duration) << "Backoff timer fired too late"; ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::Connection, res.error->reason); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -127,8 +127,8 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(Timeout)) { std::unique_ptr<AsyncRequest> req = fs.request(resource, [&](Response res) { counter++; EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Hello World!", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Hello World!", *res.data.uncompressedData()); EXPECT_TRUE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -244,8 +244,8 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(Load)) { [&, i, current](Response res) { reqs[i].reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ(std::string("Request ") + std::to_string(current), *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ(std::string("Request ") + std::to_string(current), *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -282,8 +282,8 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(NetworkStatusChange)) { std::unique_ptr<AsyncRequest> req = fs.request(resource, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); - EXPECT_EQ("Response", *res.data); + ASSERT_TRUE(res.data); + EXPECT_EQ("Response", *res.data.uncompressedData()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -322,7 +322,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(NetworkStatusChangePreempt)) { } ASSERT_NE(nullptr, res.error); EXPECT_EQ(Response::Error::Reason::Connection, res.error->reason); - ASSERT_FALSE(res.data.get()); + ASSERT_FALSE(res.data); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(res.mustRevalidate); EXPECT_FALSE(bool(res.modified)); @@ -361,7 +361,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(NetworkStatusOnlineOffline)) { req.reset(); EXPECT_EQ(nullptr, res.error); - ASSERT_TRUE(res.data.get()); + ASSERT_TRUE(res.data); EXPECT_EQ(NetworkStatus::Get(), NetworkStatus::Status::Online) << "Triggered before set back to Online"; |