refactoring

pull/5884/head
Nikita Koksharov 10 months ago
parent e7580b62d9
commit 27a03c8d31

@ -505,10 +505,7 @@ public class RedisDockerTest {
return false; return false;
} }
String r = execute(node, "redis-cli", "info", "replication"); String r = execute(node, "redis-cli", "info", "replication");
if (r.contains("role:slave")) { return r.contains("role:slave");
return true;
}
return false;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
@ -518,10 +515,7 @@ public class RedisDockerTest {
return false; return false;
} }
String r = execute(node, "redis-cli", "info", "replication"); String r = execute(node, "redis-cli", "info", "replication");
if (r.contains("role:master")) { return r.contains("role:master");
return true;
}
return false;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }

@ -20,6 +20,7 @@ import org.redisson.client.codec.StringCodec;
import org.redisson.config.Config; import org.redisson.config.Config;
import org.redisson.config.SubscriptionMode; import org.redisson.config.SubscriptionMode;
import org.redisson.connection.balancer.RandomLoadBalancer; import org.redisson.connection.balancer.RandomLoadBalancer;
import org.testcontainers.containers.ContainerState;
import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.GenericContainer;
import java.io.Serializable; import java.io.Serializable;
@ -101,7 +102,6 @@ public class RedissonTopicPatternTest extends RedisDockerTest {
AtomicInteger counter = new AtomicInteger(); AtomicInteger counter = new AtomicInteger();
PatternMessageListener<String> listener = (pattern, channel, msg) -> { PatternMessageListener<String> listener = (pattern, channel, msg) -> {
System.out.println("mes " + channel + " counter " + counter.get());
counter.incrementAndGet(); counter.incrementAndGet();
}; };
topic.addListener(String.class, listener); topic.addListener(String.class, listener);
@ -349,96 +349,74 @@ public class RedissonTopicPatternTest extends RedisDockerTest {
t.removeAllListeners(); t.removeAllListeners();
} }
@Test // @Test
public void testReattachInClusterSlave() throws Exception { public void testReattachInClusterSlave() {
testReattachInCluster(SubscriptionMode.SLAVE); testReattachInCluster(SubscriptionMode.SLAVE);
} }
@Test @Test
public void testReattachInClusterMaster() throws Exception { public void testReattachInClusterMaster() {
testReattachInCluster(SubscriptionMode.MASTER); testReattachInCluster(SubscriptionMode.MASTER);
} }
private void testReattachInCluster(SubscriptionMode subscriptionMode) throws Exception { private void testReattachInCluster(SubscriptionMode subscriptionMode) {
RedisRunner master1 = new RedisRunner().randomPort().randomDir().nosave() withNewCluster((nds, instance) -> {
.notifyKeyspaceEvents( Config config = instance.getConfig();
RedisRunner.KEYSPACE_EVENTS_OPTIONS.K, config.useClusterServers()
RedisRunner.KEYSPACE_EVENTS_OPTIONS.g, .setSubscriptionMode(subscriptionMode);
RedisRunner.KEYSPACE_EVENTS_OPTIONS.E, RedissonClient redisson = Redisson.create(config);
RedisRunner.KEYSPACE_EVENTS_OPTIONS.$);
RedisRunner master2 = new RedisRunner().randomPort().randomDir().nosave()
.notifyKeyspaceEvents(
RedisRunner.KEYSPACE_EVENTS_OPTIONS.K,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.g,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.E,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.$);
RedisRunner master3 = new RedisRunner().randomPort().randomDir().nosave()
.notifyKeyspaceEvents(
RedisRunner.KEYSPACE_EVENTS_OPTIONS.K,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.g,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.E,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.$);
RedisRunner slave1 = new RedisRunner().randomPort().randomDir().nosave()
.notifyKeyspaceEvents(
RedisRunner.KEYSPACE_EVENTS_OPTIONS.K,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.g,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.E,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.$);
RedisRunner slave2 = new RedisRunner().randomPort().randomDir().nosave()
.notifyKeyspaceEvents(
RedisRunner.KEYSPACE_EVENTS_OPTIONS.K,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.g,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.E,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.$);
RedisRunner slave3 = new RedisRunner().randomPort().randomDir().nosave()
.notifyKeyspaceEvents(
RedisRunner.KEYSPACE_EVENTS_OPTIONS.K,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.g,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.E,
RedisRunner.KEYSPACE_EVENTS_OPTIONS.$);
ClusterRunner clusterRunner = new ClusterRunner()
.addNode(master1, slave1)
.addNode(master2, slave2)
.addNode(master3, slave3);
ClusterRunner.ClusterProcesses process = clusterRunner.run();
Thread.sleep(7000);
Config config = new Config();
config.useClusterServers()
.setSubscriptionMode(subscriptionMode)
.setLoadBalancer(new RandomLoadBalancer())
.addNodeAddress(process.getNodes().stream().findAny().get().getRedisServerAddressAndPort());
RedissonClient redisson = Redisson.create(config);
AtomicInteger executions = new AtomicInteger(); RedisCluster nodes = redisson.getRedisNodes(RedisNodes.CLUSTER);
for (RedisClusterSlave slave : nodes.getSlaves()) {
slave.setConfig("notify-keyspace-events", "KgE$");
}
for (RedisClusterMaster master : nodes.getMasters()) {
master.setConfig("notify-keyspace-events", "KgE$");
}
RPatternTopic topic = redisson.getPatternTopic("__keyevent@*:del", StringCodec.INSTANCE); AtomicInteger executions = new AtomicInteger();
topic.addListener(String.class, new PatternMessageListener<String>() {
@Override RPatternTopic topic = redisson.getPatternTopic("__keyevent@*:del", StringCodec.INSTANCE);
public void onMessage(CharSequence pattern, CharSequence channel, String msg) { topic.addListener(String.class, new PatternMessageListener<String>() {
executions.incrementAndGet(); @Override
public void onMessage(CharSequence pattern, CharSequence channel, String msg) {
executions.incrementAndGet();
}
});
List<ContainerState> masters = getMasterNodes(nds);
stop(masters.get(0));
try {
Thread.sleep(40000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
} }
});
process.getNodes().stream().filter(x -> master1.getPort() == x.getRedisServerPort()) nodes = redisson.getRedisNodes(RedisNodes.CLUSTER);
.forEach(x -> { for (RedisClusterSlave slave : nodes.getSlaves()) {
x.stop(); slave.setConfig("notify-keyspace-events", "KgE$");
}); }
for (RedisClusterMaster master : nodes.getMasters()) {
master.setConfig("notify-keyspace-events", "KgE$");
}
Thread.sleep(40000); for (int i = 0; i < 100; i++) {
RBucket<Object> b = redisson.getBucket("test" + i);
b.set(i);
b.delete();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
assertThat(executions.get()).isEqualTo(100);
redisson.shutdown();
});
for (int i = 0; i < 100; i++) {
RBucket<Object> b = redisson.getBucket("test" + i);
b.set(i);
b.delete();
}
Thread.sleep(100);
assertThat(executions.get()).isEqualTo(100);
redisson.shutdown();
} }
@Test @Test

Loading…
Cancel
Save