From b13c9645001f2ba179aea4e64a26f7ece005ef95 Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Mon, 2 May 2011 01:54:52 -0300 Subject: [PATCH] jedis monitor should set client socket timeout to infinite --- .../redis/clients/jedis/JedisMonitor.java | 1 + .../tests/commands/ControlCommandsTest.java | 28 +++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/redis/clients/jedis/JedisMonitor.java b/src/main/java/redis/clients/jedis/JedisMonitor.java index bd2654b..dff2672 100644 --- a/src/main/java/redis/clients/jedis/JedisMonitor.java +++ b/src/main/java/redis/clients/jedis/JedisMonitor.java @@ -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); diff --git a/src/test/java/redis/clients/jedis/tests/commands/ControlCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ControlCommandsTest.java index 423a146..c6b6698 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ControlCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ControlCommandsTest.java @@ -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(); + } } }); }