/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/monlib/counters/counters_ut.cpp
49 строк
1 KB
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#include "counters.h" #include <library/cpp/testing/unittest/registar.h> #include <util/generic/set.h> #include <util/thread/pool.h> using namespace NMonitoring; Y_UNIT_TEST_SUITE(TDeprecatedCountersTest) { Y_UNIT_TEST(CounterGroupsAreThreadSafe) { const static ui32 GROUPS_COUNT = 1000; const static ui32 THREADS_COUNT = 10; TDeprecatedCounterGroups<ui32, ui32> groups; auto adder = [&groups]() { for (ui32 id = 0; id < GROUPS_COUNT; id++) { groups.Get(id); // adds contention ::NanoSleep(42); } }; TThreadPool q; q.Start(THREADS_COUNT); for (ui32 i = 0; i < THREADS_COUNT; i++) { q.SafeAddFunc(adder); } q.Stop(); // each group id is present for (ui32 id = 0; id < GROUPS_COUNT; id++) { UNIT_ASSERT(groups.Has(id)); } // group names contains only appropriate ids auto ids = groups.GetGroupsNames(); for (ui32 id : *ids) { UNIT_ASSERT(id < GROUPS_COUNT); } // no duplication in group names TSet<ui32> uniqueIds(ids->begin(), ids->end()); UNIT_ASSERT_EQUAL(ids->size(), uniqueIds.size()); UNIT_ASSERT_EQUAL(ids->size(), GROUPS_COUNT); } }