/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
cloud/blockstore/libs/service/blocks_info_ut.cpp
69 строк
2 KB
Anton Myagkov
issue-3371: fix handling of unaligned ZeroBlocks requests with large sizes (#3603)
06 июн 2025, 18:06
Не верифицирован
06 июн 2025, 18:06
dfa3478
Код
Авторство
О чём код?
#include "blocks_info.h" #include <library/cpp/testing/unittest/registar.h> namespace NCloud::NBlockStore { //////////////////////////////////////////////////////////////////////////////// Y_UNIT_TEST_SUITE(BlocksInfoTest) { Y_UNIT_TEST(TestSplit) { const ui32 BlockSize = 512; { // aligned message is not split TBlocksInfo blocksInfo(0, 8 * BlockSize, BlockSize); auto [first, second] = blocksInfo.Split(); UNIT_ASSERT_VALUES_EQUAL(blocksInfo, first); UNIT_ASSERT(!second); } { // unaligned message with 1 block size is not split TBlocksInfo blocksInfo(5, BlockSize - 10, BlockSize); auto [first, second] = blocksInfo.Split(); UNIT_ASSERT_VALUES_EQUAL(blocksInfo, first); UNIT_ASSERT(!second); } { // unaligned message with size less or equal than 2 blocks is not // split TBlocksInfo blocksInfo(5, 2 * BlockSize - 10, BlockSize); auto [first, second] = blocksInfo.Split(); UNIT_ASSERT_VALUES_EQUAL(blocksInfo, first); UNIT_ASSERT(!second); } { // unaligned message with size more than 2 blocks is split const ui32 offset = 5; TBlocksInfo blocksInfo(offset, 2 * BlockSize, BlockSize); auto [first, second] = blocksInfo.Split(); UNIT_ASSERT_VALUES_EQUAL( TBlocksInfo(offset, BlockSize - offset, BlockSize), first); UNIT_ASSERT(second); UNIT_ASSERT_VALUES_EQUAL( TBlocksInfo(BlockSize, BlockSize + offset, BlockSize), *second); } { // message with unaligned end offset is split const ui32 endOffset = 5; TBlocksInfo blocksInfo(0, 10 * BlockSize + endOffset, BlockSize); auto [first, second] = blocksInfo.Split(); UNIT_ASSERT_VALUES_EQUAL( TBlocksInfo(0, 10 * BlockSize, BlockSize), first); UNIT_ASSERT(second); UNIT_ASSERT_VALUES_EQUAL( TBlocksInfo(10 * BlockSize, endOffset, BlockSize), *second); } } } } // namespace NCloud::NBlockStore