diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-07-26 16:07:00 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2017-07-26 16:07:00 +0200 |
commit | 8d3647317cefc0c1190ca80a7dc411cb4498f5f8 (patch) | |
tree | 71cb7152a03e5a03f33062794b1db1a05531c86a | |
parent | c9bf1235cdb0075900ad8e471886bbefceef891c (diff) |
[core] extract enums Response::Error::Reason => ResourceStatus, Resource::Kind => ResourceKind
46 files changed, 293 insertions, 273 deletions
diff --git a/bin/offline.cpp b/bin/offline.cpp index ec2fb0909..f5f3d0be8 100644 --- a/bin/offline.cpp +++ b/bin/offline.cpp @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) { } void responseError(Response::Error error) override { - std::cerr << error.reason << " downloading resource: " << error.message << std::endl; + std::cerr << error.status << " downloading resource: " << error.message << std::endl; } void mapboxTileCountLimitExceeded(uint64_t limit) override { diff --git a/cmake/core-files.cmake b/cmake/core-files.cmake index 93bc8326d..b81275356 100644 --- a/cmake/core-files.cmake +++ b/cmake/core-files.cmake @@ -311,6 +311,8 @@ set(MBGL_CORE_FILES include/mbgl/storage/offline.hpp include/mbgl/storage/online_file_source.hpp include/mbgl/storage/resource.hpp + include/mbgl/storage/resource_kind.hpp + include/mbgl/storage/resource_status.hpp include/mbgl/storage/resource_transform.hpp include/mbgl/storage/response.hpp src/mbgl/storage/asset_file_source.hpp diff --git a/include/mbgl/storage/resource.hpp b/include/mbgl/storage/resource.hpp index 7e9ced804..85feb9c1e 100644 --- a/include/mbgl/storage/resource.hpp +++ b/include/mbgl/storage/resource.hpp @@ -1,7 +1,8 @@ #pragma once -#include <mbgl/storage/response.hpp> +#include <mbgl/storage/resource_kind.hpp> #include <mbgl/util/optional.hpp> +#include <mbgl/util/chrono.hpp> #include <mbgl/util/font_stack.hpp> #include <mbgl/util/tileset.hpp> @@ -11,17 +12,6 @@ namespace mbgl { class Resource { public: - enum Kind : uint8_t { - Unknown = 0, - Style, - Source, - Tile, - Glyphs, - SpriteImage, - SpriteJSON, - Image - }; - struct TileData { std::string urlTemplate; uint8_t pixelRatio; @@ -35,7 +25,7 @@ public: Required = true, }; - Resource(Kind kind_, std::string url_, optional<TileData> tileData_ = {}, Necessity necessity_ = Required) + Resource(ResourceKind kind_, std::string url_, optional<TileData> tileData_ = {}, Necessity necessity_ = Required) : kind(kind_), necessity(necessity_), url(std::move(url_)), @@ -57,8 +47,8 @@ public: static Resource spriteImage(const std::string& base, float pixelRatio); static Resource spriteJSON(const std::string& base, float pixelRatio); static Resource image(const std::string& url); - - Kind kind; + + ResourceKind kind; Necessity necessity; std::string url; diff --git a/include/mbgl/storage/resource_kind.hpp b/include/mbgl/storage/resource_kind.hpp new file mode 100644 index 000000000..200668ca4 --- /dev/null +++ b/include/mbgl/storage/resource_kind.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include <cstdint> + +namespace mbgl { + +enum class ResourceKind : uint8_t { + Unknown = 0, + Style = 1, + Source = 2, + Tile = 3, + Glyphs = 4, + SpriteImage = 5, + SpriteJSON = 6, + Image = 7, +}; + +} // namespace mbgl diff --git a/include/mbgl/storage/resource_status.hpp b/include/mbgl/storage/resource_status.hpp new file mode 100644 index 000000000..f428d36d1 --- /dev/null +++ b/include/mbgl/storage/resource_status.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include <cstdint> + +namespace mbgl { + +enum class ResourceStatus : uint8_t { + Success = 1, + NotFoundError = 2, + ServerError = 3, + ConnectionError = 4, + RateLimitError = 5, + OtherError = 6, +}; + +} // namespace mbgl diff --git a/include/mbgl/storage/resource_transform.hpp b/include/mbgl/storage/resource_transform.hpp index 738c49717..3c38e3f7c 100644 --- a/include/mbgl/storage/resource_transform.hpp +++ b/include/mbgl/storage/resource_transform.hpp @@ -12,12 +12,12 @@ class Mailbox; class ResourceTransform { public: - using TransformCallback = std::function<std::string(Resource::Kind kind, const std::string&& url)>; + using TransformCallback = std::function<std::string(ResourceKind kind, const std::string&& url)>; using FinishedCallback = std::function<void(const std::string&&)>; ResourceTransform(ActorRef<ResourceTransform>, TransformCallback&&); - void transform(Resource::Kind, const std::string&& url, FinishedCallback&&); + void transform(ResourceKind, const std::string&& url, FinishedCallback&&); private: TransformCallback transformCallback; diff --git a/include/mbgl/storage/response.hpp b/include/mbgl/storage/response.hpp index 32fe4e0c8..c532b1216 100644 --- a/include/mbgl/storage/response.hpp +++ b/include/mbgl/storage/response.hpp @@ -1,5 +1,6 @@ #pragma once +#include <mbgl/storage/resource_status.hpp> #include <mbgl/util/chrono.hpp> #include <mbgl/util/optional.hpp> #include <mbgl/util/variant.hpp> @@ -41,14 +42,7 @@ public: class Response::Error { public: - enum class Reason : uint8_t { - Success = 1, - NotFound = 2, - Server = 3, - Connection = 4, - RateLimit = 5, - Other = 6, - } reason = Reason::Other; + ResourceStatus status = ResourceStatus::OtherError; // An error message from the request handler, e.g. a server message or a system message // informing the user about the reason for the failure. @@ -57,9 +51,9 @@ public: optional<Timestamp> retryAfter; public: - Error(Reason, std::string = "", optional<Timestamp> = {}); + Error(ResourceStatus, std::string = "", optional<Timestamp> = {}); }; -std::ostream& operator<<(std::ostream&, Response::Error::Reason); +std::ostream& operator<<(std::ostream&, ResourceStatus); } // namespace mbgl diff --git a/platform/android/src/asset_manager_file_source.cpp b/platform/android/src/asset_manager_file_source.cpp index aa65e3ff4..bd2524e91 100644 --- a/platform/android/src/asset_manager_file_source.cpp +++ b/platform/android/src/asset_manager_file_source.cpp @@ -27,7 +27,7 @@ public: reinterpret_cast<const char*>(AAsset_getBuffer(asset)), AAsset_getLength64(asset)); AAsset_close(asset); } else { - response.error = std::make_unique<Response::Error>(Response::Error::Reason::NotFound, + response.error = std::make_unique<Response::Error>(ResourceStatus::NotFoundError, "Could not read asset"); } diff --git a/platform/android/src/file_source.cpp b/platform/android/src/file_source.cpp index 5d19c506b..c16e09303 100644 --- a/platform/android/src/file_source.cpp +++ b/platform/android/src/file_source.cpp @@ -52,7 +52,7 @@ void FileSource::setResourceTransform(jni::JNIEnv& env, jni::Object<FileSource:: // Note: we're converting it to shared_ptr because this lambda is converted to a std::function, // which requires copyability of its captured variables. [callback = std::shared_ptr<jni::jobject>(transformCallback.NewGlobalRef(env).release()->Get(), GenericGlobalRefDeleter())] - (mbgl::Resource::Kind kind, const std::string&& url_) { + (mbgl::ResourceKind kind, const std::string&& url_) { android::UniqueEnv _env = android::AttachEnv(); return FileSource::ResourceTransformCallback::onURL(*_env, jni::Object<FileSource::ResourceTransformCallback>(*callback), int(kind), url_); }); diff --git a/platform/android/src/http_file_source.cpp b/platform/android/src/http_file_source.cpp index ee1429bd7..e8c2c8727 100644 --- a/platform/android/src/http_file_source.cpp +++ b/platform/android/src/http_file_source.cpp @@ -132,12 +132,12 @@ void HTTPRequest::onResponse(jni::JNIEnv& env, int code, } else { response.data = std::make_shared<std::string>(); } - } else if (code == 204 || (code == 404 && resource.kind == Resource::Kind::Tile)) { + } else if (code == 204 || (code == 404 && resource.kind == ResourceKind::Tile)) { response.noContent = true; } else if (code == 304) { response.notModified = true; } else if (code == 404) { - response.error = std::make_unique<Error>(Error::Reason::NotFound, "HTTP status code 404"); + response.error = std::make_unique<Error>(ResourceStatus::NotFound, "HTTP status code 404"); } else if (code == 429) { optional<std::string> retryAfter; optional<std::string> xRateLimitReset; @@ -147,11 +147,11 @@ void HTTPRequest::onResponse(jni::JNIEnv& env, int code, if (jXRateLimitReset) { xRateLimitReset = jni::Make<std::string>(env, jXRateLimitReset); } - response.error = std::make_unique<Error>(Error::Reason::RateLimit, "HTTP status code 429", http::parseRetryHeaders(retryAfter, xRateLimitReset)); + response.error = std::make_unique<Error>(ResourceStatus::RateLimit, "HTTP status code 429", http::parseRetryHeaders(retryAfter, xRateLimitReset)); } else if (code >= 500 && code < 600) { - response.error = std::make_unique<Error>(Error::Reason::Server, std::string{ "HTTP status code " } + std::to_string(code)); + response.error = std::make_unique<Error>(ResourceStatus::Server, std::string{ "HTTP status code " } + std::to_string(code)); } else { - response.error = std::make_unique<Error>(Error::Reason::Other, std::string{ "HTTP status code " } + std::to_string(code)); + response.error = std::make_unique<Error>(ResourceStatus::Other, std::string{ "HTTP status code " } + std::to_string(code)); } async.send(); @@ -164,13 +164,13 @@ void HTTPRequest::onFailure(jni::JNIEnv& env, int type, jni::String message) { switch (type) { case connectionError: - response.error = std::make_unique<Error>(Error::Reason::Connection, messageStr); + response.error = std::make_unique<Error>(ResourceStatus::Connection, messageStr); break; case temporaryError: - response.error = std::make_unique<Error>(Error::Reason::Server, messageStr); + response.error = std::make_unique<Error>(ResourceStatus::Server, messageStr); break; default: - response.error = std::make_unique<Error>(Error::Reason::Other, messageStr); + response.error = std::make_unique<Error>(ResourceStatus::Other, messageStr); } async.send(); diff --git a/platform/android/src/offline/offline_region_error.cpp b/platform/android/src/offline/offline_region_error.cpp index b0a19f934..47f196e70 100644 --- a/platform/android/src/offline/offline_region_error.cpp +++ b/platform/android/src/offline/offline_region_error.cpp @@ -8,22 +8,22 @@ jni::Object<OfflineRegionError> OfflineRegionError::New(jni::JNIEnv& env, mbgl:: // Handle the value of reason independently of the underlying int value std::string reason; switch(error.reason) { - case mbgl::Response::Error::Reason::Success: + case mbgl::ResourceStatus::Success: reason = "REASON_SUCCESS"; break; - case mbgl::Response::Error::Reason::NotFound: + case mbgl::ResourceStatus::NotFoundError: reason = "REASON_NOT_FOUND"; break; - case mbgl::Response::Error::Reason::Server: + case mbgl::ResourceStatus::ServerError: reason = "REASON_SERVER"; break; - case mbgl::Response::Error::Reason::Connection: + case mbgl::ResourceStatus::ConnectionError: reason = "REASON_CONNECTION"; break; - case mbgl::Response::Error::Reason::RateLimit: + case mbgl::ResourceStatus::RateLimitError: reason = "REASON_RATE_LIMIT"; break; - case mbgl::Response::Error::Reason::Other: + case mbgl::ResourceStatus::OtherError: reason = "REASON_OTHER"; break; } diff --git a/platform/darwin/src/MGLOfflinePack.mm b/platform/darwin/src/MGLOfflinePack.mm index 60a7b5553..b6937f828 100644 --- a/platform/darwin/src/MGLOfflinePack.mm +++ b/platform/darwin/src/MGLOfflinePack.mm @@ -204,15 +204,15 @@ private: NSError *MGLErrorFromResponseError(mbgl::Response::Error error) { NSInteger errorCode = MGLErrorCodeUnknown; switch (error.reason) { - case mbgl::Response::Error::Reason::NotFound: + case mbgl::ResourceStatus::NotFoundError: errorCode = MGLErrorCodeNotFound; break; - case mbgl::Response::Error::Reason::Server: + case mbgl::ResourceStatus::ServerError: errorCode = MGLErrorCodeBadServerResponse; break; - case mbgl::Response::Error::Reason::Connection: + case mbgl::ResourceStatus::ConnectionError: errorCode = MGLErrorCodeConnectionFailed; break; diff --git a/platform/darwin/src/http_file_source.mm b/platform/darwin/src/http_file_source.mm index 649cebb47..7d42af16d 100644 --- a/platform/darwin/src/http_file_source.mm +++ b/platform/darwin/src/http_file_source.mm @@ -239,7 +239,7 @@ std::unique_ptr<AsyncRequest> HTTPFileSource::request(const Resource& resource, switch ([error code]) { case NSURLErrorBadServerResponse: // 5xx errors response.error = std::make_unique<Error>( - Error::Reason::Server, [[error localizedDescription] UTF8String]); + ResourceStatus::ServerError, [[error localizedDescription] UTF8String]); break; case NSURLErrorNetworkConnectionLost: @@ -252,12 +252,12 @@ std::unique_ptr<AsyncRequest> HTTPFileSource::request(const Resource& resource, case NSURLErrorDataNotAllowed: case NSURLErrorTimedOut: response.error = std::make_unique<Error>( - Error::Reason::Connection, [[error localizedDescription] UTF8String]); + ResourceStatus::ConnectionError, [[error localizedDescription] UTF8String]); break; default: response.error = std::make_unique<Error>( - Error::Reason::Other, [[error localizedDescription] UTF8String]); + ResourceStatus::OtherError, [[error localizedDescription] UTF8String]); break; } } else if ([res isKindOfClass:[NSHTTPURLResponse class]]) { @@ -286,13 +286,13 @@ std::unique_ptr<AsyncRequest> HTTPFileSource::request(const Resource& resource, if (responseCode == 200) { response.data = std::make_shared<std::string>((const char *)[data bytes], [data length]); - } else if (responseCode == 204 || (responseCode == 404 && resource.kind == Resource::Kind::Tile)) { + } else if (responseCode == 204 || (responseCode == 404 && resource.kind == ResourceKind::Tile)) { response.noContent = true; } else if (responseCode == 304) { response.notModified = true; } else if (responseCode == 404) { response.error = - std::make_unique<Error>(Error::Reason::NotFound, "HTTP status code 404"); + std::make_unique<Error>(ResourceStatus::NotFoundError, "HTTP status code 404"); } else if (responseCode == 429) { // Get the standard header optional<std::string> retryAfter; @@ -308,19 +308,19 @@ std::unique_ptr<AsyncRequest> HTTPFileSource::request(const Resource& resource, xRateLimitReset = std::string([xReset UTF8String]); } - response.error = std::make_unique<Error>(Error::Reason::RateLimit, "HTTP status code 429", http::parseRetryHeaders(retryAfter, xRateLimitReset)); + response.error = std::make_unique<Error>(ResourceStatus::RateLimitError, "HTTP status code 429", http::parseRetryHeaders(retryAfter, xRateLimitReset)); } else if (responseCode >= 500 && responseCode < 600) { response.error = - std::make_unique<Error>(Error::Reason::Server, std::string{ "HTTP status code " } + + std::make_unique<Error>(ResourceStatus::ServerError, std::string{ "HTTP status code " } + std::to_string(responseCode)); } else { response.error = - std::make_unique<Error>(Error::Reason::Other, std::string{ "HTTP status code " } + + std::make_unique<Error>(ResourceStatus::OtherError, std::string{ "HTTP status code " } + std::to_string(responseCode)); } } else { // This should never happen. - response.error = std::make_unique<Error>(Error::Reason::Other, + response.error = std::make_unique<Error>(ResourceStatus::OtherError, "Response class is not NSHTTPURLResponse"); } diff --git a/platform/default/asset_file_source.cpp b/platform/default/asset_file_source.cpp index 54dbb8d0f..a324c7d36 100644 --- a/platform/default/asset_file_source.cpp +++ b/platform/default/asset_file_source.cpp @@ -35,15 +35,15 @@ public: int result = stat(path.c_str(), &buf); if (result == 0 && (S_IFDIR & buf.st_mode)) { - response.error = std::make_unique<Response::Error>(Response::Error::Reason::NotFound); + response.error = std::make_unique<Response::Error>(ResourceStatus::NotFoundError); } else if (result == -1 && errno == ENOENT) { - response.error = std::make_unique<Response::Error>(Response::Error::Reason::NotFound); + response.error = std::make_unique<Response::Error>(ResourceStatus::NotFoundError); } else { try { response.data = std::make_shared<std::string>(util::read_file(path)); } catch (...) { response.error = std::make_unique<Response::Error>( - Response::Error::Reason::Other, + ResourceStatus::OtherError, util::toString(std::current_exception())); } } diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp index d309c55ec..10803a18a 100644 --- a/platform/default/default_file_source.cpp +++ b/platform/default/default_file_source.cpp @@ -133,7 +133,7 @@ public: offlineResponse.emplace(); offlineResponse->noContent = true; offlineResponse->error = std::make_unique<Response::Error>( - Response::Error::Reason::NotFound, "Not found in offline database"); + ResourceStatus::NotFoundError, "Not found in offline database"); } if (offlineResponse) { diff --git a/platform/default/http_file_source.cpp b/platform/default/http_file_source.cpp index 867d85fa4..dc8018fb4 100644 --- a/platform/default/http_file_source.cpp +++ b/platform/default/http_file_source.cpp @@ -355,12 +355,12 @@ void HTTPRequest::handleResult(CURLcode code) { case CURLE_OPERATION_TIMEDOUT: response->error = std::make_unique<Error>( - Error::Reason::Connection, std::string{ curl_easy_strerror(code) } + ": " + error); + ResourceStatus::Connection, std::string{ curl_easy_strerror(code) } + ": " + error); break; default: response->error = std::make_unique<Error>( - Error::Reason::Other, std::string{ curl_easy_strerror(code) } + ": " + error); + ResourceStatus::Other, std::string{ curl_easy_strerror(code) } + ": " + error); break; } } else { @@ -373,24 +373,24 @@ void HTTPRequest::handleResult(CURLcode code) { } else { response->data = std::make_shared<std::string>(); } - } else if (responseCode == 204 || (responseCode == 404 && resource.kind == Resource::Kind::Tile)) { + } else if (responseCode == 204 || (responseCode == 404 && resource.kind == ResourceKind::Tile)) { response->noContent = true; } else if (responseCode == 304) { response->notModified = true; } else if (responseCode == 404) { response->error = - std::make_unique<Error>(Error::Reason::NotFound, "HTTP status code 404"); + std::make_unique<Error>(ResourceStatus::NotFound, "HTTP status code 404"); } else if (responseCode == 429) { response->error = - std::make_unique<Error>(Error::Reason::RateLimit, "HTTP status code 429", + std::make_unique<Error>(ResourceStatus::RateLimit, "HTTP status code 429", http::parseRetryHeaders(retryAfter, xRateLimitReset)); } else if (responseCode >= 500 && responseCode < 600) { response->error = - std::make_unique<Error>(Error::Reason::Server, std::string{ "HTTP status code " } + + std::make_unique<Error>(ResourceStatus::Server, std::string{ "HTTP status code " } + util::toString(responseCode)); } else { response->error = - std::make_unique<Error>(Error::Reason::Other, std::string{ "HTTP status code " } + + std::make_unique<Error>(ResourceStatus::Other, std::string{ "HTTP status code " } + util::toString(responseCode)); } } diff --git a/platform/default/local_file_source.cpp b/platform/default/local_file_source.cpp index 21a291d8d..32532c76d 100644 --- a/platform/default/local_file_source.cpp +++ b/platform/default/local_file_source.cpp @@ -34,15 +34,15 @@ public: int result = stat(path.c_str(), &buf); if (result == 0 && S_ISDIR(buf.st_mode)) { - response.error = std::make_unique<Response::Error>(Response::Error::Reason::NotFound); + response.error = std::make_unique<Response::Error>(ResourceStatus::NotFoundError); } else if (result == -1 && errno == ENOENT) { - response.error = std::make_unique<Response::Error>(Response::Error::Reason::NotFound); + response.error = std::make_unique<Response::Error>(ResourceStatus::NotFoundError); } else { try { response.data = std::make_shared<std::string>(util::read_file(path)); } catch (...) { response.error = std::make_unique<Response::Error>( - Response::Error::Reason::Other, + ResourceStatus::OtherError, util::toString(std::current_exception())); } } diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp index bad4ccdbf..287593363 100644 --- a/platform/default/mbgl/storage/offline_database.cpp +++ b/platform/default/mbgl/storage/offline_database.cpp @@ -142,7 +142,7 @@ optional<Response> OfflineDatabase::get(const Resource& resource) { } optional<std::pair<Response, uint64_t>> OfflineDatabase::getInternal(const Resource& resource) { - if (resource.kind == Resource::Kind::Tile) { + if (resource.kind == ResourceKind::Tile) { assert(resource.tileData); return getTile(*resource.tileData); } else { @@ -151,7 +151,7 @@ optional<std::pair<Response, uint64_t>> OfflineDatabase::getInternal(const Resou } optional<int64_t> OfflineDatabase::hasInternal(const Resource& resource) { - if (resource.kind == Resource::Kind::Tile) { + if (resource.kind == ResourceKind::Tile) { assert(resource.tileData); return hasTile(*resource.tileData); } else { @@ -185,7 +185,7 @@ std::pair<bool, uint64_t> OfflineDatabase::putInternal(const Resource& resource, bool inserted; - if (resource.kind == Resource::Kind::Tile) { + if (resource.kind == ResourceKind::Tile) { assert(resource.tileData); inserted = putTile(*resource.tileData, response, compressed ? compressedData : response.data ? *response.data : "", @@ -623,7 +623,7 @@ uint64_t OfflineDatabase::putRegionResource(int64_t regionID, const Resource& re bool previouslyUnused = markUsed(regionID, resource); if (offlineMapboxTileCount - && resource.kind == Resource::Kind::Tile + && resource.kind == ResourceKind::Tile && util::mapbox::isMapboxURL(resource.url) && previouslyUnused) { *offlineMapboxTileCount += 1; @@ -633,7 +633,7 @@ uint64_t OfflineDatabase::putRegionResource(int64_t regionID, const Resource& re } bool OfflineDatabase::markUsed(int64_t regionID, const Resource& resource) { - if (resource.kind == Resource::Kind::Tile) { + if (resource.kind == ResourceKind::Tile) { // clang-format off Statement insert = getStatement( "INSERT OR IGNORE INTO region_tiles (region_id, tile_id) " diff --git a/platform/default/mbgl/storage/offline_download.cpp b/platform/default/mbgl/storage/offline_download.cpp index 7f0001f64..fc198045b 100644 --- a/platform/default/mbgl/storage/offline_download.cpp +++ b/platform/default/mbgl/storage/offline_download.cpp @@ -305,7 +305,7 @@ void OfflineDownload::ensureResource(const Resource& resource, if (offlineResponse) { status.completedResourceCount++; status.completedResourceSize += *offlineResponse; - if (resource.kind == Resource::Kind::Tile) { + if (resource.kind == ResourceKind::Tile) { status.completedTileCount += 1; status.completedTileSize += *offlineResponse; } @@ -335,7 +335,7 @@ void OfflineDownload::ensureResource(const Resource& resource, status.completedResourceCount++; uint64_t resourceSize = offlineDatabase.putRegionResource(id, resource, onlineResponse); status.completedResourceSize += resourceSize; - if (resource.kind == Resource::Kind::Tile) { + if (resource.kind == ResourceKind::Tile) { status.completedTileCount += 1; status.completedTileSize += resourceSize; } @@ -352,7 +352,7 @@ void OfflineDownload::ensureResource(const Resource& resource, } bool OfflineDownload::checkTileCountLimit(const Resource& resource) { - if (resource.kind == Resource::Kind::Tile && util::mapbox::isMapboxURL(resource.url) && + if (resource.kind == ResourceKind::Tile && util::mapbox::isMapboxURL(resource.url) && offlineDatabase.offlineMapboxTileCountLimitExceeded()) { observer->mapboxTileCountLimitExceeded(offlineDatabase.getOfflineMapboxTileCountLimit()); setState(OfflineRegionDownloadState::Inactive); diff --git a/platform/default/online_file_source.cpp b/platform/default/online_file_source.cpp index fd8293190..78b75f75b 100644 --- a/platform/default/online_file_source.cpp +++ b/platform/default/online_file_source.cpp @@ -56,7 +56,7 @@ public: // Counts the number of subsequent failed requests. We're using this value for exponential // backoff when retrying requests. uint32_t failedRequests = 0; - Response::Error::Reason failedRequestReason = Response::Error::Reason::Success; + ResourceStatus failedRequestReason = ResourceStatus::Success; optional<Timestamp> retryAfter; }; @@ -130,7 +130,7 @@ public: request->request = httpFileSource.request(request->resource, callback); } else { Response response; - response.error = std::make_unique<Response::Error>(Response::Error::Reason::Connection, + response.error = std::make_unique<Response::Error>(ResourceStatus::ConnectionError, "Online connectivity is disabled."); callback(response); } @@ -209,28 +209,28 @@ std::unique_ptr<AsyncRequest> OnlineFileSource::request(const Resource& resource Resource res = resource; switch (resource.kind) { - case Resource::Kind::Unknown: - case Resource::Kind::Image: + case ResourceKind::Unknown: + case ResourceKind::Image: break; - case Resource::Kind::Style: + case ResourceKind::Style: res.url = mbgl::util::mapbox::normalizeStyleURL(apiBaseURL, resource.url, accessToken); break; - case Resource::Kind::Source: + case ResourceKind::Source: res.url = util::mapbox::normalizeSourceURL(apiBaseURL, resource.url, accessToken); break; - case Resource::Kind::Glyphs: + case ResourceKind::Glyphs: res.url = util::mapbox::normalizeGlyphsURL(apiBaseURL, resource.url, accessToken); break; - case Resource::Kind::SpriteImage: - case Resource::Kind::SpriteJSON: + case ResourceKind::SpriteImage: + case ResourceKind::SpriteJSON: res.url = util::mapbox::normalizeSpriteURL(apiBaseURL, resource.url, accessToken); break; - case Resource::Kind::Tile: + case ResourceKind::Tile: res.url = util::mapbox::normalizeTileURL(apiBaseURL, resource.url, accessToken); break; } @@ -317,7 +317,7 @@ void OnlineFileRequest::schedule(optional<Timestamp> expires) { // a really long timeout. The request will get re-triggered when // the NetworkStatus is set back to Online. if (NetworkStatus::Get() == NetworkStatus::Status::Offline) { - failedRequestReason = Response::Error::Reason::Connection; + failedRequestReason = ResourceStatus::ConnectionError; failedRequests = 1; timeout = Duration::max(); } @@ -359,11 +359,11 @@ void OnlineFileRequest::completed(Response response) { if (response.error) { failedRequests++; - failedRequestReason = response.error->reason; + failedRequestReason = response.error->status; retryAfter = response.error->retryAfter; } else { failedRequests = 0; - failedRequestReason = Response::Error::Reason::Success; + failedRequestReason = ResourceStatus::Success; } schedule(response.expires); @@ -378,7 +378,7 @@ void OnlineFileRequest::completed(Response response) { void OnlineFileRequest::networkIsReachableAgain() { // We need all requests to fail at least once before we are going to start retrying // them, and we only immediately restart request that failed due to connection issues. - if (failedRequestReason == Response::Error::Reason::Connection) { + if (failedRequestReason == ResourceStatus::ConnectionError) { schedule(util::now()); } } diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp index 079112b4c..a88cfd52f 100644 --- a/platform/node/src/node_map.cpp +++ b/platform/node/src/node_map.cpp @@ -1019,7 +1019,7 @@ std::unique_ptr<mbgl::AsyncRequest> NodeMap::request(const mbgl::Resource& resou auto instance = Nan::New(NodeRequest::constructor)->NewInstance(2, argv); Nan::Set(instance, Nan::New("url").ToLocalChecked(), Nan::New(resource.url).ToLocalChecked()); - Nan::Set(instance, Nan::New("kind").ToLocalChecked(), Nan::New<v8::Integer>(resource.kind)); + Nan::Set(instance, Nan::New("kind").ToLocalChecked(), Nan::New<v8::Integer>(static_cast<int32_t>(resource.kind))); auto request = Nan::ObjectWrap::Unwrap<NodeRequest>(instance); request->Execute(); diff --git a/platform/node/src/node_mapbox_gl_native.cpp b/platform/node/src/node_mapbox_gl_native.cpp index cdcc98222..47356f914 100644 --- a/platform/node/src/node_mapbox_gl_native.cpp +++ b/platform/node/src/node_mapbox_gl_native.cpp @@ -26,31 +26,31 @@ void RegisterModule(v8::Local<v8::Object> target, v8::Local<v8::Object> module) Nan::Set(resource, Nan::New("Unknown").ToLocalChecked(), - Nan::New(mbgl::Resource::Unknown)); + Nan::New(static_cast<int32_t>(mbgl::ResourceKind::Unknown))); Nan::Set(resource, Nan::New("Style").ToLocalChecked(), - Nan::New(mbgl::Resource::Style)); + Nan::New(static_cast<int32_t>(mbgl::ResourceKind::Style))); Nan::Set(resource, Nan::New("Source").ToLocalChecked(), - Nan::New(mbgl::Resource::Source)); + Nan::New(static_cast<int32_t>(mbgl::ResourceKind::Source))); Nan::Set(resource, Nan::New("Tile").ToLocalChecked(), - Nan::New(mbgl::Resource::Tile)); + Nan::New(static_cast<int32_t>(mbgl::ResourceKind::Tile))); Nan::Set(resource, Nan::New("Glyphs").ToLocalChecked(), - Nan::New(mbgl::Resource::Glyphs)); + Nan::New(static_cast<int32_t>(mbgl::ResourceKind::Glyphs))); Nan::Set(resource, Nan::New("SpriteImage").ToLocalChecked(), - Nan::New(mbgl::Resource::SpriteImage)); + Nan::New(static_cast<int32_t>(mbgl::ResourceKind::SpriteImage))); Nan::Set(resource, Nan::New("SpriteJSON").ToLocalChecked(), - Nan::New(mbgl::Resource::SpriteJSON)); + Nan::New(static_cast<int32_t>(mbgl::ResourceKind::SpriteJSON))); Nan::Set(target, Nan::New("Resource").ToLocalChecked(), diff --git a/platform/node/src/node_request.cpp b/platform/node/src/node_request.cpp index de16710f7..29aaa43cd 100644 --- a/platform/node/src/node_request.cpp +++ b/platform/node/src/node_request.cpp @@ -111,7 +111,7 @@ void NodeRequest::HandleCallback(const Nan::FunctionCallbackInfo<v8::Value>& inf if (request->ErrorMessage()) { response.error = std::make_unique<mbgl::Response::Error>( - mbgl::Response::Error::Reason::Other, + mbgl::ResourceStatus::OtherError, request->ErrorMessage() ); } diff --git a/platform/qt/src/http_request.cpp b/platform/qt/src/http_request.cpp index ef753c3e0..167f583cf 100644 --- a/platform/qt/src/http_request.cpp +++ b/platform/qt/src/http_request.cpp @@ -66,7 +66,7 @@ void HTTPRequest::handleNetworkReply(QNetworkReply *reply) // Handle non-HTTP errors (i.e. like connection). if (reply->error() && reply->error() < 100) { response.error = std::make_unique<Error>( - Error::Reason::Connection, reply->errorString().toStdString()); + ResourceStatus::Connection, reply->errorString().toStdString()); callback(response); return; } @@ -111,22 +111,22 @@ void HTTPRequest::handleNetworkReply(QNetworkReply *reply) response.notModified = true; break; case 404: { - if (m_resource.kind == Resource::Kind::Tile) { + if (m_resource.kind == ResourceKind::Tile) { response.noContent = true; } else { response.error = std::make_unique<Error>( - Error::Reason::NotFound, "HTTP status code 404"); + ResourceStatus::NotFound, "HTTP status code 404"); } break; } case 429: response.error = std::make_unique<Error>( - Error::Reason::RateLimit, "HTTP status code 429", + ResourceStatus::RateLimit, "HTTP status code 429", http::parseRetryHeaders(retryAfter, xRateLimitReset)); break; default: - Response::Error::Reason reason = (responseCode >= 500 && responseCode < 600) ? - Error::Reason::Server : Error::Reason::Other; + ResourceStatus reason = (responseCode >= 500 && responseCode < 600) ? + ResourceStatus::Server : ResourceStatus::Other; response.error = std::make_unique<Error>( reason, "HTTP status code " + util::toString(responseCode)); diff --git a/src/mbgl/storage/resource.cpp b/src/mbgl/storage/resource.cpp index 94bba7f8b..96fe5c0f4 100644 --- a/src/mbgl/storage/resource.cpp +++ b/src/mbgl/storage/resource.cpp @@ -41,42 +41,42 @@ static std::string getTileBBox(int32_t x, int32_t y, int8_t z) { Resource Resource::style(const std::string& url) { return Resource { - Resource::Kind::Style, + ResourceKind::Style, url }; } Resource Resource::source(const std::string& url) { return Resource { - Resource::Kind::Source, + ResourceKind::Source, url }; } Resource Resource::image(const std::string& url) { return Resource { - Resource::Kind::Image, + ResourceKind::Image, url }; } Resource Resource::spriteImage(const std::string& base, float pixelRatio) { return Resource { - Resource::Kind::SpriteImage, + ResourceKind::SpriteImage, base + (pixelRatio > 1 ? "@2x" : "") + ".png" }; } Resource Resource::spriteJSON(const std::string& base, float pixelRatio) { return Resource { - Resource::Kind::SpriteJSON, + ResourceKind::SpriteJSON, base + (pixelRatio > 1 ? "@2x" : "") + ".json" }; } Resource Resource::glyphs(const std::string& urlTemplate, const FontStack& fontStack, const std::pair<uint16_t, uint16_t>& glyphRange) { return Resource { - Resource::Kind::Glyphs, + ResourceKind::Glyphs, util::replaceTokens(urlTemplate, [&](const std::string& token) { if (token == "fontstack") { return util::percentEncode(fontStackToString(fontStack)); @@ -101,7 +101,7 @@ Resource Resource::tile(const std::string& urlTemplate, y = (1 << z) - y - 1; } return Resource { - Resource::Kind::Tile, + ResourceKind::Tile, util::replaceTokens(urlTemplate, [&](const std::string& token) { if (token == "z") { return util::toString(z); diff --git a/src/mbgl/storage/resource_transform.cpp b/src/mbgl/storage/resource_transform.cpp index a5e62b2c1..df7255774 100644 --- a/src/mbgl/storage/resource_transform.cpp +++ b/src/mbgl/storage/resource_transform.cpp @@ -6,7 +6,7 @@ ResourceTransform::ResourceTransform(ActorRef<ResourceTransform>, TransformCallb : transformCallback(std::move(callback)) { } -void ResourceTransform::transform(Resource::Kind kind, const std::string&& url, FinishedCallback&& finished) { +void ResourceTransform::transform(ResourceKind kind, const std::string&& url, FinishedCallback&& finished) { finished(transformCallback(kind, std::move(url))); } diff --git a/src/mbgl/storage/response.cpp b/src/mbgl/storage/response.cpp index a17433907..a40446a8a 100644 --- a/src/mbgl/storage/response.cpp +++ b/src/mbgl/storage/response.cpp @@ -21,24 +21,24 @@ Response& Response::operator=(const Response& res) { return *this; } -Response::Error::Error(Reason reason_, std::string message_, optional<Timestamp> retryAfter_) - : reason(reason_), message(std::move(message_)), retryAfter(std::move(retryAfter_)) { +Response::Error::Error(ResourceStatus reason_, std::string message_, optional<Timestamp> retryAfter_) + : status(reason_), message(std::move(message_)), retryAfter(std::move(retryAfter_)) { } -std::ostream& operator<<(std::ostream& os, Response::Error::Reason r) { +std::ostream& operator<<(std::ostream& os, ResourceStatus r) { switch (r) { - case Response::Error::Reason::Success: - return os << "Response::Error::Reason::Success"; - case Response::Error::Reason::NotFound: - return os << "Response::Error::Reason::NotFound"; - case Response::Error::Reason::Server: - return os << "Response::Error::Reason::Server"; - case Response::Error::Reason::Connection: - return os << "Response::Error::Reason::Connection"; - case Response::Error::Reason::RateLimit: - return os << "Response::Error::Reason::RateLimit"; - case Response::Error::Reason::Other: - return os << "Response::Error::Reason::Other"; + case ResourceStatus::Success: + return os << "ResourceStatus::Success"; + case ResourceStatus::NotFoundError: + return os << "ResourceStatus::NotFoundError"; + case ResourceStatus::ServerError: + return os << "ResourceStatus::ServerError"; + case ResourceStatus::ConnectionError: + return os << "ResourceStatus::ConnectionError"; + case ResourceStatus::RateLimitError: + return os << "ResourceStatus::RateLimitError"; + case ResourceStatus::OtherError: + return os << "ResourceStatus::OtherError"; } // The above switch is exhaustive, but placate GCC nonetheless: diff --git a/src/mbgl/style/sources/image_source.cpp b/src/mbgl/style/sources/image_source.cpp index 9b60ba1a4..854b1b3f8 100644 --- a/src/mbgl/style/sources/image_source.cpp +++ b/src/mbgl/style/sources/image_source.cpp @@ -59,7 +59,7 @@ void ImageSource::loadDescription(FileSource& fileSource) { if (req || loaded) { return; } - const Resource imageResource { Resource::Image, *url, {}, Resource::Necessity::Required }; + const Resource imageResource { ResourceKind::Image, *url, {}, Resource::Necessity::Required }; req = fileSource.request(imageResource, [this](Response res) { if (res.error) { diff --git a/src/mbgl/tile/tile_loader_impl.hpp b/src/mbgl/tile/tile_loader_impl.hpp index 899cbaf9b..65df20008 100644 --- a/src/mbgl/tile/tile_loader_impl.hpp +++ b/src/mbgl/tile/tile_loader_impl.hpp @@ -57,7 +57,7 @@ void TileLoader<T>::loadOptional() { tile.setTriedOptional(); - if (res.error && res.error->reason == Response::Error::Reason::NotFound) { + if (res.error && res.error->status == ResourceStatus::NotFoundError) { // When the optional request could not be satisfied, don't treat it as an error. // Instead, we make sure that the next request knows that there has been an optional // request before by setting one of the prior* fields. @@ -89,7 +89,7 @@ void TileLoader<T>::makeOptional() { template <typename T> void TileLoader<T>::loadedData(const Response& res) { - if (res.error && res.error->reason != Response::Error::Reason::NotFound) { + if (res.error && res.error->status != ResourceStatus::NotFoundError) { tile.setError(std::make_exception_ptr(std::runtime_error(res.error->message))); } else if (res.notModified) { resource.priorExpires = res.expires; diff --git a/src/mbgl/util/http_timeout.cpp b/src/mbgl/util/http_timeout.cpp index ca9a93498..626b0c43a 100644 --- a/src/mbgl/util/http_timeout.cpp +++ b/src/mbgl/util/http_timeout.cpp @@ -4,16 +4,16 @@ namespace mbgl { namespace http { -Duration errorRetryTimeout(Response::Error::Reason failedRequestReason, uint32_t failedRequests, optional<Timestamp> retryAfter) { +Duration errorRetryTimeout(ResourceStatus failedRequestReason, uint32_t failedRequests, optional<Timestamp> retryAfter) { - if (failedRequestReason == Response::Error::Reason::Server) { + if (failedRequestReason == ResourceStatus::ServerError) { // Retry after one second three times, then start exponential backoff. return Seconds(failedRequests <= 3 ? 1 : 1u << std::min(failedRequests - 3, 31u)); - } else if (failedRequestReason == Response::Error::Reason::Connection) { + } else if (failedRequestReason == ResourceStatus::ConnectionError) { // Immediate exponential backoff. assert(failedRequests > 0); return Seconds(1u << std::min(failedRequests - 1, 31u)); - } else if (failedRequestReason == Response::Error::Reason::RateLimit) { + } else if (failedRequestReason == ResourceStatus::RateLimitError) { if (retryAfter) { return *retryAfter - util::now(); } else { diff --git a/src/mbgl/util/http_timeout.hpp b/src/mbgl/util/http_timeout.hpp index b69479499..b7eb0bcb7 100644 --- a/src/mbgl/util/http_timeout.hpp +++ b/src/mbgl/util/http_timeout.hpp @@ -7,7 +7,7 @@ namespace mbgl { namespace http { -Duration errorRetryTimeout(Response::Error::Reason failedRequestReason, uint32_t failedRequests, optional<Timestamp> retryAfter = {}); +Duration errorRetryTimeout(ResourceStatus failedRequestReason, uint32_t failedRequests, optional<Timestamp> retryAfter = {}); Duration expirationTimeout(optional<Timestamp> expires, uint32_t expiredRequests); diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp index 3e8f8696e..6c2ac7b0d 100644 --- a/test/map/map.test.cpp +++ b/test/map/map.test.cpp @@ -193,7 +193,7 @@ TEST(Map, SetStyleInvalidURL) { test.fileSource.styleResponse = [] (const Resource&) { Response response; response.error = std::make_unique<Response::Error>( - Response::Error::Reason::Other, + ResourceStatus::OtherError, "Failed by the test case"); return response; }; @@ -226,7 +226,7 @@ TEST(Map, StyleFresh) { response.data = std::make_shared<std::string>(util::read_file("test/fixtures/api/empty.json")); response.expires = Timestamp::max(); - test.fileSource.respond(Resource::Style, response); + test.fileSource.respond(ResourceKind::Style, response); EXPECT_EQ(0u, test.fileSource.requests.size()); } @@ -244,13 +244,13 @@ TEST(Map, StyleExpired) { response.data = std::make_shared<std::string>(util::read_file("test/fixtures/api/empty.json")); response.expires = util::now() - 1h; - test.fileSource.respond(Resource::Style, response); + test.fileSource.respond(ResourceKind::Style, response); EXPECT_EQ(1u, test.fileSource.requests.size()); test.map.getStyle().addLayer(std::make_unique<style::BackgroundLayer>("bg")); EXPECT_EQ(1u, test.fileSource.requests.size()); - test.fileSource.respond(Resource::Style, response); + test.fileSource.respond(ResourceKind::Style, response); EXPECT_EQ(0u, test.fileSource.requests.size()); EXPECT_NE(nullptr, test.map.getStyle().getLayer("bg")); } @@ -269,13 +269,13 @@ TEST(Map, StyleExpiredWithAnnotations) { response.data = std::make_shared<std::string>(util::read_file("test/fixtures/api/empty.json")); response.expires = util::now() - 1h; - test.fileSource.respond(Resource::Style, response); + test.fileSource.respond(ResourceKind::Style, response); EXPECT_EQ(1u, test.fileSource.requests.size()); test.map.addAnnotation(LineAnnotation { LineString<double> {{ { 0, 0 }, { 10, 10 } }} }); EXPECT_EQ(1u, test.fileSource.requests.size()); - test.fileSource.respond(Resource::Style, response); + test.fileSource.respond(ResourceKind::Style, response); EXPECT_EQ(1u, test.fileSource.requests.size()); } @@ -293,13 +293,13 @@ TEST(Map, StyleExpiredWithRender) { response.data = std::make_shared<std::string>(util::read_file("test/fixtures/api/empty.json")); response.expires = util::now() - 1h; - test.fileSource.respond(Resource::Style, response); + test.fileSource.respond(ResourceKind::Style, response); EXPECT_EQ(1u, test.fileSource.requests.size()); test::render(test.map, test.view); EXPECT_EQ(1u, test.fileSource.requests.size()); - test.fileSource.respond(Resource::Style, response); + test.fileSource.respond(ResourceKind::Style, response); EXPECT_EQ(1u, test.fileSource.requests.size()); } @@ -313,7 +313,7 @@ TEST(Map, StyleEarlyMutation) { Response response; response.data = std::make_shared<std::string>(util::read_file("test/fixtures/api/water.json")); - test.fileSource.respond(Resource::Style, response); + test.fileSource.respond(ResourceKind::Style, response); EXPECT_EQ(0u, test.fileSource.requests.size()); EXPECT_NE(nullptr, test.map.getStyle().getLayer("water")); diff --git a/test/sprite/sprite_loader.test.cpp b/test/sprite/sprite_loader.test.cpp index 369157226..ca8162d68 100644 --- a/test/sprite/sprite_loader.test.cpp +++ b/test/sprite/sprite_loader.test.cpp @@ -72,7 +72,7 @@ Response successfulSpriteJSONResponse(const Resource& resource) { Response failedSpriteResponse(const Resource&) { Response response; response.error = std::make_unique<Response::Error>( - Response::Error::Reason::Other, + ResourceStatus::OtherError, "Failed by the test case"); return response; } diff --git a/test/src/mbgl/test/fake_file_source.hpp b/test/src/mbgl/test/fake_file_source.hpp index baae7f9b7..69ab29645 100644 --- a/test/src/mbgl/test/fake_file_source.hpp +++ b/test/src/mbgl/test/fake_file_source.hpp @@ -41,7 +41,7 @@ public: return std::make_unique<FakeFileRequest>(resource, callback, requests); } - bool respond(Resource::Kind kind, const Response& response) { + bool respond(ResourceKind kind, const Response& response) { auto it = std::find_if(requests.begin(), requests.end(), [&] (FakeFileRequest* fakeRequest) { return fakeRequest->resource.kind == kind; }); diff --git a/test/src/mbgl/test/stub_file_source.cpp b/test/src/mbgl/test/stub_file_source.cpp index 7891d5d90..2eeaccf30 100644 --- a/test/src/mbgl/test/stub_file_source.cpp +++ b/test/src/mbgl/test/stub_file_source.cpp @@ -59,28 +59,28 @@ void StubFileSource::remove(AsyncRequest* req) { optional<Response> StubFileSource::defaultResponse(const Resource& resource) { switch (resource.kind) { - case Resource::Kind::Style: + case ResourceKind::Style: if (!styleResponse) throw std::runtime_error("unexpected style request"); return styleResponse(resource); - case Resource::Kind::Source: + case ResourceKind::Source: if (!sourceResponse) throw std::runtime_error("unexpected source request"); return sourceResponse(resource); - case Resource::Kind::Tile: + case ResourceKind::Tile: if (!tileResponse) throw std::runtime_error("unexpected tile request"); return tileResponse(resource); - case Resource::Kind::Glyphs: + case ResourceKind::Glyphs: if (!glyphsResponse) throw std::runtime_error("unexpected glyphs request"); return glyphsResponse(resource); - case Resource::Kind::SpriteJSON: + case ResourceKind::SpriteJSON: if (!spriteJSONResponse) throw std::runtime_error("unexpected sprite JSON request"); return spriteJSONResponse(resource); - case Resource::Kind::SpriteImage: + case ResourceKind::SpriteImage: if (!spriteImageResponse) throw std::runtime_error("unexpected sprite image request"); return spriteImageResponse(resource); - case Resource::Kind::Image: + case ResourceKind::Image: if (!imageResponse) throw std::runtime_error("unexpected image request"); return imageResponse(resource); - case Resource::Kind::Unknown: + case ResourceKind::Unknown: throw std::runtime_error("unknown resource type"); } diff --git a/test/storage/asset_file_source.test.cpp b/test/storage/asset_file_source.test.cpp index a39d2963d..e4b0827b6 100644 --- a/test/storage/asset_file_source.test.cpp +++ b/test/storage/asset_file_source.test.cpp @@ -40,11 +40,11 @@ TEST(AssetFileSource, Load) { endCallback(); request.reset(); } else { - request = fs->request({ mbgl::Resource::Unknown, asset }, requestCallback); + request = fs->request({ mbgl::ResourceKind::Unknown, asset }, requestCallback); } }; - request = fs->request({ mbgl::Resource::Unknown, asset }, requestCallback); + request = fs->request({ mbgl::ResourceKind::Unknown, asset }, requestCallback); } private: @@ -74,7 +74,7 @@ TEST(AssetFileSource, EmptyFile) { AssetFileSource fs("test/fixtures/storage/assets"); - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "asset://empty" }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, "asset://empty" }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); ASSERT_TRUE(res.data.get()); @@ -90,7 +90,7 @@ TEST(AssetFileSource, NonEmptyFile) { AssetFileSource fs("test/fixtures/storage/assets"); - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "asset://nonempty" }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, "asset://nonempty" }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); ASSERT_TRUE(res.data.get()); @@ -106,10 +106,10 @@ TEST(AssetFileSource, NonExistentFile) { AssetFileSource fs("test/fixtures/storage/assets"); - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "asset://does_not_exist" }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, "asset://does_not_exist" }, [&](Response res) { req.reset(); ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); + EXPECT_EQ(ResourceStatus::NotFoundError, res.error->status); ASSERT_FALSE(res.data.get()); // Do not assert on platform-specific error message. loop.stop(); @@ -123,10 +123,10 @@ TEST(AssetFileSource, ReadDirectory) { AssetFileSource fs("test/fixtures/storage/assets"); - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "asset://directory" }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, "asset://directory" }, [&](Response res) { req.reset(); ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); + EXPECT_EQ(ResourceStatus::NotFoundError, res.error->status); ASSERT_FALSE(res.data.get()); // Do not assert on platform-specific error message. loop.stop(); @@ -140,7 +140,7 @@ TEST(AssetFileSource, URLEncoding) { AssetFileSource fs("test/fixtures/storage/assets"); - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "asset://%6eonempty" }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, "asset://%6eonempty" }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); ASSERT_TRUE(res.data.get()); diff --git a/test/storage/default_file_source.test.cpp b/test/storage/default_file_source.test.cpp index 41e305a69..271b5b50b 100644 --- a/test/storage/default_file_source.test.cpp +++ b/test/storage/default_file_source.test.cpp @@ -10,7 +10,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheResponse)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/cache" }; + const Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/cache" }; Response response; std::unique_ptr<AsyncRequest> req1; @@ -48,7 +48,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateSame)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - const Resource revalidateSame { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; + const Resource revalidateSame { ResourceKind::Unknown, "http://127.0.0.1:3000/revalidate-same" }; std::unique_ptr<AsyncRequest> req1; std::unique_ptr<AsyncRequest> req2; uint16_t counter = 0; @@ -92,7 +92,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateModified)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - const Resource revalidateModified{ Resource::Unknown, + const Resource revalidateModified{ ResourceKind::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; std::unique_ptr<AsyncRequest> req1; std::unique_ptr<AsyncRequest> req2; @@ -136,7 +136,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateEtag)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - const Resource revalidateEtag { Resource::Unknown, "http://127.0.0.1:3000/revalidate-etag" }; + const Resource revalidateEtag { ResourceKind::Unknown, "http://127.0.0.1:3000/revalidate-etag" }; std::unique_ptr<AsyncRequest> req1; std::unique_ptr<AsyncRequest> req2; uint16_t counter = 0; @@ -191,7 +191,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(HTTPIssue1369)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/test" }; + const Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/test" }; auto req = fs.request(resource, [&](Response) { ADD_FAILURE() << "Callback should not be called"; @@ -215,7 +215,7 @@ TEST(DefaultFileSource, OptionalNonExpired) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - const Resource optionalResource { Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; + const Resource optionalResource { ResourceKind::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; using namespace std::chrono_literals; @@ -244,7 +244,7 @@ TEST(DefaultFileSource, OptionalExpired) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - const Resource optionalResource { Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; + const Resource optionalResource { ResourceKind::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; using namespace std::chrono_literals; @@ -289,7 +289,7 @@ TEST(DefaultFileSource, OptionalNotFound) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - const Resource optionalResource { Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; + const Resource optionalResource { ResourceKind::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; using namespace std::chrono_literals; @@ -297,7 +297,7 @@ TEST(DefaultFileSource, OptionalNotFound) { req = fs.request(optionalResource, [&](Response res) { req.reset(); ASSERT_TRUE(res.error.get()); - EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); + EXPECT_EQ(ResourceStatus::NotFoundError, res.error->status); EXPECT_EQ("Not found in offline database", res.error->message); EXPECT_FALSE(res.data); EXPECT_FALSE(bool(res.expires)); @@ -315,7 +315,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagNotModified)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; + Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/revalidate-same" }; resource.priorEtag.emplace("snowfall"); using namespace std::chrono_literals; @@ -349,7 +349,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagModified)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; + Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/revalidate-same" }; resource.priorEtag.emplace("sunshine"); using namespace std::chrono_literals; @@ -383,7 +383,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheFull)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; + Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/revalidate-same" }; // Setting any prior field results in skipping the cache. resource.priorExpires.emplace(Seconds(0)); @@ -418,7 +418,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedNotModified)) util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; + Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; resource.priorModified.emplace(Seconds(1420070400)); // January 1, 2015 using namespace std::chrono_literals; @@ -452,7 +452,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedModified)) { util::RunLoop loop; DefaultFileSource fs(":memory:", "."); - Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; + Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; resource.priorModified.emplace(Seconds(1417392000)); // December 1, 2014 using namespace std::chrono_literals; @@ -484,7 +484,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(SetResourceTransform)) { DefaultFileSource fs(":memory:", "."); // Translates the URL "localhost://test to http://127.0.0.1:3000/test - Actor<ResourceTransform> transform(loop, [](Resource::Kind, const std::string&& url) -> std::string { + Actor<ResourceTransform> transform(loop, [](ResourceKind, const std::string&& url) -> std::string { if (url == "localhost://test") { return "http://127.0.0.1:3000/test"; } else { @@ -493,7 +493,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(SetResourceTransform)) { }); fs.setResourceTransform(transform.self()); - const Resource resource1 { Resource::Unknown, "localhost://test" }; + const Resource resource1 { ResourceKind::Unknown, "localhost://test" }; std::unique_ptr<AsyncRequest> req; req = fs.request(resource1, [&](Response res) { @@ -510,7 +510,7 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(SetResourceTransform)) { loop.run(); fs.setResourceTransform({}); - const Resource resource2 { Resource::Unknown, "http://127.0.0.1:3000/test" }; + const Resource resource2 { ResourceKind::Unknown, "http://127.0.0.1:3000/test" }; req = fs.request(resource2, [&](Response res) { req.reset(); diff --git a/test/storage/http_file_source.test.cpp b/test/storage/http_file_source.test.cpp index 5b081d7d5..de523348c 100644 --- a/test/storage/http_file_source.test.cpp +++ b/test/storage/http_file_source.test.cpp @@ -10,7 +10,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(Cancel)) { util::RunLoop loop; HTTPFileSource fs; - fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test" }, [&](Response) { + fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3000/test" }, [&](Response) { ADD_FAILURE() << "Callback should not be called"; }); @@ -21,7 +21,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP200)) { util::RunLoop loop; HTTPFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test" }, [&](Response res) { + auto req = fs.request({ ResourceKind::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); @@ -38,9 +38,9 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP404)) { util::RunLoop loop; HTTPFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/doesnotexist" }, [&](Response res) { + auto req = fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3000/doesnotexist" }, [&](Response res) { ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); + EXPECT_EQ(ResourceStatus::NotFoundError, res.error->status); EXPECT_EQ("HTTP status code 404", res.error->message); EXPECT_FALSE(bool(res.data)); EXPECT_FALSE(bool(res.expires)); @@ -56,7 +56,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTPTile404)) { util::RunLoop loop; HTTPFileSource fs; - auto req = fs.request({ Resource::Tile, "http://127.0.0.1:3000/doesnotexist" }, [&](Response res) { + auto req = fs.request({ ResourceKind::Tile, "http://127.0.0.1:3000/doesnotexist" }, [&](Response res) { EXPECT_TRUE(res.noContent); EXPECT_FALSE(bool(res.error)); EXPECT_FALSE(bool(res.data)); @@ -73,7 +73,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP200EmptyData)) { util::RunLoop loop; HTTPFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/empty-data" }, [&](Response res) { + auto req = fs.request({ ResourceKind::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()); @@ -90,7 +90,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP204)) { util::RunLoop loop; HTTPFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/no-content" }, [&](Response res) { + auto req = fs.request({ ResourceKind::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)); @@ -107,9 +107,9 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(HTTP500)) { util::RunLoop loop; HTTPFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/permanent-error" }, [&](Response res) { + auto req = fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3000/permanent-error" }, [&](Response res) { ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::Server, res.error->reason); + EXPECT_EQ(ResourceStatus::ServerError, res.error->status); EXPECT_EQ("HTTP status code 500", res.error->message); EXPECT_FALSE(bool(res.data)); EXPECT_FALSE(bool(res.expires)); @@ -125,7 +125,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(ExpiresParsing)) { util::RunLoop loop; HTTPFileSource fs; - auto req = fs.request({ Resource::Unknown, + auto req = fs.request({ ResourceKind::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()); @@ -143,7 +143,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(CacheControlParsing)) { util::RunLoop loop; HTTPFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test?cachecontrol=max-age=120" }, [&](Response res) { + auto req = fs.request({ ResourceKind::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); @@ -168,7 +168,7 @@ TEST(HTTPFileSource, TEST_REQUIRES_SERVER(Load)) { std::function<void(int)> req = [&](int i) { const auto current = number++; - reqs[i] = fs.request({ Resource::Unknown, + reqs[i] = fs.request({ ResourceKind::Unknown, std::string("http://127.0.0.1:3000/load/") + std::to_string(current) }, [&, i, current](Response res) { reqs[i].reset(); diff --git a/test/storage/local_file_source.test.cpp b/test/storage/local_file_source.test.cpp index 4d509e6c7..d537c8fe9 100644 --- a/test/storage/local_file_source.test.cpp +++ b/test/storage/local_file_source.test.cpp @@ -25,7 +25,7 @@ TEST(LocalFileSource, EmptyFile) { LocalFileSource fs; - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL("empty") }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, toAbsoluteURL("empty") }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); ASSERT_TRUE(res.data.get()); @@ -41,7 +41,7 @@ TEST(LocalFileSource, NonEmptyFile) { LocalFileSource fs; - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL("nonempty") }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, toAbsoluteURL("nonempty") }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); ASSERT_TRUE(res.data.get()); @@ -57,10 +57,10 @@ TEST(LocalFileSource, NonExistentFile) { LocalFileSource fs; - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL("does_not_exist") }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, toAbsoluteURL("does_not_exist") }, [&](Response res) { req.reset(); ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); + EXPECT_EQ(ResourceStatus::NotFoundError, res.error->status); ASSERT_FALSE(res.data.get()); // Do not assert on platform-specific error message. loop.stop(); @@ -74,10 +74,10 @@ TEST(LocalFileSource, ReadDirectory) { LocalFileSource fs; - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL("directory") }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, toAbsoluteURL("directory") }, [&](Response res) { req.reset(); ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::NotFound, res.error->reason); + EXPECT_EQ(ResourceStatus::NotFoundError, res.error->status); ASSERT_FALSE(res.data.get()); // Do not assert on platform-specific error message. loop.stop(); @@ -91,7 +91,7 @@ TEST(LocalFileSource, URLEncoding) { LocalFileSource fs; - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL("%6eonempty") }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, toAbsoluteURL("%6eonempty") }, [&](Response res) { req.reset(); EXPECT_EQ(nullptr, res.error); ASSERT_TRUE(res.data.get()); @@ -112,10 +112,10 @@ TEST(LocalFileSource, URLLimit) { std::string url(filename, length); - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, toAbsoluteURL(url) }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, toAbsoluteURL(url) }, [&](Response res) { req.reset(); ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::Other, res.error->reason); + EXPECT_EQ(ResourceStatus::OtherError, res.error->status); ASSERT_FALSE(res.data.get()); loop.stop(); }); diff --git a/test/storage/offline_database.test.cpp b/test/storage/offline_database.test.cpp index 872310e46..ccb15ff96 100644 --- a/test/storage/offline_database.test.cpp +++ b/test/storage/offline_database.test.cpp @@ -89,7 +89,7 @@ TEST(OfflineDatabase, TEST_REQUIRES_WRITE(Create)) { Log::setObserver(std::make_unique<FixtureLogObserver>()); OfflineDatabase db("test/fixtures/offline_database/offline.db"); - EXPECT_FALSE(bool(db.get({ Resource::Unknown, "mapbox://test" }))); + EXPECT_FALSE(bool(db.get({ ResourceKind::Unknown, "mapbox://test" }))); Log::removeObserver(); } @@ -137,9 +137,9 @@ TEST(OfflineDatabase, PutDoesNotStoreConnectionErrors) { OfflineDatabase db(":memory:"); - Resource resource { Resource::Unknown, "http://example.com/" }; + Resource resource { ResourceKind::Unknown, "http://example.com/" }; Response response; - response.error = std::make_unique<Response::Error>(Response::Error::Reason::Connection); + response.error = std::make_unique<Response::Error>(ResourceStatus::ConnectionError); db.put(resource, response); EXPECT_FALSE(bool(db.get(resource))); @@ -150,9 +150,9 @@ TEST(OfflineDatabase, PutDoesNotStoreServerErrors) { OfflineDatabase db(":memory:"); - Resource resource { Resource::Unknown, "http://example.com/" }; + Resource resource { ResourceKind::Unknown, "http://example.com/" }; Response response; - response.error = std::make_unique<Response::Error>(Response::Error::Reason::Server); + response.error = std::make_unique<Response::Error>(ResourceStatus::ServerError); db.put(resource, response); EXPECT_FALSE(bool(db.get(resource))); @@ -163,7 +163,7 @@ TEST(OfflineDatabase, PutResource) { OfflineDatabase db(":memory:"); - Resource resource { Resource::Style, "http://example.com/" }; + Resource resource { ResourceKind::Style, "http://example.com/" }; Response response; response.data = std::make_shared<std::string>("first"); @@ -190,7 +190,7 @@ TEST(OfflineDatabase, PutTile) { OfflineDatabase db(":memory:"); - Resource resource { Resource::Tile, "http://example.com/" }; + Resource resource { ResourceKind::Tile, "http://example.com/" }; resource.tileData = Resource::TileData { "http://example.com/", 1, @@ -224,7 +224,7 @@ TEST(OfflineDatabase, PutResourceNoContent) { OfflineDatabase db(":memory:"); - Resource resource { Resource::Style, "http://example.com/" }; + Resource resource { ResourceKind::Style, "http://example.com/" }; Response response; response.noContent = true; @@ -240,7 +240,7 @@ TEST(OfflineDatabase, PutTileNotFound) { OfflineDatabase db(":memory:"); - Resource resource { Resource::Tile, "http://example.com/" }; + Resource resource { ResourceKind::Tile, "http://example.com/" }; resource.tileData = Resource::TileData { "http://example.com/", 1, @@ -364,7 +364,7 @@ TEST(OfflineDatabase, TEST_REQUIRES_WRITE(ConcurrentUse)) { OfflineDatabase db1("test/fixtures/offline_database/offline.db"); OfflineDatabase db2("test/fixtures/offline_database/offline.db"); - Resource resource { Resource::Style, "http://example.com/" }; + Resource resource { ResourceKind::Style, "http://example.com/" }; Response response; response.noContent = true; @@ -525,7 +525,7 @@ TEST(OfflineDatabase, HasRegionResourceTile) { OfflineRegionDefinition definition { "", LatLngBounds::world(), 0, INFINITY, 1.0 }; OfflineRegion region = db.createRegion(definition, OfflineRegionMetadata()); - Resource resource { Resource::Tile, "http://example.com/" }; + Resource resource { ResourceKind::Tile, "http://example.com/" }; resource.tileData = Resource::TileData { "http://example.com/", 1, diff --git a/test/storage/offline_download.test.cpp b/test/storage/offline_download.test.cpp index 57780eba4..78d9994e6 100644 --- a/test/storage/offline_download.test.cpp +++ b/test/storage/offline_download.test.cpp @@ -264,7 +264,7 @@ TEST(OfflineDownload, DoesNotFloodTheFileSourceWithRequests) { EXPECT_EQ(1u, fileSource.requests.size()); - fileSource.respond(Resource::Kind::Style, test.response("style.json")); + fileSource.respond(ResourceKind::Style, test.response("style.json")); test.loop.runOnce(); EXPECT_EQ(HTTPFileSource::maximumConcurrentRequests(), fileSource.requests.size()); @@ -345,14 +345,14 @@ TEST(OfflineDownload, RequestError) { test.fileSource.styleResponse = [&] (const Resource&) { Response response; - response.error = std::make_unique<Response::Error>(Response::Error::Reason::Connection, "connection error"); + response.error = std::make_unique<Response::Error>(ResourceStatus::ConnectionError, "connection error"); return response; }; auto observer = std::make_unique<MockObserver>(); observer->responseErrorFn = [&] (Response::Error error) { - EXPECT_EQ(Response::Error::Reason::Connection, error.reason); + EXPECT_EQ(ResourceStatus::ConnectionError, error.status); EXPECT_EQ("connection error", error.message); test.loop.stop(); }; @@ -377,7 +377,7 @@ TEST(OfflineDownload, RequestErrorsAreRetried) { }; Response response; - response.error = std::make_unique<Response::Error>(Response::Error::Reason::Connection, "connection error"); + response.error = std::make_unique<Response::Error>(ResourceStatus::ConnectionError, "connection error"); return response; }; diff --git a/test/storage/online_file_source.test.cpp b/test/storage/online_file_source.test.cpp index 1a1d2d42f..5229df6c2 100644 --- a/test/storage/online_file_source.test.cpp +++ b/test/storage/online_file_source.test.cpp @@ -14,7 +14,7 @@ TEST(OnlineFileSource, Cancel) { util::RunLoop loop; OnlineFileSource fs; - fs.request({ Resource::Unknown, "http://127.0.0.1:3000/test" }, [&](Response) { + fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3000/test" }, [&](Response) { ADD_FAILURE() << "Callback should not be called"; }); @@ -25,7 +25,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(CancelMultiple)) { util::RunLoop loop; OnlineFileSource fs; - const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/test" }; + const Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/test" }; std::unique_ptr<AsyncRequest> req2 = fs.request(resource, [&](Response) { ADD_FAILURE() << "Callback should not be called"; @@ -51,14 +51,14 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(TemporaryError)) { const auto start = Clock::now(); - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/temporary-error" }, [&](Response res) { + auto req = fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3000/temporary-error" }, [&](Response res) { static int counter = 0; switch (counter++) { case 0: { const auto duration = std::chrono::duration<const double>(Clock::now() - start).count(); EXPECT_GT(0.2, duration) << "Initial error request took too long"; ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::Server, res.error->reason); + EXPECT_EQ(ResourceStatus::ServerError, res.error->status); EXPECT_EQ("HTTP status code 500", res.error->message); ASSERT_FALSE(bool(res.data)); EXPECT_FALSE(bool(res.expires)); @@ -89,14 +89,14 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(ConnectionError)) { const auto start = Clock::now(); - std::unique_ptr<AsyncRequest> req = fs.request({ Resource::Unknown, "http://127.0.0.1:3001/" }, [&](Response res) { + std::unique_ptr<AsyncRequest> req = fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3001/" }, [&](Response res) { static int counter = 0; static int wait = 0; const auto duration = std::chrono::duration<const double>(Clock::now() - start).count(); EXPECT_LT(wait - 0.01, duration) << "Backoff timer didn't wait 1 second"; 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); + EXPECT_EQ(ResourceStatus::ConnectionError, res.error->status); ASSERT_FALSE(res.data.get()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(bool(res.modified)); @@ -119,7 +119,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(Timeout)) { int counter = 0; - const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/test?cachecontrol=max-age=1" }; + const Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/test?cachecontrol=max-age=1" }; std::unique_ptr<AsyncRequest> req = fs.request(resource, [&](Response res) { counter++; EXPECT_EQ(nullptr, res.error); @@ -145,7 +145,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(RetryDelayOnExpiredTile)) { int counter = 0; - const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/test?expires=10000" }; + const Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/test?expires=10000" }; std::unique_ptr<AsyncRequest> req = fs.request(resource, [&](Response res) { counter++; EXPECT_EQ(nullptr, res.error); @@ -168,7 +168,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(RetryOnClockSkew)) { int counter = 0; - const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/clockskew" }; + const Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/clockskew" }; std::unique_ptr<AsyncRequest> req1 = fs.request(resource, [&](Response res) { switch (counter++) { case 0: { @@ -195,7 +195,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(RespectPriorExpires)) { OnlineFileSource fs; // Very long expiration time, should never arrive. - Resource resource1{ Resource::Unknown, "http://127.0.0.1:3000/test" }; + Resource resource1{ ResourceKind::Unknown, "http://127.0.0.1:3000/test" }; resource1.priorExpires = util::now() + Seconds(100000); std::unique_ptr<AsyncRequest> req1 = fs.request(resource1, [&](Response) { @@ -203,14 +203,14 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(RespectPriorExpires)) { }); // No expiration time, should be requested immediately. - Resource resource2{ Resource::Unknown, "http://127.0.0.1:3000/test" }; + Resource resource2{ ResourceKind::Unknown, "http://127.0.0.1:3000/test" }; std::unique_ptr<AsyncRequest> req2 = fs.request(resource2, [&](Response) { loop.stop(); }); // Very long expiration time, should never arrive. - Resource resource3{ Resource::Unknown, "http://127.0.0.1:3000/test" }; + Resource resource3{ ResourceKind::Unknown, "http://127.0.0.1:3000/test" }; resource3.priorExpires = util::now() + Seconds(100000); std::unique_ptr<AsyncRequest> req3 = fs.request(resource3, [&](Response) { @@ -232,7 +232,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(Load)) { std::function<void(int)> req = [&](int i) { const auto current = number++; - reqs[i] = fs.request({ Resource::Unknown, + reqs[i] = fs.request({ ResourceKind::Unknown, std::string("http://127.0.0.1:3000/load/") + std::to_string(current) }, [&, i, current](Response res) { reqs[i].reset(); @@ -268,7 +268,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(NetworkStatusChange)) { util::RunLoop loop; OnlineFileSource fs; - const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/delayed" }; + const Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/delayed" }; // This request takes 200 milliseconds to answer. std::unique_ptr<AsyncRequest> req = fs.request(resource, [&](Response res) { @@ -299,7 +299,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(NetworkStatusChangePreempt)) { const auto start = Clock::now(); - const Resource resource{ Resource::Unknown, "http://127.0.0.1:3001/test" }; + const Resource resource{ ResourceKind::Unknown, "http://127.0.0.1:3001/test" }; std::unique_ptr<AsyncRequest> req = fs.request(resource, [&](Response res) { static int counter = 0; const auto duration = std::chrono::duration<const double>(Clock::now() - start).count(); @@ -312,7 +312,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(NetworkStatusChangePreempt)) { FAIL() << "Retried too often"; } ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::Connection, res.error->reason); + EXPECT_EQ(ResourceStatus::ConnectionError, res.error->status); ASSERT_FALSE(res.data.get()); EXPECT_FALSE(bool(res.expires)); EXPECT_FALSE(bool(res.modified)); @@ -337,7 +337,7 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(NetworkStatusOnlineOffline)) { util::RunLoop loop; OnlineFileSource fs; - const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/test" }; + const Resource resource { ResourceKind::Unknown, "http://127.0.0.1:3000/test" }; EXPECT_EQ(NetworkStatus::Get(), NetworkStatus::Status::Online) << "Default status should be Online"; NetworkStatus::Set(NetworkStatus::Status::Offline); @@ -365,9 +365,9 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(RateLimitStandard)) { util::RunLoop loop; OnlineFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/rate-limit?std=true" }, [&](Response res) { + auto req = fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3000/rate-limit?std=true" }, [&](Response res) { ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::RateLimit, res.error->reason); + EXPECT_EQ(ResourceStatus::RateLimitError, res.error->status); ASSERT_EQ(true, bool(res.error->retryAfter)); ASSERT_LT(util::now(), res.error->retryAfter); loop.stop(); @@ -380,9 +380,9 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(RateLimitMBX)) { util::RunLoop loop; OnlineFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/rate-limit?mbx=true" }, [&](Response res) { + auto req = fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3000/rate-limit?mbx=true" }, [&](Response res) { ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::RateLimit, res.error->reason); + EXPECT_EQ(ResourceStatus::RateLimitError, res.error->status); ASSERT_EQ(true, bool(res.error->retryAfter)); ASSERT_LT(util::now(), res.error->retryAfter); loop.stop(); @@ -395,9 +395,9 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(RateLimitDefault)) { util::RunLoop loop; OnlineFileSource fs; - auto req = fs.request({ Resource::Unknown, "http://127.0.0.1:3000/rate-limit" }, [&](Response res) { + auto req = fs.request({ ResourceKind::Unknown, "http://127.0.0.1:3000/rate-limit" }, [&](Response res) { ASSERT_NE(nullptr, res.error); - EXPECT_EQ(Response::Error::Reason::RateLimit, res.error->reason); + EXPECT_EQ(ResourceStatus::RateLimitError, res.error->status); ASSERT_FALSE(res.error->retryAfter); loop.stop(); }); diff --git a/test/storage/resource.test.cpp b/test/storage/resource.test.cpp index 5a27aa98a..e47aa2dc0 100644 --- a/test/storage/resource.test.cpp +++ b/test/storage/resource.test.cpp @@ -5,14 +5,14 @@ TEST(Resource, Style) { using namespace mbgl; Resource resource = Resource::style("http://example.com"); - EXPECT_EQ(Resource::Kind::Style, resource.kind); + EXPECT_EQ(ResourceKind::Style, resource.kind); EXPECT_EQ("http://example.com", resource.url); } TEST(Resource, Source) { using namespace mbgl; Resource resource = Resource::source("http://example.com"); - EXPECT_EQ(Resource::Kind::Source, resource.kind); + EXPECT_EQ(ResourceKind::Source, resource.kind); EXPECT_EQ("http://example.com", resource.url); } @@ -20,7 +20,7 @@ TEST(Resource, Tile) { using namespace mbgl; Resource rasterTile = Resource::tile("http://example.com/{z}/{x}/{y}{ratio}.png", 2.0, 1, 2, 3, Tileset::Scheme::XYZ); - EXPECT_EQ(Resource::Kind::Tile, rasterTile.kind); + EXPECT_EQ(ResourceKind::Tile, rasterTile.kind); EXPECT_EQ("http://example.com/3/1/2@2x.png", rasterTile.url); EXPECT_EQ("http://example.com/{z}/{x}/{y}{ratio}.png", rasterTile.tileData->urlTemplate); EXPECT_EQ(2, rasterTile.tileData->pixelRatio); @@ -29,7 +29,7 @@ TEST(Resource, Tile) { EXPECT_EQ(3, rasterTile.tileData->z); Resource vectorTile = Resource::tile("http://example.com/{z}/{x}/{y}.mvt", 2.0, 1, 2, 3, Tileset::Scheme::XYZ); - EXPECT_EQ(Resource::Kind::Tile, vectorTile.kind); + EXPECT_EQ(ResourceKind::Tile, vectorTile.kind); EXPECT_EQ("http://example.com/3/1/2.mvt", vectorTile.url); EXPECT_EQ("http://example.com/{z}/{x}/{y}.mvt", vectorTile.tileData->urlTemplate); EXPECT_EQ(1, vectorTile.tileData->pixelRatio); @@ -38,7 +38,7 @@ TEST(Resource, Tile) { EXPECT_EQ(3, vectorTile.tileData->z); Resource quadTile = Resource::tile("http://example.com/{quadkey}.png", 2.0, 0, 0, 1, Tileset::Scheme::XYZ); - EXPECT_EQ(Resource::Kind::Tile, quadTile.kind); + EXPECT_EQ(ResourceKind::Tile, quadTile.kind); EXPECT_EQ("http://example.com/0.png", quadTile.url); EXPECT_EQ("http://example.com/{quadkey}.png", quadTile.tileData->urlTemplate); EXPECT_EQ(1, quadTile.tileData->pixelRatio); @@ -47,7 +47,7 @@ TEST(Resource, Tile) { EXPECT_EQ(1, quadTile.tileData->z); quadTile = Resource::tile("http://example.com/{quadkey}.png", 2.0, 0, 0, 2, Tileset::Scheme::XYZ); - EXPECT_EQ(Resource::Kind::Tile, quadTile.kind); + EXPECT_EQ(ResourceKind::Tile, quadTile.kind); EXPECT_EQ("http://example.com/00.png", quadTile.url); EXPECT_EQ("http://example.com/{quadkey}.png", quadTile.tileData->urlTemplate); EXPECT_EQ(1, quadTile.tileData->pixelRatio); @@ -56,7 +56,7 @@ TEST(Resource, Tile) { EXPECT_EQ(2, quadTile.tileData->z); quadTile = Resource::tile("http://example.com/{quadkey}.png", 2.0, 1, 1, 2, Tileset::Scheme::XYZ); - EXPECT_EQ(Resource::Kind::Tile, quadTile.kind); + EXPECT_EQ(ResourceKind::Tile, quadTile.kind); EXPECT_EQ("http://example.com/03.png", quadTile.url); EXPECT_EQ("http://example.com/{quadkey}.png", quadTile.tileData->urlTemplate); EXPECT_EQ(1, quadTile.tileData->pixelRatio); @@ -65,7 +65,7 @@ TEST(Resource, Tile) { EXPECT_EQ(2, quadTile.tileData->z); quadTile = Resource::tile("http://example.com/{quadkey}.png", 2.0, 22914, 52870, 17, Tileset::Scheme::XYZ); - EXPECT_EQ(Resource::Kind::Tile, quadTile.kind); + EXPECT_EQ(ResourceKind::Tile, quadTile.kind); EXPECT_EQ("http://example.com/02301322130000230.png", quadTile.url); EXPECT_EQ("http://example.com/{quadkey}.png", quadTile.tileData->urlTemplate); EXPECT_EQ(1, quadTile.tileData->pixelRatio); @@ -76,7 +76,7 @@ TEST(Resource, Tile) { // Test case confirmed by quadkeytools package // https://bitbucket.org/steele/quadkeytools/src/master/test/quadkey.js?fileviewer=file-view-default#quadkey.js-57 quadTile = Resource::tile("http://example.com/{quadkey}.png", 2.0, 29, 3, 6, Tileset::Scheme::XYZ); - EXPECT_EQ(Resource::Kind::Tile, quadTile.kind); + EXPECT_EQ(ResourceKind::Tile, quadTile.kind); EXPECT_EQ("http://example.com/011123.png", quadTile.url); EXPECT_EQ("http://example.com/{quadkey}.png", quadTile.tileData->urlTemplate); EXPECT_EQ(1, quadTile.tileData->pixelRatio); @@ -85,7 +85,7 @@ TEST(Resource, Tile) { EXPECT_EQ(6, quadTile.tileData->z); Resource wmsTile = Resource::tile("http://example.com/?bbox={bbox-epsg-3857}", 2.0, 0, 0, 1, Tileset::Scheme::XYZ); - EXPECT_EQ(Resource::Kind::Tile, wmsTile.kind); + EXPECT_EQ(ResourceKind::Tile, wmsTile.kind); EXPECT_EQ("http://example.com/?bbox=-20037508.342789245,0,0,20037508.342789245", wmsTile.url); EXPECT_EQ("http://example.com/?bbox={bbox-epsg-3857}", wmsTile.tileData->urlTemplate); EXPECT_EQ(1, wmsTile.tileData->pixelRatio); @@ -94,7 +94,7 @@ TEST(Resource, Tile) { EXPECT_EQ(1, wmsTile.tileData->z); Resource tmsTile = Resource::tile("http://example.com/{z}/{x}/{y}{ratio}.png", 1.0, 1, 2, 3, Tileset::Scheme::TMS); - EXPECT_EQ(Resource::Kind::Tile, tmsTile.kind); + EXPECT_EQ(ResourceKind::Tile, tmsTile.kind); EXPECT_EQ("http://example.com/3/1/5.png", tmsTile.url); EXPECT_EQ("http://example.com/{z}/{x}/{y}{ratio}.png", tmsTile.tileData->urlTemplate); EXPECT_EQ(1, tmsTile.tileData->pixelRatio); @@ -106,27 +106,27 @@ TEST(Resource, Tile) { TEST(Resource, Glyphs) { using namespace mbgl; Resource resource = Resource::glyphs("http://example.com/{fontstack}/{range}", {{"stack"}}, {0, 255}); - EXPECT_EQ(Resource::Kind::Glyphs, resource.kind); + EXPECT_EQ(ResourceKind::Glyphs, resource.kind); EXPECT_EQ("http://example.com/stack/0-255", resource.url); } TEST(Resource, SpriteImage) { using namespace mbgl; Resource resource = Resource::spriteImage("http://example.com/sprite", 2.0); - EXPECT_EQ(Resource::Kind::SpriteImage, resource.kind); + EXPECT_EQ(ResourceKind::SpriteImage, resource.kind); EXPECT_EQ("http://example.com/sprite@2x.png", resource.url); } TEST(Resource, Image) { using namespace mbgl; Resource resource = Resource::image("http://example.com/sprite.jpg"); - EXPECT_EQ(Resource::Kind::Image, resource.kind); + EXPECT_EQ(ResourceKind::Image, resource.kind); EXPECT_EQ("http://example.com/sprite.jpg", resource.url); } TEST(Resource, SpriteJSON) { using namespace mbgl; Resource resource = Resource::spriteJSON("http://example.com/sprite", 2.0); - EXPECT_EQ(Resource::Kind::SpriteJSON, resource.kind); + EXPECT_EQ(ResourceKind::SpriteJSON, resource.kind); EXPECT_EQ("http://example.com/sprite@2x.json", resource.url); } diff --git a/test/style/source.test.cpp b/test/style/source.test.cpp index 919260ffe..7edaeed24 100644 --- a/test/style/source.test.cpp +++ b/test/style/source.test.cpp @@ -92,7 +92,7 @@ TEST(Source, LoadingFail) { EXPECT_EQ("url", resource.url); Response response; response.error = std::make_unique<Response::Error>( - Response::Error::Reason::Other, + ResourceStatus::OtherError, "Failed by the test case"); return response; }; @@ -217,7 +217,7 @@ TEST(Source, RasterTileFail) { test.fileSource.tileResponse = [&] (const Resource&) { Response response; response.error = std::make_unique<Response::Error>( - Response::Error::Reason::Other, + ResourceStatus::OtherError, "Failed by the test case"); return response; }; @@ -255,7 +255,7 @@ TEST(Source, VectorTileFail) { test.fileSource.tileResponse = [&] (const Resource&) { Response response; response.error = std::make_unique<Response::Error>( - Response::Error::Reason::Other, + ResourceStatus::OtherError, "Failed by the test case"); return response; }; diff --git a/test/text/glyph_loader.test.cpp b/test/text/glyph_loader.test.cpp index be197ebb4..41a65778f 100644 --- a/test/text/glyph_loader.test.cpp +++ b/test/text/glyph_loader.test.cpp @@ -60,7 +60,7 @@ TEST(GlyphManager, LoadingSuccess) { GlyphManagerTest test; test.fileSource.glyphsResponse = [&] (const Resource& resource) { - EXPECT_EQ(Resource::Kind::Glyphs, resource.kind); + EXPECT_EQ(ResourceKind::Glyphs, resource.kind); Response response; response.data = std::make_shared<std::string>(util::read_file("test/fixtures/resources/glyphs.pbf")); return response; @@ -101,7 +101,7 @@ TEST(GlyphManager, LoadingFail) { test.fileSource.glyphsResponse = [&] (const Resource&) { Response response; response.error = std::make_unique<Response::Error>( - Response::Error::Reason::Other, + ResourceStatus::OtherError, "Failed by the test case"); return response; }; @@ -182,7 +182,7 @@ TEST(GlyphManager, LoadingInvalid) { GlyphManagerTest test; test.fileSource.glyphsResponse = [&] (const Resource& resource) { - EXPECT_EQ(Resource::Kind::Glyphs, resource.kind); + EXPECT_EQ(ResourceKind::Glyphs, resource.kind); Response response; response.data = std::make_shared<std::string>(util::read_file("test/fixtures/resources/fake_glyphs-0-255.pbf")); return response; diff --git a/test/util/http_timeout.test.cpp b/test/util/http_timeout.test.cpp index c9373d955..099195d22 100644 --- a/test/util/http_timeout.test.cpp +++ b/test/util/http_timeout.test.cpp @@ -8,36 +8,36 @@ using namespace mbgl::http; TEST(HttpRetry, OtherError) { // Non-retryable - ASSERT_EQ(Duration::max(), errorRetryTimeout(Response::Error::Reason::Other, 1)); + ASSERT_EQ(Duration::max(), errorRetryTimeout(ResourceStatus::OtherError, 1)); } TEST(HttpRetry, NotFound) { // Non-retryable - ASSERT_EQ(Duration::max(), errorRetryTimeout(Response::Error::Reason::NotFound, 1)); + ASSERT_EQ(Duration::max(), errorRetryTimeout(ResourceStatus::NotFoundError, 1)); } TEST(HttpRetry, ServerError) { // 1-3 failures -> 1 sec - ASSERT_EQ(Seconds(1), errorRetryTimeout(Response::Error::Reason::Server, 1)); - ASSERT_EQ(Seconds(1), errorRetryTimeout(Response::Error::Reason::Server, 3)); + ASSERT_EQ(Seconds(1), errorRetryTimeout(ResourceStatus::ServerError, 1)); + ASSERT_EQ(Seconds(1), errorRetryTimeout(ResourceStatus::ServerError, 3)); // After 3, exponential backoff - ASSERT_EQ(Seconds(2), errorRetryTimeout(Response::Error::Reason::Server, 4)); - ASSERT_EQ(Seconds(1u << 31), errorRetryTimeout(Response::Error::Reason::Server, 50)); + ASSERT_EQ(Seconds(2), errorRetryTimeout(ResourceStatus::ServerError, 4)); + ASSERT_EQ(Seconds(1u << 31), errorRetryTimeout(ResourceStatus::ServerError, 50)); } TEST(HttpRetry, ConnectionError) { // Exponential backoff - ASSERT_EQ(Seconds(1), errorRetryTimeout(Response::Error::Reason::Server, 1)); - ASSERT_EQ(Seconds(1u << 31), errorRetryTimeout(Response::Error::Reason::Connection, 50)); + ASSERT_EQ(Seconds(1), errorRetryTimeout(ResourceStatus::ServerError, 1)); + ASSERT_EQ(Seconds(1u << 31), errorRetryTimeout(ResourceStatus::ConnectionError, 50)); } TEST(HttpRetry, RateLimit) { // Pre-set value from header - ASSERT_EQ(Seconds(1), errorRetryTimeout(Response::Error::Reason::Server, 1, { util::now() + Seconds(1) })); + ASSERT_EQ(Seconds(1), errorRetryTimeout(ResourceStatus::ServerError, 1, { util::now() + Seconds(1) })); // Default - ASSERT_EQ(Seconds(5), errorRetryTimeout(Response::Error::Reason::RateLimit, 1, {})); + ASSERT_EQ(Seconds(5), errorRetryTimeout(ResourceStatus::RateLimitError, 1, {})); } TEST(HttpRetry, ExpiredInitial) { |