From 9dc89626acd935af65460c0ebd071c245e68328a Mon Sep 17 00:00:00 2001 From: Ivo Ramirez Date: Thu, 15 Dec 2011 15:51:45 +0100 Subject: [PATCH 1/8] Eval and Evalsha is now supported Conflicts: src/main/java/redis/clients/jedis/Client.java src/main/java/redis/clients/jedis/Jedis.java --- .../redis/clients/jedis/BinaryClient.java | 26 +++++++ .../java/redis/clients/jedis/BinaryJedis.java | 22 ++++++ .../clients/jedis/BinaryJedisCommands.java | 1 + .../clients/jedis/BinaryShardedJedis.java | 1 + src/main/java/redis/clients/jedis/Client.java | 26 +++++++ .../java/redis/clients/jedis/Connection.java | 2 +- src/main/java/redis/clients/jedis/Jedis.java | 55 +++++++++++++- .../java/redis/clients/jedis/Protocol.java | 2 +- .../tests/commands/EvalCommandsTest.java | 76 +++++++++++++++++++ 9 files changed, 207 insertions(+), 4 deletions(-) create mode 100644 src/test/java/redis/clients/jedis/tests/commands/EvalCommandsTest.java diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index 812defe..9292b21 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -718,4 +718,30 @@ public class BinaryClient extends Connection { db = 0; super.disconnect(); } + + private void sendEvalCommand(Command command, byte[] script, List keys, List args){ + int keysSize = keys.size(); + int argsSize = args.size(); + + final byte[][] allArgs = new byte[keysSize + argsSize + 2][]; + + allArgs[0] = script; + allArgs[1] =toByteArray(keysSize); + + for(int i=0;i keys, List args){ + sendEvalCommand(EVAL, script, keys, args ); + } + + public void evalsha(byte[] sha1, List keys, List args){ + sendEvalCommand(EVALSHA, sha1, keys, args); + } } diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 7b4cd30..de27283 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -3006,4 +3006,26 @@ public class BinaryJedis implements BinaryJedisCommands { public Long getDB() { return client.getDB(); } + + /** + * Evaluates scripts using the Lua interpreter built into Redis starting from version 2.6.0. + *

+ * + * @return Script result + */ + public Object eval(byte[] script, List keys, List args) { + client.setTimeoutInfinite(); + client.eval(script, keys, args); + return client.getOne(); + } + + /** + * Evaluates scripts using the Lua interpreter built into Redis starting from version 2.6.0. + *

+ * + * @return Script result + */ + public Object eval(byte[] script, List keys) { + return eval(script,keys, new ArrayList()); + } } diff --git a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java index ef8aebd..c8479df 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java +++ b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java @@ -154,4 +154,5 @@ public interface BinaryJedisCommands { Long zremrangeByScore(byte[] key, double start, double end); Long linsert(byte[] key, LIST_POSITION where, byte[] pivot, byte[] value); + } diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 9c1abd2..41306c9 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -5,6 +5,7 @@ import redis.clients.util.Hashing; import redis.clients.util.Sharded; import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index 1f493e0..c69f9a1 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -2,7 +2,9 @@ package redis.clients.jedis; import redis.clients.util.SafeEncoder; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -595,4 +597,28 @@ public class Client extends BinaryClient implements Commands { public void configGet(String pattern) { configGet(SafeEncoder.encode(pattern)); } + + public void eval(String script, List keys, String... args) { + List k = new ArrayList(); + for(String key:keys){ + k.add(SafeEncoder.encode(key)); + } + List a = new ArrayList(); + for(String arg:args){ + a.add(SafeEncoder.encode(arg)); + } + eval(SafeEncoder.encode(script),k,a); + } + + public void evalsha(String sha1, List keys, String... args) { + List k = new ArrayList(); + for(String key:keys){ + k.add(SafeEncoder.encode(key)); + } + List a = new ArrayList(); + for(String arg:args){ + a.add(SafeEncoder.encode(arg)); + } + evalsha(SafeEncoder.encode(sha1),k,a); + } } diff --git a/src/main/java/redis/clients/jedis/Connection.java b/src/main/java/redis/clients/jedis/Connection.java index 0ea973f..67a7dd6 100644 --- a/src/main/java/redis/clients/jedis/Connection.java +++ b/src/main/java/redis/clients/jedis/Connection.java @@ -82,7 +82,7 @@ public class Connection { pipelinedCommands++; return this; } - + protected Connection sendCommand(final Command cmd) { connect(); protocol.sendCommand(outputStream, cmd, new byte[0][]); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index c71d9aa..9281ff3 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -8,7 +8,10 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.hamcrest.core.IsInstanceOf; + import redis.clients.jedis.BinaryClient.LIST_POSITION; +import redis.clients.util.SafeEncoder; public class Jedis extends BinaryJedis implements JedisCommands { public Jedis(final String host) { @@ -2688,5 +2691,53 @@ public class Jedis extends BinaryJedis implements JedisCommands { public String configSet(final String parameter, final String value) { client.configSet(parameter, value); return client.getStatusCodeReply(); - } -} + } + + public Object eval(String script, String... keys) { + List s = new ArrayList(keys.length); + for(String key : keys) + s.add(key); + + return eval(script, s); + } + + public Object eval(String script, List keys, String... args) { + client.setTimeoutInfinite(); + client.eval(script, keys, args); + + return getEvalResult(); + } + + private Object getEvalResult(){ + Object result = client.getOne(); + + if(result instanceof byte[]) + return SafeEncoder.encode((byte[])result); + + if(result instanceof List) { + List list = (List)result; + List listResult = new ArrayList(list.size()); + for(Object bin: list) + listResult.add(SafeEncoder.encode((byte[])bin)); + + return listResult; + } + + return result; + } + + public Object evalsha(String sha1, String... keys) { + List s = new ArrayList(keys.length); + for(String key : keys) + s.add(key); + + return evalsha(sha1, s); + } + + public Object evalsha(String sha1, List keys, String... args) { + checkIsInMulti(); + client.evalsha(sha1, keys, args); + + return getEvalResult(); + } +} \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/Protocol.java b/src/main/java/redis/clients/jedis/Protocol.java index a4f1c7e..dc43e16 100644 --- a/src/main/java/redis/clients/jedis/Protocol.java +++ b/src/main/java/redis/clients/jedis/Protocol.java @@ -140,7 +140,7 @@ public final class Protocol { } public static enum Command { - PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, RPUSH, LPUSH, LLEN, LRANGE, LTRIM, LINDEX, LSET, LREM, LPOP, RPOP, RPOPLPUSH, SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SISMEMBER, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SRANDMEMBER, ZADD, ZRANGE, ZREM, ZINCRBY, ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, SETRANGE, GETRANGE; + PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, RPUSH, LPUSH, LLEN, LRANGE, LTRIM, LINDEX, LSET, LREM, LPOP, RPOP, RPOPLPUSH, SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SISMEMBER, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SRANDMEMBER, ZADD, ZRANGE, ZREM, ZINCRBY, ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, SETRANGE, GETRANGE, EVAL, EVALSHA; public final byte[] raw; diff --git a/src/test/java/redis/clients/jedis/tests/commands/EvalCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/EvalCommandsTest.java new file mode 100644 index 0000000..adcccf9 --- /dev/null +++ b/src/test/java/redis/clients/jedis/tests/commands/EvalCommandsTest.java @@ -0,0 +1,76 @@ +package redis.clients.jedis.tests.commands; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +import redis.clients.jedis.exceptions.JedisDataException; +import redis.clients.jedis.exceptions.JedisException; + +public class EvalCommandsTest extends JedisCommandTestBase { + + @SuppressWarnings("unchecked") + @Test + public void evalMultiBulk() { + String script = "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"; + List keys = new ArrayList(); + keys.add("key1"); + keys.add("key2"); + + List response = (List)jedis.eval(script, keys, "first", "second" ); + + assertEquals(4, response.size()); + assertEquals("key1", response.get(0)); + assertEquals("key2", response.get(1)); + assertEquals("first", response.get(2)); + assertEquals("second", response.get(3)); + } + + @Test + public void evalBulk() { + String script = "return KEYS[1]"; + List keys = new ArrayList(); + keys.add("key1"); + + String response = (String)jedis.eval(script, keys); + + assertEquals("key1", response); + } + + @Test + public void evalInt() { + String script = "return 2"; + List keys = new ArrayList(); + keys.add("key1"); + + Long response = (Long)jedis.eval(script, keys); + + assertEquals(new Long(2), response); + } + + @Test + public void evalNoArgs() { + String script = "return KEYS[1]"; + + String response = (String)jedis.eval(script, "key1"); + + assertEquals("key1", response); + } + + @SuppressWarnings("unchecked") + @Test + public void evalsha() { + jedis.set("foo", "bar"); + jedis.eval("return redis.call('get','foo')"); + String result = (String)jedis.evalsha("6b1bf486c81ceb7edf3c093f4c48582e38c0e791"); + + assertEquals("bar", result); + } + + @SuppressWarnings("unchecked") + @Test(expected=JedisDataException.class) + public void evalshaShaNotFound() { + Exception result = (Exception)jedis.evalsha("ffffffffffffffffffffffffffffffffffffffff"); + } +} \ No newline at end of file From 3c86ebcd362c49868a936c230fc0cc0a5837252e Mon Sep 17 00:00:00 2001 From: Ivo Ramirez Date: Thu, 15 Dec 2011 17:45:14 +0100 Subject: [PATCH 2/8] Script commands are supported. --- .../redis/clients/jedis/BinaryClient.java | 21 ++++ .../java/redis/clients/jedis/BinaryJedis.java | 24 +++- src/main/java/redis/clients/jedis/Client.java | 14 +++ src/main/java/redis/clients/jedis/Jedis.java | 22 ++++ .../java/redis/clients/jedis/Protocol.java | 4 +- .../tests/commands/ScriptingCommandsTest.java | 107 ++++++++++++++++++ 6 files changed, 189 insertions(+), 3 deletions(-) create mode 100644 src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index 9292b21..aa5fbad 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -744,4 +744,25 @@ public class BinaryClient extends Connection { public void evalsha(byte[] sha1, List keys, List args){ sendEvalCommand(EVALSHA, sha1, keys, args); } + + public void scriptFlush(){ + sendCommand(SCRIPT, Keyword.FLUSH.raw); + } + + public void scriptExists(byte[]... sha1){ + byte[][] args = new byte[sha1.length + 1][]; + args[0] = Keyword.EXISTS.raw; + for(int i=0;i keys) { return eval(script,keys, new ArrayList()); } + + public byte[] scriptFlush(){ + client.scriptFlush(); + return client.getBinaryBulkReply(); + } + + public List scriptExists(byte[]... sha1){ + client.scriptExists(sha1); + return client.getBinaryMultiBulkReply(); + } + + public byte[] scriptLoad(byte[] script){ + client.scriptLoad(script); + return client.getBinaryBulkReply(); + } + + public void scriptKill(){ + client.scriptKill(); + } } diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index c69f9a1..97b3e66 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -1,5 +1,6 @@ package redis.clients.jedis; +import redis.clients.jedis.Protocol.Keyword; import redis.clients.util.SafeEncoder; import java.util.ArrayList; @@ -9,6 +10,7 @@ import java.util.Map; import java.util.Map.Entry; import static redis.clients.jedis.Protocol.toByteArray; +import static redis.clients.jedis.Protocol.Command.SCRIPT; public class Client extends BinaryClient implements Commands { public Client(final String host) { @@ -621,4 +623,16 @@ public class Client extends BinaryClient implements Commands { } evalsha(SafeEncoder.encode(sha1),k,a); } + + public void scriptExists(String... sha1){ + final byte[][] bsha1 = new byte[sha1.length][]; + for (int i = 0; i < bsha1.length; i++) { + bsha1[i] = SafeEncoder.encode(sha1[i]); + } + scriptExists(bsha1); + } + + public void scriptLoad(String script){ + scriptLoad(SafeEncoder.encode(script)); + } } diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 9281ff3..303cb26 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2740,4 +2740,26 @@ public class Jedis extends BinaryJedis implements JedisCommands { return getEvalResult(); } + + public Boolean scriptExists(String sha1){ + String[] a = new String[1]; + a[0] = sha1; + return scriptExists(a).get(0); + } + + public List scriptExists(String... sha1){ + client.scriptExists(sha1); + List result = client.getObjectMultiBulkReply(); + List exists = new ArrayList(); + + for(Object value : result) + exists.add(((Long)value) == 1); + + return exists; + } + + public String scriptLoad(String script){ + client.scriptLoad(script); + return client.getBulkReply(); + } } \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/Protocol.java b/src/main/java/redis/clients/jedis/Protocol.java index dc43e16..72756df 100644 --- a/src/main/java/redis/clients/jedis/Protocol.java +++ b/src/main/java/redis/clients/jedis/Protocol.java @@ -140,7 +140,7 @@ public final class Protocol { } public static enum Command { - PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, RPUSH, LPUSH, LLEN, LRANGE, LTRIM, LINDEX, LSET, LREM, LPOP, RPOP, RPOPLPUSH, SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SISMEMBER, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SRANDMEMBER, ZADD, ZRANGE, ZREM, ZINCRBY, ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, SETRANGE, GETRANGE, EVAL, EVALSHA; + PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, RPUSH, LPUSH, LLEN, LRANGE, LTRIM, LINDEX, LSET, LREM, LPOP, RPOP, RPOPLPUSH, SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SISMEMBER, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SRANDMEMBER, ZADD, ZRANGE, ZREM, ZINCRBY, ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, SETRANGE, GETRANGE, EVAL, EVALSHA, SCRIPT; public final byte[] raw; @@ -150,7 +150,7 @@ public final class Protocol { } public static enum Keyword { - AGGREGATE, ALPHA, ASC, BY, DESC, GET, LIMIT, MESSAGE, NO, NOSORT, PMESSAGE, PSUBSCRIBE, PUNSUBSCRIBE, OK, ONE, QUEUED, SET, STORE, SUBSCRIBE, UNSUBSCRIBE, WEIGHTS, WITHSCORES, RESETSTAT; + AGGREGATE, ALPHA, ASC, BY, DESC, GET, LIMIT, MESSAGE, NO, NOSORT, PMESSAGE, PSUBSCRIBE, PUNSUBSCRIBE, OK, ONE, QUEUED, SET, STORE, SUBSCRIBE, UNSUBSCRIBE, WEIGHTS, WITHSCORES, RESETSTAT, FLUSH, EXISTS, LOAD, KILL; public final byte[] raw; Keyword() { diff --git a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java new file mode 100644 index 0000000..4270ec1 --- /dev/null +++ b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java @@ -0,0 +1,107 @@ +package redis.clients.jedis.tests.commands; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +import redis.clients.jedis.exceptions.JedisDataException; +import redis.clients.jedis.exceptions.JedisException; + +public class ScriptingCommandsTest extends JedisCommandTestBase { + + @SuppressWarnings("unchecked") + @Test + public void evalMultiBulk() { + String script = "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"; + List keys = new ArrayList(); + keys.add("key1"); + keys.add("key2"); + + List response = (List)jedis.eval(script, keys, "first", "second" ); + + assertEquals(4, response.size()); + assertEquals("key1", response.get(0)); + assertEquals("key2", response.get(1)); + assertEquals("first", response.get(2)); + assertEquals("second", response.get(3)); + } + + @Test + public void evalBulk() { + String script = "return KEYS[1]"; + List keys = new ArrayList(); + keys.add("key1"); + + String response = (String)jedis.eval(script, keys); + + assertEquals("key1", response); + } + + @Test + public void evalInt() { + String script = "return 2"; + List keys = new ArrayList(); + keys.add("key1"); + + Long response = (Long)jedis.eval(script, keys); + + assertEquals(new Long(2), response); + } + + @Test + public void evalNoArgs() { + String script = "return KEYS[1]"; + + String response = (String)jedis.eval(script, "key1"); + + assertEquals("key1", response); + } + + @SuppressWarnings("unchecked") + @Test + public void evalsha() { + jedis.set("foo", "bar"); + jedis.eval("return redis.call('get','foo')"); + String result = (String)jedis.evalsha("6b1bf486c81ceb7edf3c093f4c48582e38c0e791"); + + assertEquals("bar", result); + } + + @SuppressWarnings("unchecked") + @Test(expected=JedisDataException.class) + public void evalshaShaNotFound() { + jedis.evalsha("ffffffffffffffffffffffffffffffffffffffff"); + } + + @SuppressWarnings("unchecked") + @Test + public void scriptFlush() { + jedis.set("foo", "bar"); + jedis.eval("return redis.call('get','foo')"); + jedis.scriptFlush(); + assertFalse(jedis.scriptExists("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + } + + @SuppressWarnings("unchecked") + @Test + public void scriptExists() { + jedis.scriptLoad("return redis.call('get','foo')"); + List exists = jedis.scriptExists("ffffffffffffffffffffffffffffffffffffffff","6b1bf486c81ceb7edf3c093f4c48582e38c0e791"); + assertFalse(exists.get(0)); + assertTrue(exists.get(1)); + } + + @SuppressWarnings("unchecked") + @Test + public void scriptLoad() { + jedis.scriptLoad("return redis.call('get','foo')"); + assertTrue(jedis.scriptExists("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + } + + @SuppressWarnings("unchecked") + @Test + public void scriptKill() { + jedis.scriptKill(); + } +} \ No newline at end of file From 96d405a6e3539f4a99f73b826c2e0b424dbb1fdf Mon Sep 17 00:00:00 2001 From: ivowiblo Date: Sat, 14 Apr 2012 09:10:00 -0300 Subject: [PATCH 3/8] scripting support --- .../tests/commands/EvalCommandsTest.java | 76 ------------------- 1 file changed, 76 deletions(-) delete mode 100644 src/test/java/redis/clients/jedis/tests/commands/EvalCommandsTest.java diff --git a/src/test/java/redis/clients/jedis/tests/commands/EvalCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/EvalCommandsTest.java deleted file mode 100644 index adcccf9..0000000 --- a/src/test/java/redis/clients/jedis/tests/commands/EvalCommandsTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package redis.clients.jedis.tests.commands; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.Test; - -import redis.clients.jedis.exceptions.JedisDataException; -import redis.clients.jedis.exceptions.JedisException; - -public class EvalCommandsTest extends JedisCommandTestBase { - - @SuppressWarnings("unchecked") - @Test - public void evalMultiBulk() { - String script = "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"; - List keys = new ArrayList(); - keys.add("key1"); - keys.add("key2"); - - List response = (List)jedis.eval(script, keys, "first", "second" ); - - assertEquals(4, response.size()); - assertEquals("key1", response.get(0)); - assertEquals("key2", response.get(1)); - assertEquals("first", response.get(2)); - assertEquals("second", response.get(3)); - } - - @Test - public void evalBulk() { - String script = "return KEYS[1]"; - List keys = new ArrayList(); - keys.add("key1"); - - String response = (String)jedis.eval(script, keys); - - assertEquals("key1", response); - } - - @Test - public void evalInt() { - String script = "return 2"; - List keys = new ArrayList(); - keys.add("key1"); - - Long response = (Long)jedis.eval(script, keys); - - assertEquals(new Long(2), response); - } - - @Test - public void evalNoArgs() { - String script = "return KEYS[1]"; - - String response = (String)jedis.eval(script, "key1"); - - assertEquals("key1", response); - } - - @SuppressWarnings("unchecked") - @Test - public void evalsha() { - jedis.set("foo", "bar"); - jedis.eval("return redis.call('get','foo')"); - String result = (String)jedis.evalsha("6b1bf486c81ceb7edf3c093f4c48582e38c0e791"); - - assertEquals("bar", result); - } - - @SuppressWarnings("unchecked") - @Test(expected=JedisDataException.class) - public void evalshaShaNotFound() { - Exception result = (Exception)jedis.evalsha("ffffffffffffffffffffffffffffffffffffffff"); - } -} \ No newline at end of file From 9bf19c623725fd75e3d445d156f0bad0d7ec5d94 Mon Sep 17 00:00:00 2001 From: Ivo Ramirez Date: Thu, 15 Dec 2011 17:56:14 +0100 Subject: [PATCH 4/8] Binary scripting API is tested --- .../java/redis/clients/jedis/BinaryJedis.java | 4 ++-- .../java/redis/clients/jedis/Connection.java | 7 +++++++ src/main/java/redis/clients/jedis/Jedis.java | 6 +++--- .../tests/commands/ScriptingCommandsTest.java | 18 ++++++++++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index de7aeec..20fd083 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -3037,9 +3037,9 @@ public class BinaryJedis implements BinaryJedisCommands { return client.getBinaryBulkReply(); } - public List scriptExists(byte[]... sha1){ + public List scriptExists(byte[]... sha1){ client.scriptExists(sha1); - return client.getBinaryMultiBulkReply(); + return client.getIntegerMultiBulkReply(); } public byte[] scriptLoad(byte[] script){ diff --git a/src/main/java/redis/clients/jedis/Connection.java b/src/main/java/redis/clients/jedis/Connection.java index 67a7dd6..09e0453 100644 --- a/src/main/java/redis/clients/jedis/Connection.java +++ b/src/main/java/redis/clients/jedis/Connection.java @@ -205,6 +205,13 @@ public class Connection { pipelinedCommands--; return (List) protocol.read(inputStream); } + + @SuppressWarnings("unchecked") + public List getIntegerMultiBulkReply() { + flush(); + pipelinedCommands--; + return (List) protocol.read(inputStream); + } public List getAll() { return getAll(0); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 303cb26..78561a5 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2749,11 +2749,11 @@ public class Jedis extends BinaryJedis implements JedisCommands { public List scriptExists(String... sha1){ client.scriptExists(sha1); - List result = client.getObjectMultiBulkReply(); + List result = client.getIntegerMultiBulkReply(); List exists = new ArrayList(); - for(Object value : result) - exists.add(((Long)value) == 1); + for(Long value : result) + exists.add(value == 1); return exists; } diff --git a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java index 4270ec1..07b0059 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java @@ -7,6 +7,7 @@ import org.junit.Test; import redis.clients.jedis.exceptions.JedisDataException; import redis.clients.jedis.exceptions.JedisException; +import redis.clients.util.SafeEncoder; public class ScriptingCommandsTest extends JedisCommandTestBase { @@ -92,6 +93,15 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { assertTrue(exists.get(1)); } + @SuppressWarnings("unchecked") + @Test + public void scriptExistsBinary() { + jedis.scriptLoad(SafeEncoder.encode("return redis.call('get','foo')")); + List exists = jedis.scriptExists(SafeEncoder.encode("ffffffffffffffffffffffffffffffffffffffff"),SafeEncoder.encode("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + assertEquals(new Long(0), exists.get(0)); + assertEquals(new Long(1), exists.get(1)); + } + @SuppressWarnings("unchecked") @Test public void scriptLoad() { @@ -99,6 +109,14 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { assertTrue(jedis.scriptExists("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); } + @SuppressWarnings("unchecked") + @Test + public void scriptLoadBinary() { + jedis.scriptLoad(SafeEncoder.encode("return redis.call('get','foo')")); + List exists = jedis.scriptExists(SafeEncoder.encode("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + assertEquals(new Long(1), exists.get(0)); + } + @SuppressWarnings("unchecked") @Test public void scriptKill() { From df1dfce3271f2c44c24edb5850a2868a91260ef7 Mon Sep 17 00:00:00 2001 From: Ivo Ramirez Date: Thu, 15 Dec 2011 18:44:44 +0100 Subject: [PATCH 5/8] SCRIPT KILL command fixed --- src/main/java/redis/clients/jedis/BinaryJedis.java | 3 ++- .../jedis/tests/commands/ScriptingCommandsTest.java | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 20fd083..f0b9d73 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -3047,7 +3047,8 @@ public class BinaryJedis implements BinaryJedisCommands { return client.getBinaryBulkReply(); } - public void scriptKill(){ + public byte[] scriptKill(){ client.scriptKill(); + return client.getBinaryBulkReply(); } } diff --git a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java index 07b0059..78825a9 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java @@ -120,6 +120,11 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { @SuppressWarnings("unchecked") @Test public void scriptKill() { - jedis.scriptKill(); - } + try { + jedis.scriptKill(); + } + catch(JedisDataException e) { + assertEquals("ERR No scripts in execution right now.", e.getMessage()); + } + } } \ No newline at end of file From df75c72825b74a85ec381bbbaeac24708c8994c7 Mon Sep 17 00:00:00 2001 From: ivowiblo Date: Sat, 14 Apr 2012 22:54:43 -0300 Subject: [PATCH 6/8] Eval and Evalsha api improved --- .DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 6148 bytes .../redis/clients/jedis/BinaryClient.java | 23 +++----- .../java/redis/clients/jedis/BinaryJedis.java | 28 +++++---- src/main/java/redis/clients/jedis/Client.java | 34 +++++------ src/main/java/redis/clients/jedis/Jedis.java | 53 +++++++++++------- src/test/.DS_Store | Bin 0 -> 6148 bytes src/test/java/.DS_Store | Bin 0 -> 6148 bytes src/test/java/redis/.DS_Store | Bin 0 -> 6148 bytes src/test/java/redis/clients/.DS_Store | Bin 0 -> 6148 bytes src/test/java/redis/clients/jedis/.DS_Store | Bin 0 -> 6148 bytes .../java/redis/clients/jedis/tests/.DS_Store | Bin 0 -> 6148 bytes .../tests/commands/ScriptingCommandsTest.java | 18 ++++-- 13 files changed, 87 insertions(+), 69 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/test/.DS_Store create mode 100644 src/test/java/.DS_Store create mode 100644 src/test/java/redis/.DS_Store create mode 100644 src/test/java/redis/clients/.DS_Store create mode 100644 src/test/java/redis/clients/jedis/.DS_Store create mode 100644 src/test/java/redis/clients/jedis/tests/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9a874b5768f336915163bb88cd434575b859f936 GIT binary patch literal 6148 zcmeH~Jr2S!425ml0g0s}V-^m;4I%_5-~tF3k&vj^b9A16778<}(6eNJu~Vz<8=6`~ zboab&MFtUB!i}=AFfm2m$tVxGT*u4pe81nUlA49C} z?O@64YO)2RT{MRe%{!}2F))pG(Sih~)xkgosK7*lF7m<7{{#Hn{6A@7N(HFEpDCdI z{f4mh3n7#7gpu zObo#Gk7);t0M>LTwjO3?%m>_Y#trxB_H+5ZUN2sxtvcW-eZ*`(w*@I61*Cu!kOER* zK?>wCzTPb8ne-@9Kng5F0slS}y0a!*XM8#sVgw)umczJ?S%NHHAZxO9vO=?*9xPie z#t^SZJ6ZC&nrxlD9hSp~<(h|QedXQN6$w;|Bv*)=KooXQYjz> z{+R+c98QNlUn keys, List args){ - int keysSize = keys.size(); - int argsSize = args.size(); + private void sendEvalCommand(Command command, byte[] script, byte[] keyCount, byte[][] params){ - final byte[][] allArgs = new byte[keysSize + argsSize + 2][]; + final byte[][] allArgs = new byte[params.length + 2][]; allArgs[0] = script; - allArgs[1] =toByteArray(keysSize); + allArgs[1] = keyCount; - for(int i=0;i keys, List args){ - sendEvalCommand(EVAL, script, keys, args ); + public void eval(byte[] script, byte[] keyCount, byte[][] params){ + sendEvalCommand(EVAL, script, keyCount, params ); } - public void evalsha(byte[] sha1, List keys, List args){ - sendEvalCommand(EVALSHA, sha1, keys, args); + public void evalsha(byte[] sha1, byte[] keyCount, byte[][] params){ + sendEvalCommand(EVALSHA, sha1, keyCount, params); } public void scriptFlush(){ diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index f0b9d73..044ff56 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -16,6 +16,7 @@ import redis.clients.jedis.exceptions.JedisDataException; import redis.clients.jedis.exceptions.JedisException; import redis.clients.util.JedisByteHashMap; import redis.clients.util.SafeEncoder; +import static redis.clients.jedis.Protocol.toByteArray; public class BinaryJedis implements BinaryJedisCommands { protected Client client = null; @@ -3018,18 +3019,25 @@ public class BinaryJedis implements BinaryJedisCommands { */ public Object eval(byte[] script, List keys, List args) { client.setTimeoutInfinite(); - client.eval(script, keys, args); + client.eval(script, toByteArray(keys.size()), getParams(keys, args)); return client.getOne(); } - - /** - * Evaluates scripts using the Lua interpreter built into Redis starting from version 2.6.0. - *

- * - * @return Script result - */ - public Object eval(byte[] script, List keys) { - return eval(script,keys, new ArrayList()); + private byte[][] getParams(List keys, List args){ + int keyCount = keys.size(); + byte[][] params = new byte[keyCount + args.size()][]; + + for(int i=0;i keys, String... args) { - List k = new ArrayList(); - for(String key:keys){ - k.add(SafeEncoder.encode(key)); - } - List a = new ArrayList(); - for(String arg:args){ - a.add(SafeEncoder.encode(arg)); - } - eval(SafeEncoder.encode(script),k,a); + private byte[][] getByteParams(String... params){ + byte[][] p = new byte[params.length][]; + for(int i=0;i keys, String... args) { - List k = new ArrayList(); - for(String key:keys){ - k.add(SafeEncoder.encode(key)); - } - List a = new ArrayList(); - for(String arg:args){ - a.add(SafeEncoder.encode(arg)); - } - evalsha(SafeEncoder.encode(sha1),k,a); + + public void evalsha(String sha1, int keyCount, String... params) { + evalsha(SafeEncoder.encode(sha1),toByteArray(keyCount), getByteParams(params)); } public void scriptExists(String... sha1){ diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 78561a5..226ff65 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2693,19 +2693,38 @@ public class Jedis extends BinaryJedis implements JedisCommands { return client.getStatusCodeReply(); } - public Object eval(String script, String... keys) { - List s = new ArrayList(keys.length); - for(String key : keys) - s.add(key); - - return eval(script, s); - } - - public Object eval(String script, List keys, String... args) { - client.setTimeoutInfinite(); - client.eval(script, keys, args); + public Object eval(String script, int keyCount, String... params) { + client.setTimeoutInfinite(); + client.eval(script, keyCount, params); return getEvalResult(); + } + + private String[] getParams(List keys, List args){ + int keyCount = keys.size(); + int argCount = args.size(); + + String[] params = new String[keyCount + args.size()]; + + for(int i=0;i keys, List args) { + return eval(script, keys.size(), getParams(keys, args)); + } + + public Object eval(String script) { + return eval(script,0); + } + + public Object evalsha(String script) { + return evalsha(script,0); } private Object getEvalResult(){ @@ -2726,17 +2745,13 @@ public class Jedis extends BinaryJedis implements JedisCommands { return result; } - public Object evalsha(String sha1, String... keys) { - List s = new ArrayList(keys.length); - for(String key : keys) - s.add(key); - - return evalsha(sha1, s); + public Object evalsha(String sha1, List keys, List args) { + return evalsha(sha1, keys.size(), getParams(keys, args)); } - public Object evalsha(String sha1, List keys, String... args) { + public Object evalsha(String sha1, int keyCount, String... params) { checkIsInMulti(); - client.evalsha(sha1, keys, args); + client.evalsha(sha1, keyCount, params); return getEvalResult(); } diff --git a/src/test/.DS_Store b/src/test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..55c1fcbeb4ba2bef02771ea2748f3e4b0ea5c07d GIT binary patch literal 6148 zcmeH~J&wXa427SU6iC~oq@0EW>)m< zk%er^j=Knh3!DIf); zz>E~gV|@8Jqi52iNC7D@4+Z@DQ0UH@Y@PAxV2BZb99RzHI%Wy7c!8|R*2xOZa(b|A zwHQOZ9_?hw>uR!f_I6kfAC`AEpJHg%+hK(X&1yhF3P^#80*juHe*W+1ujcQ^n8@Auu4PPqH)~DC=`aY|^Zges(XZZ6Iz{HQ@6+Mjm#TR5vwoX=P`Vj~j6r{kv GD)0dNyb`AX literal 0 HcmV?d00001 diff --git a/src/test/java/.DS_Store b/src/test/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d209edf2f0edc098a632ffe3bb1f8b7136f12568 GIT binary patch literal 6148 zcmeH~O^O0R4256R0l|$+m$mT#bAv+k1akoy+l3$q%Ixdt^ODNO9@o+gFOYhbRHc8u zMOO!a?S6(&U=3hNcg5C+ks0F;+;PT$3m(Jcbp5{FuAas$_j*9*HJ;aVSt0@=AOa#F z0wORW0&$4*{9jGzne-?kAOh1M;NOQrcdeM&FdfEu^b*wK32IGkU74X- zb`O@N7Hx>qlW;H~E2#COlz`Vz6KmQN(SN;E} zM4T<57=SAD-J*T z$HBK`Qa}nw0VyB_q`;LGr~*5Gyz;p^P6|kY+gHH94~_2F3&+Ixba03kfH-3~jPvLv zh|L4UUN|N)LbIe2lWNssSkf79mDdZ$#H7Qj`LMd#szb53o#(emhxJ5_Qa}ovD{!C7 zh1dTL{X+kLPSQ#WNP&N)fX&w1^@>lb+B$ih*V;yZrhCp8-Hr30aENkDjB?C{m*Zt5 bWnS|+_j}=(7<9&iPSnqU>mri^f33hbA{Z5> literal 0 HcmV?d00001 diff --git a/src/test/java/redis/clients/.DS_Store b/src/test/java/redis/clients/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..20845bd710c96181dc755ee637042cc04a94eef9 GIT binary patch literal 6148 zcmeH~J&pn~427Q;kXG7;k}?ek;06(5Pp}t2%TR!jC=h*)&a>l&S!y&|Jxk7uop^q} zVloC`+xxHqmHY zKm;a4AP#Y!|6db&COwJ>h`=-m`1hgEU2AIV8lMgh(E?ECOowqEy#%#*f?88sS7vCI z-GgPRMH}MzD5sX(S5sTpUJlFV!}8ANT@1~7Ijk_CSq;%30wORXFzfNs&;M`wtNwpf zqEG}x;GYq&`R-@8r2wyw<3^dk@$ KG>E`k2|NJGpc9Ay literal 0 HcmV?d00001 diff --git a/src/test/java/redis/clients/jedis/.DS_Store b/src/test/java/redis/clients/jedis/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0b9a44bd2ada453415acdcb4f1a3b8e052beac74 GIT binary patch literal 6148 zcmeH~Jr2S!425kd5)w;C#w;9w8$_s_fD0ff8xlid&(V2yytFW*3O!5qi=CuD-_X<| zqK8+%7imRg4L6mYg^4Nhl|1Dp1LDvR*Zbx1xLa8kvDOket}&jEX$lFD011!)36Q{y z2>2n6^M5m=XX2xf013>4fPEhl+%$)ls{ZLf@D>2tpzMaR_Y%-#1!xW}RZ)RybPpO^ z)!PuO`*vuGbvd+Dt=mPT`OvttS{DP;x?MCOfoXPOAORAX5Lni{we$Z7|JMIcwlF0D z68JL$+H|MxfR~E1_2c!devYb*3modp5k@}&NbD%y!rd^RYyi!nr79{g{s=e*1`_xw Ffj1-y6RZFL literal 0 HcmV?d00001 diff --git a/src/test/java/redis/clients/jedis/tests/.DS_Store b/src/test/java/redis/clients/jedis/tests/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..534c0929912ac332544f9d7c58ced2a84156069e GIT binary patch literal 6148 zcmeHKyKciU3_PY83}ngJQNPeX5Q6jz@&jq(F|CK7yQh9vKdr~d(7^4MF2T{DPNH}+ ze1m8Lu-(V_1Z)8ebVq#pur%LyU)ZW5Mx^tM7rbM{WxSlui|pS6&K+>Vgf~7v_^;D+ z_Dz`-kOERb3P=Gda8m`Uybhb2o~py7fE2g~1^j+!bjMyeC&tymAzA?9n&B|cqn98y z4-k9doX7~xl1fafRf}OsXS`KjFPsyT4y)$F>djUiipAS`ev5QiPt+&{q`LzpI^#hn>Sw@pkx7C7R^S^YG!=&c literal 0 HcmV?d00001 diff --git a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java index 78825a9..acee2cf 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java @@ -19,7 +19,11 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { keys.add("key1"); keys.add("key2"); - List response = (List)jedis.eval(script, keys, "first", "second" ); + List args = new ArrayList(); + args.add("first"); + args.add("second"); + + List response = (List)jedis.eval(script, keys, args ); assertEquals(4, response.size()); assertEquals("key1", response.get(0)); @@ -34,7 +38,10 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { List keys = new ArrayList(); keys.add("key1"); - String response = (String)jedis.eval(script, keys); + List args = new ArrayList(); + args.add("first"); + + String response = (String)jedis.eval(script, keys, args); assertEquals("key1", response); } @@ -45,7 +52,7 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { List keys = new ArrayList(); keys.add("key1"); - Long response = (Long)jedis.eval(script, keys); + Long response = (Long)jedis.eval(script, keys, new ArrayList()); assertEquals(new Long(2), response); } @@ -53,8 +60,9 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { @Test public void evalNoArgs() { String script = "return KEYS[1]"; - - String response = (String)jedis.eval(script, "key1"); + List keys = new ArrayList(); + keys.add("key1"); + String response = (String)jedis.eval(script, keys, new ArrayList()); assertEquals("key1", response); } From 9e13233bbf5ef64dda4e63b665edab33a2e1afd4 Mon Sep 17 00:00:00 2001 From: ivowiblo Date: Tue, 17 Apr 2012 16:06:03 -0400 Subject: [PATCH 7/8] DS_Store files removed --- .DS_Store | Bin 6148 -> 0 bytes src/.DS_Store | Bin 6148 -> 0 bytes src/test/.DS_Store | Bin 6148 -> 0 bytes src/test/java/.DS_Store | Bin 6148 -> 0 bytes src/test/java/redis/.DS_Store | Bin 6148 -> 0 bytes src/test/java/redis/clients/.DS_Store | Bin 6148 -> 0 bytes src/test/java/redis/clients/jedis/.DS_Store | Bin 6148 -> 0 bytes .../java/redis/clients/jedis/tests/.DS_Store | Bin 6148 -> 0 bytes 8 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 src/.DS_Store delete mode 100644 src/test/.DS_Store delete mode 100644 src/test/java/.DS_Store delete mode 100644 src/test/java/redis/.DS_Store delete mode 100644 src/test/java/redis/clients/.DS_Store delete mode 100644 src/test/java/redis/clients/jedis/.DS_Store delete mode 100644 src/test/java/redis/clients/jedis/tests/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 9a874b5768f336915163bb88cd434575b859f936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425ml0g0s}V-^m;4I%_5-~tF3k&vj^b9A16778<}(6eNJu~Vz<8=6`~ zboab&MFtUB!i}=AFfm2m$tVxGT*u4pe81nUlA49C} z?O@64YO)2RT{MRe%{!}2F))pG(Sih~)xkgosK7*lF7m<7{{#Hn{6A@7N(HFEpDCdI z{f4mh3n7#7gpu zObo#Gk7);t0M>LTwjO3?%m>_Y#trxB_H+5ZUN2sxtvcW-eZ*`(w*@I61*Cu!kOER* zK?>wCzTPb8ne-@9Kng5F0slS}y0a!*XM8#sVgw)umczJ?S%NHHAZxO9vO=?*9xPie z#t^SZJ6ZC&nrxlD9hSp~<(h|QedXQN6$w;|Bv*)=KooXQYjz> z{+R+c98QNlUn)m< zk%er^j=Knh3!DIf); zz>E~gV|@8Jqi52iNC7D@4+Z@DQ0UH@Y@PAxV2BZb99RzHI%Wy7c!8|R*2xOZa(b|A zwHQOZ9_?hw>uR!f_I6kfAC`AEpJHg%+hK(X&1yhF3P^#80*juHe*W+1ujcQ^n8@Auu4PPqH)~DC=`aY|^Zges(XZZ6Iz{HQ@6+Mjm#TR5vwoX=P`Vj~j6r{kv GD)0dNyb`AX diff --git a/src/test/java/.DS_Store b/src/test/java/.DS_Store deleted file mode 100644 index d209edf2f0edc098a632ffe3bb1f8b7136f12568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~O^O0R4256R0l|$+m$mT#bAv+k1akoy+l3$q%Ixdt^ODNO9@o+gFOYhbRHc8u zMOO!a?S6(&U=3hNcg5C+ks0F;+;PT$3m(Jcbp5{FuAas$_j*9*HJ;aVSt0@=AOa#F z0wORW0&$4*{9jGzne-?kAOh1M;NOQrcdeM&FdfEu^b*wK32IGkU74X- zb`O@N7Hx>qlW;H~E2#COlz`Vz6KmQN(SN;E} zM4T<57=SAD-J*T z$HBK`Qa}nw0VyB_q`;LGr~*5Gyz;p^P6|kY+gHH94~_2F3&+Ixba03kfH-3~jPvLv zh|L4UUN|N)LbIe2lWNssSkf79mDdZ$#H7Qj`LMd#szb53o#(emhxJ5_Qa}ovD{!C7 zh1dTL{X+kLPSQ#WNP&N)fX&w1^@>lb+B$ih*V;yZrhCp8-Hr30aENkDjB?C{m*Zt5 bWnS|+_j}=(7<9&iPSnqU>mri^f33hbA{Z5> diff --git a/src/test/java/redis/clients/.DS_Store b/src/test/java/redis/clients/.DS_Store deleted file mode 100644 index 20845bd710c96181dc755ee637042cc04a94eef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~J&pn~427Q;kXG7;k}?ek;06(5Pp}t2%TR!jC=h*)&a>l&S!y&|Jxk7uop^q} zVloC`+xxHqmHY zKm;a4AP#Y!|6db&COwJ>h`=-m`1hgEU2AIV8lMgh(E?ECOowqEy#%#*f?88sS7vCI z-GgPRMH}MzD5sX(S5sTpUJlFV!}8ANT@1~7Ijk_CSq;%30wORXFzfNs&;M`wtNwpf zqEG}x;GYq&`R-@8r2wyw<3^dk@$ KG>E`k2|NJGpc9Ay diff --git a/src/test/java/redis/clients/jedis/.DS_Store b/src/test/java/redis/clients/jedis/.DS_Store deleted file mode 100644 index 0b9a44bd2ada453415acdcb4f1a3b8e052beac74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425kd5)w;C#w;9w8$_s_fD0ff8xlid&(V2yytFW*3O!5qi=CuD-_X<| zqK8+%7imRg4L6mYg^4Nhl|1Dp1LDvR*Zbx1xLa8kvDOket}&jEX$lFD011!)36Q{y z2>2n6^M5m=XX2xf013>4fPEhl+%$)ls{ZLf@D>2tpzMaR_Y%-#1!xW}RZ)RybPpO^ z)!PuO`*vuGbvd+Dt=mPT`OvttS{DP;x?MCOfoXPOAORAX5Lni{we$Z7|JMIcwlF0D z68JL$+H|MxfR~E1_2c!devYb*3modp5k@}&NbD%y!rd^RYyi!nr79{g{s=e*1`_xw Ffj1-y6RZFL diff --git a/src/test/java/redis/clients/jedis/tests/.DS_Store b/src/test/java/redis/clients/jedis/tests/.DS_Store deleted file mode 100644 index 534c0929912ac332544f9d7c58ced2a84156069e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyKciU3_PY83}ngJQNPeX5Q6jz@&jq(F|CK7yQh9vKdr~d(7^4MF2T{DPNH}+ ze1m8Lu-(V_1Z)8ebVq#pur%LyU)ZW5Mx^tM7rbM{WxSlui|pS6&K+>Vgf~7v_^;D+ z_Dz`-kOERb3P=Gda8m`Uybhb2o~py7fE2g~1^j+!bjMyeC&tymAzA?9n&B|cqn98y z4-k9doX7~xl1fafRf}OsXS`KjFPsyT4y)$F>djUiipAS`ev5QiPt+&{q`LzpI^#hn>Sw@pkx7C7R^S^YG!=&c From 0f978f5236469ff4661131358d2cd862307e79ff Mon Sep 17 00:00:00 2001 From: ivowiblo Date: Tue, 17 Apr 2012 21:13:37 -0400 Subject: [PATCH 8/8] Unused import is removed --- src/main/java/redis/clients/jedis/Jedis.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 226ff65..25e5511 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -8,8 +8,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.hamcrest.core.IsInstanceOf; - import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.util.SafeEncoder;