MCPcopy Create free account
hub / github.com/aria2/aria2 / testWriteCache

Method testWriteCache

test/MultiDiskAdaptorTest.cc:445–484  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

443}
444
445void MultiDiskAdaptorTest::testWriteCache()
446{
447 std::string storeDir =
448 A2_TEST_OUT_DIR "/aria2_MultiDiskAdaptorTest_testWriteCache";
449 auto entries = std::vector<std::shared_ptr<FileEntry>>{
450 std::make_shared<FileEntry>(storeDir + "/file1", 16385, 0),
451 std::make_shared<FileEntry>(storeDir + "/file2", 4098, 16385)};
452 for (const auto& i : entries) {
453 File(i->getPath()).remove();
454 }
455 auto adaptor = std::make_shared<MultiDiskAdaptor>();
456 adaptor->setFileEntries(std::begin(entries), std::end(entries));
457 WrDiskCacheEntry cache{adaptor};
458 std::string data1(16383, '1'), data2(100, '2'), data3(4000, '3');
459 cache.cacheData(createDataCell(0, data1.c_str()));
460 cache.cacheData(createDataCell(data1.size(), data2.c_str()));
461 cache.cacheData(createDataCell(data1.size() + data2.size(), data3.c_str()));
462 adaptor->openFile();
463 adaptor->writeCache(&cache);
464 for (int i = 0; i < 2; ++i) {
465 CPPUNIT_ASSERT_EQUAL(entries[i]->getLength(),
466 File(entries[i]->getPath()).size());
467 }
468 CPPUNIT_ASSERT_EQUAL(data1 + data2.substr(0, 2),
469 readFile(entries[0]->getPath()));
470 CPPUNIT_ASSERT_EQUAL(data2.substr(2) + data3,
471 readFile(entries[1]->getPath()));
472
473 adaptor->closeFile();
474 for (int i = 0; i < 2; ++i) {
475 File(entries[i]->getPath()).remove();
476 }
477 cache.clear();
478 cache.cacheData(createDataCell(123, data2.c_str()));
479 adaptor->openFile();
480 adaptor->writeCache(&cache);
481 CPPUNIT_ASSERT_EQUAL((int64_t)(123 + data2.size()),
482 File(entries[0]->getPath()).size());
483 CPPUNIT_ASSERT_EQUAL(data2, readFile(entries[0]->getPath()).substr(123));
484}
485
486} // namespace aria2

Callers

nothing calls this directly

Calls 13

FileClass · 0.85
createDataCellFunction · 0.85
getPathMethod · 0.80
cacheDataMethod · 0.80
readFileFunction · 0.70
removeMethod · 0.45
setFileEntriesMethod · 0.45
sizeMethod · 0.45
openFileMethod · 0.45
writeCacheMethod · 0.45
getLengthMethod · 0.45
closeFileMethod · 0.45

Tested by

no test coverage detected