[core] add test about number of maximum concurrent requests

This commit is contained in:
Huyen Chau Nguyen
2018-10-31 09:51:50 +01:00
committed by Asheem Mamoowala
parent 9a606caf0b
commit 8d0b06d5dd
4 changed files with 40 additions and 3 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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) {

View File

@@ -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;