summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHuyen Chau Nguyen <hello@chau-nguyen.de>2018-10-31 09:51:50 +0100
committerchaupow <hello@chau-nguyen.de>2018-11-14 15:36:35 +0100
commite6cc6576b8e5f88f2540de604e507e511875b25c (patch)
tree7eee01ece50f50bc918fa88467617d743888cf2a
parent7c41f1a76700e87f150e20fe0f50140aa70e0ba5 (diff)
downloadqtlocation-mapboxgl-upstream/chaupow-refactor-http-request-concurrency.tar.gz
[core] add test about number of maximum concurrent requestsupstream/chaupow-refactor-http-request-concurrency
-rw-r--r--test/src/mbgl/test/fake_file_source.hpp14
-rw-r--r--test/src/mbgl/test/stub_file_source.hpp14
-rw-r--r--test/storage/offline_download.test.cpp6
-rw-r--r--test/storage/online_file_source.test.cpp9
4 files changed, 40 insertions, 3 deletions
diff --git a/test/src/mbgl/test/fake_file_source.hpp b/test/src/mbgl/test/fake_file_source.hpp
index baae7f9b7e..8803e9576b 100644
--- a/test/src/mbgl/test/fake_file_source.hpp
+++ b/test/src/mbgl/test/fake_file_source.hpp
@@ -1,6 +1,7 @@
#pragma once
#include <mbgl/storage/file_source.hpp>
+#include <mbgl/storage/online_file_source.hpp>
#include <algorithm>
#include <list>
@@ -56,6 +57,19 @@ public:
}
std::list<FakeFileRequest*> requests;
+
+};
+
+class FakeOnlineFileSource : public OnlineFileSource, public FakeFileSource {
+public:
+ std::unique_ptr<AsyncRequest> request(const Resource& resource, Callback callback) override {
+ return FakeFileSource::request(resource, callback);
+ }
+
+ bool respond(Resource::Kind kind, const Response& response) {
+ return FakeFileSource::respond(kind, response);
+ }
};
+
} // namespace mbgl
diff --git a/test/src/mbgl/test/stub_file_source.hpp b/test/src/mbgl/test/stub_file_source.hpp
index 6cee8377c6..1135fa9a80 100644
--- a/test/src/mbgl/test/stub_file_source.hpp
+++ b/test/src/mbgl/test/stub_file_source.hpp
@@ -1,6 +1,7 @@
#pragma once
#include <mbgl/storage/file_source.hpp>
+#include <mbgl/storage/online_file_source.hpp>
#include <mbgl/util/timer.hpp>
#include <unordered_map>
@@ -37,6 +38,8 @@ public:
ResponseFunction imageResponse;
private:
+ friend class StubOnlineFileSource;
+
// The default behavior is to throw if no per-kind callback has been set.
optional<Response> defaultResponse(const Resource&);
@@ -45,4 +48,15 @@ private:
util::Timer timer;
};
+class StubOnlineFileSource : public StubFileSource, public OnlineFileSource {
+public:
+
+ StubOnlineFileSource(ResponseType t = ResponseType::Asynchronous) : StubFileSource(t) {};
+ ~StubOnlineFileSource() override = default;
+
+ std::unique_ptr<AsyncRequest> request(const Resource& r, Callback c) override { return StubFileSource::request(r, c); };
+ void remove(AsyncRequest* r) { StubFileSource::remove(r); };
+};
+
+
} // namespace mbgl
diff --git a/test/storage/offline_download.test.cpp b/test/storage/offline_download.test.cpp
index 4db807a204..83fb7f3c18 100644
--- a/test/storage/offline_download.test.cpp
+++ b/test/storage/offline_download.test.cpp
@@ -61,7 +61,7 @@ public:
}
util::RunLoop loop;
- StubFileSource fileSource;
+ StubOnlineFileSource fileSource;
OfflineDatabase db;
std::size_t size = 0;
@@ -277,8 +277,8 @@ TEST(OfflineDownload, Activate) {
}
TEST(OfflineDownload, DoesNotFloodTheFileSourceWithRequests) {
- FakeFileSource fileSource;
OfflineTest test;
+ FakeOnlineFileSource fileSource;
auto region = test.createRegion();
ASSERT_TRUE(region);
OfflineDownload download(
@@ -297,7 +297,7 @@ TEST(OfflineDownload, DoesNotFloodTheFileSourceWithRequests) {
fileSource.respond(Resource::Kind::Style, test.response("style.json"));
test.loop.runOnce();
- EXPECT_EQ(HTTPFileSource::maximumConcurrentRequests(), fileSource.requests.size());
+ EXPECT_EQ(fileSource.getMaximumConcurrentRequests(), fileSource.requests.size());
}
TEST(OfflineDownload, GetStatusNoResources) {
diff --git a/test/storage/online_file_source.test.cpp b/test/storage/online_file_source.test.cpp
index 36d6f63a77..756a7a92d1 100644
--- a/test/storage/online_file_source.test.cpp
+++ b/test/storage/online_file_source.test.cpp
@@ -517,6 +517,15 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(LowHighPriorityRequestsMany)) {
loop.run();
}
+TEST(OnlineFileSource, TEST_REQUIRES_SERVER(MaximumConcurrentRequests)) {
+ util::RunLoop loop;
+ OnlineFileSource fs;
+
+ ASSERT_EQ(fs.getMaximumConcurrentRequests(), 20u);
+
+ fs.setMaximumConcurrentRequests(10);
+ ASSERT_EQ(fs.getMaximumConcurrentRequests(), 10u);
+}
TEST(OnlineFileSource, TEST_REQUIRES_SERVER(RequestSameUrlMultipleTimes)) {
util::RunLoop loop;
OnlineFileSource fs;