From 23e50a363e621ef9b5996233c53445e9f8ed3e13 Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Wed, 30 Jan 2013 15:24:53 -0300 Subject: [PATCH] Change the way we test sentinel commands so it is automatic --- Makefile | 16 ++++++++++ .../jedis/tests/JedisSentinelTest.java | 31 +++++++++++++++---- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 0e31379..00f29bf 100644 --- a/Makefile +++ b/Makefile @@ -12,15 +12,31 @@ requirepass foobared pidfile /tmp/redis2.pid endef + +define REDIS_SENTINEL1 +port 26379 +daemonize yes +sentinel monitor mymaster 127.0.0.1 6379 2 +sentinel auth-pass mymaster foobared +sentinel down-after-milliseconds mymaster 5000 +sentinel failover-timeout mymaster 900000 +sentinel can-failover mymaster yes +sentinel parallel-syncs mymaster 1 +pidfile /tmp/sentinel1.pid +endef + export REDIS1_CONF export REDIS2_CONF +export REDIS_SENTINEL1 test: echo "$$REDIS1_CONF" | redis-server - echo "$$REDIS2_CONF" | redis-server - + echo "$$REDIS_SENTINEL1" | redis-sentinel - mvn clean compile test kill `cat /tmp/redis1.pid` kill `cat /tmp/redis2.pid` + kill `cat /tmp/sentinel1.pid` .PHONY: test diff --git a/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java b/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java index 0bca18c..7cd8188 100644 --- a/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java +++ b/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java @@ -1,22 +1,40 @@ package redis.clients.jedis.tests; -import static junit.framework.Assert.*; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; import java.util.List; import java.util.Map; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; public class JedisSentinelTest { - private static final String MASTER_NAME = "mymaster"; - /** - * Based on redis/master/slave/sentinel configs from - * https://github.com/noise/redis-sentinel-tests. - */ + @Before + public void setup() throws InterruptedException { + Jedis j = new Jedis("localhost", 6380); + j.auth("foobared"); + j.configSet("masterauth", "foobared"); + j.slaveof("localhost", 6379); + // TODO: The sleep is to give time to the slave to synchronize with the + // master and also let know the sentinels about this new topology. We + // should find a better way to do this. + Thread.sleep(5000); + } + + @After + public void clear() { + Jedis j = new Jedis("localhost", 6380); + j.auth("foobared"); + j.slaveofNoOne(); + } + @Test public void sentinel() { Jedis j = new Jedis("localhost", 26379); @@ -45,5 +63,6 @@ public class JedisSentinelTest { // DO NOT RE-RUN TEST TOO FAST, RESET TAKES SOME TIME TO... RESET assertEquals(Long.valueOf(1), j.sentinelReset(masterName)); assertEquals(Long.valueOf(0), j.sentinelReset("woof" + masterName)); + } }