mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 04:53:36 +00:00
[tests] Add downloading dynamic chunk size test
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
This commit is contained in:
committed by
Konstantin Pastbin
parent
304addba58
commit
7e63d98cb7
@@ -331,6 +331,43 @@ UNIT_TEST(ChunksDownloadStrategyFAIL)
|
||||
TEST_EQUAL(strategy.NextChunk(s2, r2), ChunksDownloadStrategy::EDownloadFailed, ());
|
||||
}
|
||||
|
||||
UNIT_TEST(ChunksDownloadStrategyDynamicChunks)
|
||||
{
|
||||
vector<string> const servers = {"UrlOfServer1", "UrlOfServer2"};
|
||||
|
||||
typedef pair<int64_t, int64_t> RangeT;
|
||||
|
||||
string url;
|
||||
ChunksDownloadStrategy strategy(servers);
|
||||
|
||||
// Small 1MB file - one chunk
|
||||
strategy.InitChunks(1024 * 1024, 0);
|
||||
RangeT const R11{0, 1024 * 1024 - 1};
|
||||
RangeT r1;
|
||||
TEST_EQUAL(strategy.NextChunk(url, r1), ChunksDownloadStrategy::ENextChunk, ());
|
||||
RangeT rEmpty;
|
||||
TEST_EQUAL(strategy.NextChunk(url, rEmpty), ChunksDownloadStrategy::ENoFreeServers, ());
|
||||
TEST(r1 == R11, (r1));
|
||||
|
||||
// Small 1MB+1b file - 2 chunks
|
||||
strategy = ChunksDownloadStrategy(servers);
|
||||
strategy.InitChunks(1024 * 1024 + 1, 0);
|
||||
RangeT const R21{0, 1024 * 1024 - 1}, R22{1024 * 1024, 1024 * 1024};
|
||||
TEST_EQUAL(strategy.NextChunk(url, r1), ChunksDownloadStrategy::ENextChunk, ());
|
||||
RangeT r2;
|
||||
TEST_EQUAL(strategy.NextChunk(url, r2), ChunksDownloadStrategy::ENextChunk, ());
|
||||
TEST_EQUAL(strategy.NextChunk(url, rEmpty), ChunksDownloadStrategy::ENoFreeServers, ());
|
||||
TEST(r1 == R21 && r2 == R22, (r1, r2));
|
||||
|
||||
// Big 200MB file - 5MB chunks
|
||||
strategy = ChunksDownloadStrategy(servers);
|
||||
strategy.InitChunks(200 * 1024 * 1024, 0);
|
||||
RangeT const R31{0, 5 * 1024 * 1024 - 1}, R32{5 * 1024 * 1024, 2 * 5 * 1024 * 1024 - 1};
|
||||
TEST_EQUAL(strategy.NextChunk(url, r1), ChunksDownloadStrategy::ENextChunk, ());
|
||||
TEST_EQUAL(strategy.NextChunk(url, r2), ChunksDownloadStrategy::ENextChunk, ());
|
||||
TEST(r1 == R31 && r2 == R32, (r1, r2));
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
string ReadFileAsString(string const & file)
|
||||
|
||||
Reference in New Issue
Block a user