159 lines
4.9 KiB
Java
159 lines
4.9 KiB
Java
package redis.embedded;
|
|
|
|
import com.google.common.io.Resources;
|
|
import org.junit.Test;
|
|
import redis.clients.jedis.Jedis;
|
|
import redis.clients.jedis.JedisPool;
|
|
import redis.embedded.exceptions.RedisBuildingException;
|
|
import redis.embedded.util.Architecture;
|
|
import redis.embedded.util.OS;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.IOException;
|
|
import java.io.InputStreamReader;
|
|
|
|
import static org.junit.Assert.*;
|
|
|
|
public class RedisServerTest {
|
|
|
|
private RedisServer redisServer;
|
|
|
|
@Test(timeout = 1500L)
|
|
public void testSimpleRun() throws Exception {
|
|
redisServer = new RedisServer(6379);
|
|
redisServer.start();
|
|
Thread.sleep(1000L);
|
|
redisServer.stop();
|
|
}
|
|
|
|
@Test(expected = RuntimeException.class)
|
|
public void shouldNotAllowMultipleRunsWithoutStop() throws Exception {
|
|
try {
|
|
redisServer = new RedisServer(6379);
|
|
redisServer.start();
|
|
redisServer.start();
|
|
} finally {
|
|
redisServer.stop();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void shouldAllowSubsequentRuns() throws Exception {
|
|
redisServer = new RedisServer(6379);
|
|
redisServer.start();
|
|
redisServer.stop();
|
|
|
|
redisServer.start();
|
|
redisServer.stop();
|
|
|
|
redisServer.start();
|
|
redisServer.stop();
|
|
}
|
|
|
|
@Test
|
|
public void testSimpleOperationsAfterRun() throws Exception {
|
|
redisServer = new RedisServer(6379);
|
|
redisServer.start();
|
|
|
|
JedisPool pool = null;
|
|
Jedis jedis = null;
|
|
try {
|
|
pool = new JedisPool("localhost", 6379);
|
|
jedis = pool.getResource();
|
|
jedis.mset("abc", "1", "def", "2");
|
|
|
|
assertEquals("1", jedis.mget("abc").get(0));
|
|
assertEquals("2", jedis.mget("def").get(0));
|
|
assertNull(jedis.mget("xyz").get(0));
|
|
} finally {
|
|
if (jedis != null)
|
|
pool.returnResource(jedis);
|
|
redisServer.stop();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void shouldIndicateInactiveBeforeStart() throws Exception {
|
|
redisServer = new RedisServer(6379);
|
|
assertFalse(redisServer.isActive());
|
|
}
|
|
|
|
@Test
|
|
public void shouldIndicateActiveAfterStart() throws Exception {
|
|
redisServer = new RedisServer(6379);
|
|
redisServer.start();
|
|
assertTrue(redisServer.isActive());
|
|
redisServer.stop();
|
|
}
|
|
|
|
@Test
|
|
public void shouldIndicateInactiveAfterStop() throws Exception {
|
|
redisServer = new RedisServer(6379);
|
|
redisServer.start();
|
|
redisServer.stop();
|
|
assertFalse(redisServer.isActive());
|
|
}
|
|
|
|
@Test
|
|
public void shouldOverrideDefaultExecutable() throws Exception {
|
|
RedisExecProvider customProvider = RedisExecProvider.defaultProvider()
|
|
.override(OS.UNIX, Architecture.x86, Resources.getResource("redis-server-" + RedisExecProvider.redisVersion + "-linux-386").getFile())
|
|
.override(OS.UNIX, Architecture.x86_64, Resources.getResource("redis-server-" + RedisExecProvider.redisVersion + "-linux-amd64").getFile())
|
|
.override(OS.UNIX, Architecture.arm64, Resources.getResource("redis-server-" + RedisExecProvider.redisVersion + "-linux-arm64").getFile())
|
|
.override(OS.MAC_OS_X, Architecture.x86_64, Resources.getResource("redis-server-" + RedisExecProvider.redisVersion + "-darwin-amd64").getFile())
|
|
.override(OS.MAC_OS_X, Architecture.arm64, Resources.getResource("redis-server-" + RedisExecProvider.redisVersion + "-darwin-arm64").getFile());
|
|
|
|
redisServer = new RedisServerBuilder()
|
|
.redisExecProvider(customProvider)
|
|
.build();
|
|
}
|
|
|
|
@Test(expected = RedisBuildingException.class)
|
|
public void shouldFailWhenBadExecutableGiven() throws Exception {
|
|
RedisExecProvider buggyProvider = RedisExecProvider.defaultProvider()
|
|
.override(OS.UNIX, "some")
|
|
.override(OS.MAC_OS_X, "some");
|
|
|
|
redisServer = new RedisServerBuilder()
|
|
.redisExecProvider(buggyProvider)
|
|
.build();
|
|
}
|
|
|
|
@Test
|
|
public void testAwaitRedisServerReady() throws Exception {
|
|
String readyPattern = RedisServer.builder().build().redisReadyPattern();
|
|
|
|
assertReadyPattern(new BufferedReader(
|
|
new InputStreamReader(getClass()
|
|
.getClassLoader()
|
|
.getResourceAsStream("redis-2.x-standalone-startup-output.txt"))),
|
|
readyPattern);
|
|
|
|
assertReadyPattern(new BufferedReader(
|
|
new InputStreamReader(getClass()
|
|
.getClassLoader()
|
|
.getResourceAsStream("redis-3.x-standalone-startup-output.txt"))),
|
|
readyPattern);
|
|
|
|
assertReadyPattern(new BufferedReader(
|
|
new InputStreamReader(getClass()
|
|
.getClassLoader()
|
|
.getResourceAsStream("redis-4.x-standalone-startup-output.txt"))),
|
|
readyPattern);
|
|
|
|
assertReadyPattern(new BufferedReader(
|
|
new InputStreamReader(getClass()
|
|
.getClassLoader()
|
|
.getResourceAsStream("redis-6.x-standalone-startup-output.txt"))),
|
|
readyPattern);
|
|
}
|
|
|
|
private void assertReadyPattern(BufferedReader reader, String readyPattern) throws IOException {
|
|
String outputLine;
|
|
do {
|
|
outputLine = reader.readLine();
|
|
assertNotNull(outputLine);
|
|
} while (!outputLine.matches(readyPattern));
|
|
}
|
|
}
|