/
NikolayIvkin
/
TheAlgorithms
Обзор
Документация
Войти
/
NikolayIvkin
/
TheAlgorithms
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/test/java/com/thealgorithms/datastructures/queues/TokenBucketTest.java
90 строк
2 KB
Hardik Pawar
Add TokenBucket algorithm (#5840)
26 окт 2024, 11:39
Не верифицирован
26 окт 2024, 11:39
82dee61
Код
Авторство
О чём код?
package com.thealgorithms.datastructures.queues; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; public class TokenBucketTest { @Test public void testRateLimiter() throws InterruptedException { TokenBucket bucket = new TokenBucket(5, 1); for (int i = 0; i < 5; i++) { assertTrue(bucket.allowRequest()); } assertFalse(bucket.allowRequest()); Thread.sleep(1000); assertTrue(bucket.allowRequest()); } @Test public void testRateLimiterWithExceedingRequests() throws InterruptedException { TokenBucket bucket = new TokenBucket(3, 1); for (int i = 0; i < 3; i++) { assertTrue(bucket.allowRequest()); } assertFalse(bucket.allowRequest()); Thread.sleep(1000); assertTrue(bucket.allowRequest()); assertFalse(bucket.allowRequest()); } @Test public void testRateLimiterMultipleRefills() throws InterruptedException { TokenBucket bucket = new TokenBucket(2, 1); assertTrue(bucket.allowRequest()); assertTrue(bucket.allowRequest()); assertFalse(bucket.allowRequest()); Thread.sleep(1000); assertTrue(bucket.allowRequest()); Thread.sleep(1000); assertTrue(bucket.allowRequest()); assertFalse(bucket.allowRequest()); } @Test public void testRateLimiterEmptyBucket() { TokenBucket bucket = new TokenBucket(0, 1); assertFalse(bucket.allowRequest()); } @Test public void testRateLimiterWithHighRefillRate() throws InterruptedException { TokenBucket bucket = new TokenBucket(5, 10); for (int i = 0; i < 5; i++) { assertTrue(bucket.allowRequest()); } assertFalse(bucket.allowRequest()); Thread.sleep(1000); for (int i = 0; i < 5; i++) { assertTrue(bucket.allowRequest()); } } @Test public void testRateLimiterWithSlowRequests() throws InterruptedException { TokenBucket bucket = new TokenBucket(5, 1); for (int i = 0; i < 5; i++) { assertTrue(bucket.allowRequest()); } Thread.sleep(1000); assertTrue(bucket.allowRequest()); Thread.sleep(2000); assertTrue(bucket.allowRequest()); assertTrue(bucket.allowRequest()); } }