Skip to content

Commit e2b73ce

Browse files
authored
[automatic failover] Add rate limiter to test MultiThreadedFakeApp (#4248)
* Add option for rate limiter to MultiThreadedFakeApp * retrigger checks
1 parent d64ebaa commit e2b73ce

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/test/java/redis/clients/jedis/scenario/MultiThreadedFakeApp.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package redis.clients.jedis.scenario;
22

3+
import io.github.resilience4j.ratelimiter.RateLimiter;
4+
import io.github.resilience4j.ratelimiter.RateLimiterConfig;
5+
import io.github.resilience4j.ratelimiter.RateLimiterRegistry;
36
import redis.clients.jedis.UnifiedJedis;
47
import redis.clients.jedis.exceptions.JedisConnectionException;
58

@@ -11,10 +14,21 @@
1114
public class MultiThreadedFakeApp extends FakeApp {
1215

1316
private final ExecutorService executorService;
17+
private final RateLimiter rateLimiter;
1418

1519
public MultiThreadedFakeApp(UnifiedJedis client, FakeApp.ExecutedAction action, int numThreads) {
20+
this(client, action, numThreads, null);
21+
}
22+
23+
public MultiThreadedFakeApp(UnifiedJedis client, FakeApp.ExecutedAction action, int numThreads, RateLimiterConfig config) {
1624
super(client, action);
1725
this.executorService = Executors.newFixedThreadPool(numThreads);
26+
27+
if (config != null) {
28+
this.rateLimiter = RateLimiterRegistry.of(config).rateLimiter("fakeAppLimiter");
29+
} else {
30+
this.rateLimiter = null;
31+
}
1832
}
1933

2034
@Override
@@ -28,6 +42,9 @@ public void run() {
2842
Duration.ofSeconds(checkEachSeconds), Duration.ofSeconds(keepExecutingForSeconds),
2943
Duration.ofSeconds(timeoutSeconds))) {
3044
try {
45+
if (rateLimiter != null) {
46+
RateLimiter.waitForPermission(rateLimiter);
47+
}
3148
executorService.submit(() -> action.run(client));
3249
} catch (JedisConnectionException e) {
3350
log.error("Error executing action", e);

0 commit comments

Comments
 (0)