jedis monitor should set client socket timeout to infinite

This commit is contained in:
Jonathan Leibiusky
2011-05-02 01:54:52 -03:00
parent e5a3833d4a
commit b13c964500
2 changed files with 26 additions and 3 deletions

View File

@@ -5,6 +5,7 @@ public abstract class JedisMonitor {
public void proceed(Client client) {
this.client = client;
this.client.setTimeoutInfinite();
do {
String command = client.getBulkReply();
onCommand(command);

View File

@@ -5,6 +5,7 @@ import java.util.List;
import org.junit.Test;
import redis.clients.jedis.DebugParams;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisMonitor;
import redis.clients.jedis.exceptions.JedisDataException;
@@ -56,11 +57,32 @@ public class ControlCommandsTest extends JedisCommandTestBase {
@Test
public void monitor() {
new Thread(new Runnable() {
public void run() {
Jedis j = new Jedis("localhost");
j.auth("foobared");
for (int i = 0; i < 4; i++) {
j.incr("foobared");
}
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
}
j.incr("foobared");
j.disconnect();
}
}).start();
jedis.monitor(new JedisMonitor() {
@Override
private int count = 0;
public void onCommand(String command) {
assertTrue(command.contains("OK"));
client.disconnect();
if (command.contains("INCR")) {
count++;
}
if (count == 5) {
client.disconnect();
}
}
});
}