package com.lambdaworks.redis.cluster.commands;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.LinkedHashMap;
import java.util.Map;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.lambdaworks.redis.FastShutdown;
import com.lambdaworks.redis.ListStreamingAdapter;
import com.lambdaworks.redis.RedisURI;
import com.lambdaworks.redis.TestSettings;
import com.lambdaworks.redis.api.sync.RedisCommands;
import com.lambdaworks.redis.cluster.ClusterTestUtil;
import com.lambdaworks.redis.cluster.RedisClusterClient;
import com.lambdaworks.redis.cluster.api.StatefulRedisClusterConnection;
import com.lambdaworks.redis.commands.StringCommandTest;
import com.lambdaworks.redis.internal.LettuceSets;
/**
* @author Mark Paluch
*/
public class StringClusterCommandTest extends StringCommandTest {
private static RedisClusterClient redisClusterClient;
private StatefulRedisClusterConnection<String, String> clusterConnection;
@BeforeClass
public static void setupClient() {
redisClusterClient = new RedisClusterClient(RedisURI.Builder.redis(TestSettings.host(), TestSettings.port(900)).build());
}
@AfterClass
public static void closeClient() {
FastShutdown.shutdown(redisClusterClient);
}
@Before
public void openConnection() throws Exception {
redis = connect();
ClusterTestUtil.flushDatabaseOfAllNodes(clusterConnection);
}
@Override
@SuppressWarnings("unchecked")
protected RedisCommands<String, String> connect() {
clusterConnection = redisClusterClient.connectCluster().getStatefulConnection();
return ClusterTestUtil.redisCommandsOverCluster(clusterConnection);
}
@Test
public void msetnx() throws Exception {
redis.set("one", "1");
Map<String, String> map = new LinkedHashMap<>();
map.put("one", "1");
map.put("two", "2");
assertThat(redis.msetnx(map)).isFalse();
redis.del("one");
redis.del("two"); // probably set on a different node
assertThat(redis.msetnx(map)).isTrue();
assertThat(redis.get("two")).isEqualTo("2");
}
@Test
public void mgetStreaming() throws Exception {
setupMget();
ListStreamingAdapter<String> streamingAdapter = new ListStreamingAdapter<String>();
Long count = redis.mget(streamingAdapter, "one", "two");
assertThat(LettuceSets.newHashSet(streamingAdapter.getList())).isEqualTo(LettuceSets.newHashSet(list("1", "2")));
assertThat(count.intValue()).isEqualTo(2);
}
}