[core] add test about number of maximum concurrent requests
This commit is contained in:
committed by
Asheem Mamoowala
parent
9a606caf0b
commit
8d0b06d5dd
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user