Skip to content

Commit

Permalink
testReadMasterSlave added
Browse files Browse the repository at this point in the history
  • Loading branch information
Nikita Koksharov committed Apr 9, 2024
1 parent 1d8278a commit 2d53ba1
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 4 deletions.
8 changes: 8 additions & 0 deletions redisson/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,14 @@
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.github.hakky54</groupId>
<artifactId>logcaptor</artifactId>
<version>2.9.2</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public CompletableFuture<T> get(RedisCommand<?> command, boolean trackChanges) {
entriesCopy.removeIf(n -> n.isFreezed() || !isHealthy(n));
if (!entriesCopy.isEmpty()) {
ClientConnectionsEntry entry = config.getLoadBalancer().getEntry(entriesCopy, command);
log.debug("Entry {} selected as connection source", entry);
return acquireConnection(command, entry, trackChanges);
}

Expand Down
33 changes: 29 additions & 4 deletions redisson/src/test/java/org/redisson/RedissonTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import io.netty.buffer.ByteBufAllocator;
import io.netty.util.CharsetUtil;
import net.bytebuddy.utility.RandomString;
import nl.altindag.log.LogCaptor;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
Expand All @@ -22,13 +23,11 @@
import org.redisson.client.protocol.Encoder;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.codec.SerializationCodec;
import org.redisson.config.Config;
import org.redisson.config.ConfigSupport;
import org.redisson.config.Credentials;
import org.redisson.config.CredentialsResolver;
import org.redisson.config.*;
import org.redisson.connection.CRC16;
import org.redisson.connection.ConnectionListener;
import org.redisson.connection.MasterSlaveConnectionManager;
import org.redisson.connection.pool.SlaveConnectionPool;
import org.redisson.misc.RedisURI;
import org.testcontainers.containers.ContainerState;
import org.testcontainers.containers.FixedHostPortGenericContainer;
Expand Down Expand Up @@ -670,6 +669,32 @@ public void testEvalCache() {
});
}

@Test
public void testReadMasterSlave() {
testInCluster(rc -> {
Config c = rc.getConfig();
c.useClusterServers().setReadMode(ReadMode.MASTER_SLAVE);

LogCaptor logCaptor = LogCaptor.forClass(SlaveConnectionPool.class);
logCaptor.setLogLevelToDebug();

RedissonClient rr = Redisson.create(c);

for (int i = 0; i < 100; i++) {
rr.getBucket("" + i).get();
}

long slaveConnections = logCaptor.getDebugLogs().stream().filter(s -> s.contains("nodeType=SLAVE")).count();
long masterConnections = logCaptor.getDebugLogs().stream().filter(s -> s.contains("nodeType=MASTER")).count();

assertThat(masterConnections).isEqualTo(50);
assertThat(slaveConnections).isEqualTo(50);

logCaptor.close();
rr.shutdown();
});
}

@Test
public void testMovedRedirectInCluster() {
withNewCluster((nodes, redissonClient) -> {
Expand Down

0 comments on commit 2d53ba1

Please sign in to comment.