public InMemorySlidingWindowRequestRateLimiter(Set<RequestLimitRule> rules) { this(rules, new SystemTimeSupplier()); }
public RedisSlidingWindowRequestRateLimiter(RedisScriptingReactiveCommands<String, String> redisScriptingReactiveCommands, RedisKeyReactiveCommands<String, String> redisKeyCommands, Set<RequestLimitRule> rules) { this(redisScriptingReactiveCommands, redisKeyCommands, rules, new SystemTimeSupplier()); }
public HazelcastSlidingWindowRequestRateLimiter(HazelcastInstance hz, Set<RequestLimitRule> rules) { this(hz, rules, new SystemTimeSupplier()); }
public InMemorySlidingWindowRequestRateLimiter(RequestLimitRule rule) { this(Collections.singleton(rule), new SystemTimeSupplier()); }
@Test void shouldReloadMissingScript() { ImmutableSet<RequestLimitRule> rules = ImmutableSet.of(RequestLimitRule.of(Duration.ofSeconds(60), 1)); ReactiveRequestRateLimiter rateLimiter = getRateLimiter(rules, new SystemTimeSupplier()); rateLimiter.overLimitWhenIncrementedReactive(UUID.randomUUID().toString()).block(Duration.ofSeconds(5)); getRedisScriptingReactiveCommands().scriptFlush().block(); rateLimiter.overLimitWhenIncrementedReactive(UUID.randomUUID().toString()).block(Duration.ofSeconds(5)); } }
@Test void shouldGetAsyncSystemCurrentTime() throws Exception { Long time = new SystemTimeSupplier().getAsync().toCompletableFuture().get(); assertThat(time).isCloseTo(System.currentTimeMillis() / 1000L, Offset.offset(2L)); }
@Test void shouldGetReactiveSystemCurrentTime() { Long time = new SystemTimeSupplier().getReactive().block(); assertThat(time).isCloseTo(System.currentTimeMillis() / 1000L, Offset.offset(2L)); } }
@Test void shouldGetSystemCurrentTime() { Long time = new SystemTimeSupplier().get(); assertThat(time).isCloseTo(System.currentTimeMillis() / 1000L, Offset.offset(2L)); }