summaryrefslogtreecommitdiff
path: root/test/storage/cache_response.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/storage/cache_response.cpp')
-rw-r--r--test/storage/cache_response.cpp219
1 files changed, 0 insertions, 219 deletions
diff --git a/test/storage/cache_response.cpp b/test/storage/cache_response.cpp
deleted file mode 100644
index aa5e5dbfcf..0000000000
--- a/test/storage/cache_response.cpp
+++ /dev/null
@@ -1,219 +0,0 @@
-#include "storage.hpp"
-
-#include <mbgl/storage/online_file_source.hpp>
-#include <mbgl/storage/sqlite_cache.hpp>
-#include <mbgl/util/chrono.hpp>
-#include <mbgl/util/run_loop.hpp>
-
-TEST_F(Storage, CacheResponse) {
- SCOPED_TEST(CacheResponse);
-
- using namespace mbgl;
-
- util::RunLoop loop;
- SQLiteCache cache(":memory:");
- OnlineFileSource fs(&cache);
-
- const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/cache" };
- Response response;
-
- std::unique_ptr<FileRequest> req1;
- std::unique_ptr<FileRequest> req2;
-
- req1 = fs.request(resource, [&](Response res) {
- req1.reset();
- EXPECT_EQ(nullptr, res.error);
- ASSERT_TRUE(res.data.get());
- EXPECT_EQ("Response 1", *res.data);
- EXPECT_TRUE(bool(res.expires));
- EXPECT_FALSE(bool(res.modified));
- EXPECT_FALSE(bool(res.etag));
- response = res;
-
- // Now test that we get the same values as in the previous request. If we'd go to the server
- // again, we'd get different values.
- 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);
- EXPECT_EQ(response.expires, res2.expires);
- EXPECT_EQ(response.modified, res2.modified);
- EXPECT_EQ(response.etag, res2.etag);
-
- loop.stop();
- CacheResponse.finish();
- });
- });
-
- loop.run();
-}
-
-// Make sure we /do/ store 404 Not Found responses into the cache
-TEST_F(Storage, CacheNotFound) {
- SCOPED_TEST(CacheNotFound);
-
- using namespace mbgl;
-
- util::RunLoop loop;
- SQLiteCache cache(":memory:");
- OnlineFileSource fs(&cache);
-
- const Resource resource{ Resource::Unknown, "http://127.0.0.1:3000/not-found" };
-
- // Insert existing data into the cache that will be marked as stale.
- Response response;
- response.data = std::make_shared<const std::string>("existing data");
- cache.put(resource, response);
-
- std::unique_ptr<FileRequest> req1;
- std::unique_ptr<WorkRequest> req2;
-
- int counter = 0;
-
- // Then, request the actual URL and check that we're getting the rigged cache response first,
- // then the connection error message.
- req1 = fs.request(resource, [&](Response res) {
- if (counter == 0) {
- EXPECT_EQ(nullptr, res.error);
- ASSERT_TRUE(res.data.get());
- EXPECT_EQ("existing data", *res.data);
- EXPECT_FALSE(bool(res.expires));
- EXPECT_FALSE(bool(res.modified));
- EXPECT_FALSE(bool(res.etag));
- } else if (counter == 1) {
- EXPECT_NE(nullptr, res.error);
- EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason);
- ASSERT_TRUE(res.data.get());
- EXPECT_EQ("Not Found!", *res.data);
- req1.reset();
-
- // Finally, check the cache to make sure we cached the 404 response.
- req2 = cache.get(resource, [&](std::unique_ptr<Response> res2) {
- EXPECT_NE(nullptr, res2->error);
- EXPECT_EQ(Response::Error::Reason::NotFound, res2->error->reason);
- ASSERT_TRUE(res2->data.get());
- EXPECT_EQ("Not Found!", *res2->data);
- CacheNotFound.finish();
- loop.stop();
- });
- } else {
- FAIL() << "Got too many responses";
- }
- counter++;
- });
-
- loop.run();
-}
-
-// Make sure we don't store a connection error into the cache
-TEST_F(Storage, DontCacheConnectionErrors) {
- SCOPED_TEST(DontCacheConnectionErrors);
-
- using namespace mbgl;
-
- util::RunLoop loop;
- SQLiteCache cache(":memory:");
- OnlineFileSource fs(&cache);
-
- const Resource resource{ Resource::Unknown, "http://127.0.0.1:3001" };
-
- // Insert existing data into the cache that will be marked as stale.
- Response response;
- response.data = std::make_shared<const std::string>("existing data");
- cache.put(resource, response);
-
- std::unique_ptr<FileRequest> req1;
- std::unique_ptr<WorkRequest> req2;
-
- int counter = 0;
-
- // Then, request the actual URL and check that we're getting the rigged cache response first,
- // then the connection error message.
- req1 = fs.request(resource, [&](Response res) {
- if (counter == 0) {
- EXPECT_EQ(nullptr, res.error);
- ASSERT_TRUE(res.data.get());
- EXPECT_EQ("existing data", *res.data);
- EXPECT_FALSE(bool(res.expires));
- EXPECT_FALSE(bool(res.modified));
- EXPECT_FALSE(bool(res.etag));
- } else if (counter == 1) {
- EXPECT_NE(nullptr, res.error);
- EXPECT_EQ(Response::Error::Reason::Connection, res.error->reason);
- req1.reset();
-
- // Finally, check the cache to make sure we still have our original data in there rather
- // than the failed connection attempt.
- req2 = cache.get(resource, [&](std::unique_ptr<Response> res2) {
- EXPECT_EQ(nullptr, res2->error);
- ASSERT_TRUE(res2->data.get());
- EXPECT_EQ("existing data", *res2->data);
- DontCacheConnectionErrors.finish();
- loop.stop();
- });
- } else {
- FAIL() << "Got too many responses";
- }
- counter++;
- });
-
- loop.run();
-}
-
-// Make sure we don't store a bad server response into the cache
-TEST_F(Storage, DontCacheServerErrors) {
- SCOPED_TEST(DontCacheServerErrors);
-
- using namespace mbgl;
-
- util::RunLoop loop;
- SQLiteCache cache(":memory:");
- OnlineFileSource fs(&cache);
-
- const Resource resource{ Resource::Unknown, "http://127.0.0.1:3000/permanent-error" };
-
- // Insert existing data into the cache that will be marked as stale.
- Response response;
- response.data = std::make_shared<const std::string>("existing data");
- cache.put(resource, response);
-
- std::unique_ptr<FileRequest> req1;
- std::unique_ptr<WorkRequest> req2;
-
- int counter = 0;
-
- // Then, request the actual URL and check that we're getting the rigged cache response first,
- // then the server error message.
- req1 = fs.request(resource, [&](Response res) {
- if (counter == 0) {
- EXPECT_EQ(nullptr, res.error);
- ASSERT_TRUE(res.data.get());
- EXPECT_EQ("existing data", *res.data);
- EXPECT_FALSE(bool(res.expires));
- EXPECT_FALSE(bool(res.modified));
- EXPECT_FALSE(bool(res.etag));
- } else if (counter == 1) {
- EXPECT_NE(nullptr, res.error);
- EXPECT_EQ(Response::Error::Reason::Server, res.error->reason);
- ASSERT_TRUE(res.data.get());
- EXPECT_EQ("Server Error!", *res.data);
- req1.reset();
-
- // Finally, check the cache to make sure we still have our original data in there rather
- // than the failed connection attempt.
- req2 = cache.get(resource, [&](std::unique_ptr<Response> res2) {
- EXPECT_EQ(nullptr, res2->error);
- ASSERT_TRUE(res2->data.get());
- EXPECT_EQ("existing data", *res2->data);
- DontCacheServerErrors.finish();
- loop.stop();
- });
- } else {
- FAIL() << "Got too many responses";
- }
- counter++;
- });
-
- loop.run();
-}