Skip to content

Commit d983eec

Browse files
Enable eval & evalsha in jedis pipeline & transaction.
1 parent 6eac1d1 commit d983eec

File tree

3 files changed

+30
-141
lines changed

3 files changed

+30
-141
lines changed

src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptingCommands.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,11 @@ public List<Boolean> scriptExists(String... scriptSha1) {
7676
public <T> T eval(byte[] script, ReturnType returnType, int numKeys, byte[]... keysAndArgs) {
7777

7878
Assert.notNull(script, "Script must not be null");
79-
assertDirectMode();
8079

8180
JedisScriptReturnConverter converter = new JedisScriptReturnConverter(returnType);
82-
return (T) connection.invoke().from(it -> it.eval(script, numKeys, keysAndArgs)).getOrElse(converter,
83-
() -> converter.convert(null));
81+
return (T) connection.invoke()
82+
.from(it -> it.eval(script, numKeys, keysAndArgs), t -> t.eval(script, numKeys, keysAndArgs))
83+
.getOrElse(converter, () -> converter.convert(null));
8484
}
8585

8686
@Override
@@ -93,11 +93,12 @@ public <T> T evalSha(String scriptSha1, ReturnType returnType, int numKeys, byte
9393
public <T> T evalSha(byte[] scriptSha, ReturnType returnType, int numKeys, byte[]... keysAndArgs) {
9494

9595
Assert.notNull(scriptSha, "Script digest must not be null");
96-
assertDirectMode();
9796

9897
JedisScriptReturnConverter converter = new JedisScriptReturnConverter(returnType);
99-
return (T) connection.invoke().from(it -> it.evalsha(scriptSha, numKeys, keysAndArgs)).getOrElse(converter,
100-
() -> converter.convert(null));
98+
return (T) connection.invoke()
99+
.from(it -> it.evalsha(scriptSha, numKeys, keysAndArgs), t -> t.evalsha(scriptSha, numKeys, keysAndArgs))
100+
.getOrElse(converter, () -> converter.convert(null)
101+
);
101102
}
102103

103104
private void assertDirectMode() {

src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java

Lines changed: 0 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -75,83 +75,6 @@ public void testClosePoolPipelinedDbSelect() {
7575
}
7676

7777
// Unsupported Ops
78-
@Test
79-
public void testScriptLoadEvalSha() {
80-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testScriptLoadEvalSha);
81-
}
82-
83-
@Test
84-
public void testEvalShaArrayStrings() {
85-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalShaArrayStrings);
86-
}
87-
88-
@Test
89-
public void testEvalShaArrayBytes() {
90-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalShaArrayBytes);
91-
}
92-
93-
@Test
94-
@Disabled
95-
public void testEvalShaNotFound() {}
96-
97-
@Test
98-
@Disabled
99-
public void testEvalShaArrayError() {}
100-
101-
@Test
102-
public void testEvalReturnString() {
103-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnString);
104-
}
105-
106-
@Test
107-
public void testEvalReturnNumber() {
108-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnNumber);
109-
}
110-
111-
@Test
112-
public void testEvalReturnSingleOK() {
113-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnSingleOK);
114-
}
115-
116-
@Test
117-
@Disabled
118-
public void testEvalReturnSingleError() {}
119-
120-
@Test
121-
public void testEvalReturnFalse() {
122-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnFalse);
123-
}
124-
125-
@Test
126-
public void testEvalReturnTrue() {
127-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnTrue);
128-
}
129-
130-
@Test
131-
public void testEvalReturnArrayStrings() {
132-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayStrings);
133-
}
134-
135-
@Test
136-
public void testEvalReturnArrayNumbers() {
137-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayNumbers);
138-
}
139-
140-
@Test
141-
public void testEvalReturnArrayOKs() {
142-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayOKs);
143-
}
144-
145-
@Test
146-
public void testEvalReturnArrayFalses() {
147-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayFalses);
148-
}
149-
150-
@Test
151-
public void testEvalReturnArrayTrues() {
152-
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testEvalReturnArrayTrues);
153-
}
154-
15578
@Test
15679
public void testScriptExists() {
15780
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(super::testScriptExists);

src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionTransactionIntegrationTests.java

Lines changed: 23 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -56,79 +56,44 @@ public void tearDown() {
5656
@Disabled("Jedis issue: Transaction tries to return String instead of List<String>")
5757
public void testGetConfig() {}
5858

59-
// Unsupported Ops
60-
@Test
61-
@Disabled
62-
public void testScriptLoadEvalSha() {}
63-
64-
@Test
65-
@Disabled
66-
public void testEvalShaArrayStrings() {}
67-
68-
@Test
69-
@Disabled
70-
public void testEvalShaArrayBytes() {}
71-
7259
@Test
73-
@Disabled
74-
public void testEvalShaNotFound() {}
60+
public void testEvalShaNotFound() {
61+
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class)
62+
.isThrownBy(() -> {
63+
connection.evalSha("somefakesha", ReturnType.VALUE, 2, "key1", "key2");
64+
getResults();
65+
});
66+
}
7567

7668
@Test
7769
public void testEvalShaArrayError() {
7870
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class)
79-
.isThrownBy(() -> connection.evalSha("notasha", ReturnType.MULTI, 1, "key1", "arg1"));
71+
.isThrownBy(() -> {
72+
connection.evalSha("notasha", ReturnType.MULTI, 1, "key1", "arg1");
73+
getResults();
74+
});
8075
}
8176

8277
@Test
8378
public void testEvalArrayScriptError() {
8479
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class)
85-
.isThrownBy(() -> connection.eval("return {1,2", ReturnType.MULTI, 1, "foo", "bar"));
80+
.isThrownBy(() -> {
81+
connection.eval("return {1,2", ReturnType.MULTI, 1, "foo", "bar");
82+
getResults();
83+
});
8684
}
8785

8886
@Test
89-
@Disabled
90-
public void testEvalReturnString() {}
91-
92-
@Test
93-
@Disabled
94-
public void testEvalReturnNumber() {}
95-
96-
@Test
97-
@Disabled
98-
public void testEvalReturnSingleOK() {}
99-
100-
@Test
101-
@Disabled
102-
public void testEvalReturnSingleError() {}
103-
104-
@Test
105-
@Disabled
106-
public void testEvalReturnFalse() {}
107-
108-
@Test
109-
@Disabled
110-
public void testEvalReturnTrue() {}
111-
112-
@Test
113-
@Disabled
114-
public void testEvalReturnArrayStrings() {}
115-
116-
@Test
117-
@Disabled
118-
public void testEvalReturnArrayNumbers() {}
119-
120-
@Test
121-
@Disabled
122-
public void testEvalReturnArrayOKs() {}
123-
124-
@Test
125-
@Disabled
126-
public void testEvalReturnArrayFalses() {}
87+
public void testEvalReturnSingleError() {
88+
assertThatExceptionOfType(InvalidDataAccessApiUsageException.class)
89+
.isThrownBy(()-> {
90+
connection.eval("return redis.call('expire','foo')", ReturnType.BOOLEAN, 0);
91+
getResults();
92+
});
93+
}
12794

128-
@Test
129-
@Disabled
130-
public void testEvalReturnArrayTrues() {}
13195

96+
// Unsupported Ops
13297
@Test
13398
@Disabled
13499
public void testScriptExists() {}

0 commit comments

Comments
 (0)