// Copyright (C) 2011 - Will Glozer. All rights reserved.
package com.lambdaworks.redis;
import org.junit.Test;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.junit.Assert.*;
public class ServerCommandTest extends AbstractCommandTest {
@Test
public void bgrewriteaof() throws Exception {
String msg = "Background append only file rewriting started";
assertEquals(msg, redis.bgrewriteaof());
}
@Test
public void bgsave() throws Exception {
while (redis.info().contains("aof_rewrite_in_progress:1")) {
Thread.sleep(100);
}
String msg = "Background saving started";
assertEquals(msg, redis.bgsave());
}
@Test
public void clientGetSetname() throws Exception {
assertNull(redis.clientGetname());
assertEquals("OK", redis.clientSetname("test"));
assertEquals("test", redis.clientGetname());
assertEquals("OK", redis.clientSetname(""));
assertNull(redis.clientGetname());
}
@Test
public void clientKill() throws Exception {
Pattern p = Pattern.compile("addr=(\\S+)");
Matcher m = p.matcher(redis.clientList());
assertTrue(m.lookingAt());
assertEquals("OK", redis.clientKill(m.group(1)));
}
@Test
public void clientList() throws Exception {
assertTrue(redis.clientList().contains("addr="));
}
@Test
public void configGet() throws Exception {
assertEquals(list("maxmemory", "0"), redis.configGet("maxmemory"));
}
@Test
public void configResetstat() throws Exception {
redis.get(key);
redis.get(key);
assertEquals("OK", redis.configResetstat());
assertTrue(redis.info().contains("keyspace_misses:0"));
}
@Test
public void configSet() throws Exception {
String maxmemory = redis.configGet("maxmemory").get(1);
assertEquals("OK", redis.configSet("maxmemory", "1024"));
assertEquals("1024", redis.configGet("maxmemory").get(1));
redis.configSet("maxmemory", maxmemory);
}
@Test
public void dbsize() throws Exception {
assertEquals(0, (long) redis.dbsize());
redis.set(key, value);
assertEquals(1, (long) redis.dbsize());
}
@Test
public void debugObject() throws Exception {
redis.set(key, value);
redis.debugObject(key);
}
@Test
public void flushall() throws Exception {
redis.set(key, value);
assertEquals("OK", redis.flushall());
assertNull(redis.get(key));
}
@Test
public void flushdb() throws Exception {
redis.set(key, value);
redis.select(1);
redis.set(key, value + "X");
assertEquals("OK", redis.flushdb());
assertNull(redis.get(key));
redis.select(0);
assertEquals(value, redis.get(key));
}
@Test
public void info() throws Exception {
assertTrue(redis.info().contains("redis_version"));
assertTrue(redis.info("server").contains("redis_version"));
}
@Test
public void lastsave() throws Exception {
Date start = new Date(System.currentTimeMillis() / 1000);
assertTrue(start.compareTo(redis.lastsave()) <= 0);
}
@Test
public void save() throws Exception {
assertEquals("OK", redis.save());
}
@Test
public void slaveof() throws Exception {
assertEquals("OK", redis.slaveof("localhost", 0));
redis.slaveofNoOne();
}
@Test
public void slaveofNoOne() throws Exception {
assertEquals("OK", redis.slaveofNoOne());
}
@Test
@SuppressWarnings("unchecked")
public void slowlog() throws Exception {
long start = System.currentTimeMillis() / 1000;
assertEquals("OK", redis.configSet("slowlog-log-slower-than", "1"));
assertEquals("OK", redis.slowlogReset());
redis.set(key, value);
List<Object> log = redis.slowlogGet();
assertEquals(2, log.size());
List<Object> entry = (List<Object>) log.get(0);
assertEquals(4, entry.size());
assertTrue(entry.get(0) instanceof Long);
assertTrue((Long) entry.get(1) >= start);
assertTrue(entry.get(2) instanceof Long);
assertEquals(list("SET", key, value), entry.get(3));
entry = (List<Object>) log.get(1);
assertEquals(4, entry.size());
assertTrue(entry.get(0) instanceof Long);
assertTrue((Long) entry.get(1) >= start);
assertTrue(entry.get(2) instanceof Long);
assertEquals(list("SLOWLOG", "RESET"), entry.get(3));
assertEquals(1, redis.slowlogGet(1).size());
assertEquals(4, (long) redis.slowlogLen());
redis.configSet("slowlog-log-slower-than", "0");
}
@Test
public void sync() throws Exception {
assertTrue(redis.sync().startsWith("REDIS"));
}
}