-
Notifications
You must be signed in to change notification settings - Fork 278
/
RedissonBasedProxyManagerTest.java
74 lines (60 loc) · 2.5 KB
/
RedissonBasedProxyManagerTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package io.github.bucket4j.redis.redisson.cas;
import io.github.bucket4j.distributed.proxy.ProxyManager;
import io.github.bucket4j.distributed.proxy.ClientSideConfig;
import io.github.bucket4j.tck.AbstractDistributedBucketTest;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.redisson.command.CommandExecutor;
import org.redisson.command.CommandSyncService;
import org.redisson.config.Config;
import org.redisson.config.ConfigSupport;
import org.redisson.connection.ConnectionManager;
import org.testcontainers.containers.GenericContainer;
import java.time.Duration;
import java.util.UUID;
public class RedissonBasedProxyManagerTest extends AbstractDistributedBucketTest<String> {
private static GenericContainer container;
private static ConnectionManager connectionManager;
private static CommandExecutor commandExecutor;
@BeforeClass
public static void setup() {
container = startRedisContainer();
connectionManager = createRedissonClient(container);
commandExecutor = createRedissonExecutor(connectionManager);
}
@AfterClass
public static void shutdown() {
if (connectionManager != null) {
connectionManager.shutdown();
}
if (container != null) {
container.close();
}
}
private static ConnectionManager createRedissonClient(GenericContainer container) {
String redisAddress = container.getContainerIpAddress();
Integer redisPort = container.getMappedPort(6379);
String redisUrl = "redis://" + redisAddress + ":" + redisPort;
Config config = new Config();
config.useSingleServer().setAddress(redisUrl);
ConnectionManager connectionManager = ConfigSupport.createConnectionManager(config);
return connectionManager;
}
private static CommandExecutor createRedissonExecutor(ConnectionManager connectionManager) {
return new CommandSyncService(connectionManager, null);
}
private static GenericContainer startRedisContainer() {
GenericContainer genericContainer = new GenericContainer("redis:4.0.11")
.withExposedPorts(6379);
genericContainer.start();
return genericContainer;
}
@Override
protected ProxyManager<String> getProxyManager() {
return new RedissonBasedProxyManager(commandExecutor, ClientSideConfig.getDefault(), Duration.ofMinutes(10));
}
@Override
protected String generateRandomKey() {
return UUID.randomUUID().toString();
}
}