/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
util/system/mincore_ut.cpp
39 строк
1 KB
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#include <library/cpp/testing/unittest/registar.h> #include "filemap.h" #include "info.h" #include "mincore.h" #include "mlock.h" #include "tempfile.h" #include <util/generic/size_literals.h> Y_UNIT_TEST_SUITE(MincoreSuite) { static const char* FileName_("./mappped_file"); Y_UNIT_TEST(TestLockAndInCore) { TVector<char> content(2_MB); TTempFile cleanup(FileName_); TFile file(FileName_, CreateAlways | WrOnly); file.Write(content.data(), content.size()); file.Close(); TFileMap mappedFile(FileName_, TMemoryMapCommon::oRdWr); mappedFile.Map(0, mappedFile.Length()); UNIT_ASSERT_EQUAL(mappedFile.MappedSize(), content.size()); UNIT_ASSERT_EQUAL(mappedFile.Length(), static_cast<i64>(content.size())); LockMemory(mappedFile.Ptr(), mappedFile.Length()); TVector<unsigned char> incore(mappedFile.Length() / NSystemInfo::GetPageSize()); InCoreMemory(mappedFile.Ptr(), mappedFile.Length(), incore.data(), incore.size()); // compile and run on all platforms, but assume non-zero results only on Linux #if defined(_linux_) for (const auto& flag : incore) { UNIT_ASSERT(IsPageInCore(flag)); } #endif } }