diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptingCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptingCommands.java index 13eb3178b4..92d758b000 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptingCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptingCommands.java @@ -26,6 +26,7 @@ /** * @author Mark Paluch + * @author Ivan Kripakov * @since 2.0 */ class JedisScriptingCommands implements RedisScriptingCommands { @@ -76,11 +77,11 @@ public List scriptExists(String... scriptSha1) { public T eval(byte[] script, ReturnType returnType, int numKeys, byte[]... keysAndArgs) { Assert.notNull(script, "Script must not be null"); - assertDirectMode(); JedisScriptReturnConverter converter = new JedisScriptReturnConverter(returnType); - return (T) connection.invoke().from(it -> it.eval(script, numKeys, keysAndArgs)).getOrElse(converter, - () -> converter.convert(null)); + return (T) connection.invoke() + .from(it -> it.eval(script, numKeys, keysAndArgs), t -> t.eval(script, numKeys, keysAndArgs)) + .getOrElse(converter, () -> converter.convert(null)); } @Override @@ -93,11 +94,12 @@ public T evalSha(String scriptSha1, ReturnType returnType, int numKeys, byte public T evalSha(byte[] scriptSha, ReturnType returnType, int numKeys, byte[]... keysAndArgs) { Assert.notNull(scriptSha, "Script digest must not be null"); - assertDirectMode(); JedisScriptReturnConverter converter = new JedisScriptReturnConverter(returnType); - return (T) connection.invoke().from(it -> it.evalsha(scriptSha, numKeys, keysAndArgs)).getOrElse(converter, - () -> converter.convert(null)); + return (T) connection.invoke() + .from(it -> it.evalsha(scriptSha, numKeys, keysAndArgs), t -> t.evalsha(scriptSha, numKeys, keysAndArgs)) + .getOrElse(converter, () -> converter.convert(null) + ); } private void assertDirectMode() { diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java index a5cacfb2df..dae84554c9 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java @@ -37,6 +37,7 @@ * @author Christoph Strobl * @author Thomas Darimont * @author Mark Paluch + * @author Ivan Kripakov */ @ExtendWith(SpringExtension.class) @ContextConfiguration("JedisConnectionIntegrationTests-context.xml") @@ -75,83 +76,6 @@ public void testClosePoolPipelinedDbSelect() { } // Unsupported Ops - @Test - public void testScriptLoadEvalSha() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testScriptLoadEvalSha); - } - - @Test - public void testEvalShaArrayStrings() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalShaArrayStrings); - } - - @Test - public void testEvalShaArrayBytes() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalShaArrayBytes); - } - - @Test - @Disabled - public void testEvalShaNotFound() {} - - @Test - @Disabled - public void testEvalShaArrayError() {} - - @Test - public void testEvalReturnString() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnString); - } - - @Test - public void testEvalReturnNumber() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnNumber); - } - - @Test - public void testEvalReturnSingleOK() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnSingleOK); - } - - @Test - @Disabled - public void testEvalReturnSingleError() {} - - @Test - public void testEvalReturnFalse() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnFalse); - } - - @Test - public void testEvalReturnTrue() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnTrue); - } - - @Test - public void testEvalReturnArrayStrings() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayStrings); - } - - @Test - public void testEvalReturnArrayNumbers() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayNumbers); - } - - @Test - public void testEvalReturnArrayOKs() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayOKs); - } - - @Test - public void testEvalReturnArrayFalses() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayFalses); - } - - @Test - public void testEvalReturnArrayTrues() { - assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayTrues); - } - @Test public void testScriptExists() { assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testScriptExists); diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionTransactionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionTransactionIntegrationTests.java index 45706608a2..5d61de88e3 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionTransactionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionTransactionIntegrationTests.java @@ -36,6 +36,7 @@ * * @author Jennifer Hickey * @author Mark Paluch + * @author Ivan Kripakov */ @ExtendWith(SpringExtension.class) @ContextConfiguration("JedisConnectionIntegrationTests-context.xml") @@ -56,79 +57,44 @@ public void tearDown() { @Disabled("Jedis issue: Transaction tries to return String instead of List") public void testGetConfig() {} - // Unsupported Ops - @Test - @Disabled - public void testScriptLoadEvalSha() {} - - @Test - @Disabled - public void testEvalShaArrayStrings() {} - - @Test - @Disabled - public void testEvalShaArrayBytes() {} - @Test - @Disabled - public void testEvalShaNotFound() {} + public void testEvalShaNotFound() { + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) + .isThrownBy(() -> { + connection.evalSha("somefakesha", ReturnType.VALUE, 2, "key1", "key2"); + getResults(); + }); + } @Test public void testEvalShaArrayError() { assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) - .isThrownBy(() -> connection.evalSha("notasha", ReturnType.MULTI, 1, "key1", "arg1")); + .isThrownBy(() -> { + connection.evalSha("notasha", ReturnType.MULTI, 1, "key1", "arg1"); + getResults(); + }); } @Test public void testEvalArrayScriptError() { assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) - .isThrownBy(() -> connection.eval("return {1,2", ReturnType.MULTI, 1, "foo", "bar")); + .isThrownBy(() -> { + connection.eval("return {1,2", ReturnType.MULTI, 1, "foo", "bar"); + getResults(); + }); } @Test - @Disabled - public void testEvalReturnString() {} - - @Test - @Disabled - public void testEvalReturnNumber() {} - - @Test - @Disabled - public void testEvalReturnSingleOK() {} - - @Test - @Disabled - public void testEvalReturnSingleError() {} - - @Test - @Disabled - public void testEvalReturnFalse() {} - - @Test - @Disabled - public void testEvalReturnTrue() {} - - @Test - @Disabled - public void testEvalReturnArrayStrings() {} - - @Test - @Disabled - public void testEvalReturnArrayNumbers() {} - - @Test - @Disabled - public void testEvalReturnArrayOKs() {} - - @Test - @Disabled - public void testEvalReturnArrayFalses() {} + public void testEvalReturnSingleError() { + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) + .isThrownBy(()-> { + connection.eval("return redis.call('expire','foo')", ReturnType.BOOLEAN, 0); + getResults(); + }); + } - @Test - @Disabled - public void testEvalReturnArrayTrues() {} + // Unsupported Ops @Test @Disabled public void testScriptExists() {}