alexv-smirnov bf0f13dd39 add ymake export to ydb | 1 year ago | |
---|---|---|
.. | ||
README.md | bfa8c3e83c Restoring authorship annotation for <imsemenov00@yandex-team.ru>. Commit 2 of 2. | 2 years ago |
main.cpp | bfa8c3e83c Restoring authorship annotation for <imsemenov00@yandex-team.ru>. Commit 2 of 2. | 2 years ago |
test_namespace.cpp | bfa8c3e83c Restoring authorship annotation for <imsemenov00@yandex-team.ru>. Commit 2 of 2. | 2 years ago |
test_namespace.h | bfa8c3e83c Restoring authorship annotation for <imsemenov00@yandex-team.ru>. Commit 2 of 2. | 2 years ago |
ya.make | bf0f13dd39 add ymake export to ydb | 1 year ago |
Этот тест предназначен не для проверки корректности bucket_quoter, а для того, чтобы показать некоторые его недостатки
Первый недостаток: При вызове метода FillBucket, вычисляется количество токенов, которое можно добавить в Bucket за время, прошедшее с последнего добавления. Если это количество нецелое, то оно округляется вниз. Это может иметь значение для малых RPS.
Второй недостаток: При попытке получить время через GetWaitTime, возвращается не ближайшее время, когда станут доступны новые токены. Возвращаемое время кратно (1 / RPS), выраженному в микросекундах. Кроме того, из-за округления, метод может вернуть время, в котором новые токены все еще не смогут быть начислены.
Написанный тест демонстрирует, что данные недостатки могут приводить значительному снижению количества пропускаемых лимитером запросов(вплоть до двух раз в специальных условиях с искусственным таймером).
Так же демонстрируется, что при использовании лимитера со стандартным таймером(TInstantTimerMs), RPS тоже может достаточно далек от заданного.