aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/bucket_quoter/ut/README.md
blob: a0db9f623945164daab531c48d902b4c8fbb2972 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Unit test для bucket_quoter

Этот тест предназначен не для проверки корректности bucket_quoter, а для того, 
чтобы показать некоторые его недостатки

Первый недостаток: При вызове метода FillBucket, вычисляется количество токенов,
которое можно добавить в Bucket за время, прошедшее с последнего добавления.
Если это количество нецелое, то оно округляется вниз. Это может иметь значение для малых RPS.

Второй недостаток: 
При попытке получить время через GetWaitTime, возвращается не ближайшее время, когда станут доступны новые токены. 
Возвращаемое время кратно (1 / RPS), выраженному в микросекундах. 
Кроме того, из-за округления, метод может вернуть время, в котором новые токены все еще не смогут быть начислены. 

Написанный тест демонстрирует, что данные недостатки могут приводить значительному снижению
количества пропускаемых лимитером запросов(вплоть до двух раз в специальных условиях с искусственным таймером).

Так же демонстрируется, что при использовании лимитера со стандартным таймером(TInstantTimerMs), RPS тоже может 
достаточно далек от заданного.