Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f5d7dd2

Browse files
committed
Polish "Add missing RedisCommand enum entries for ZSet WithScores methods"
Adds convenience method to verify results in the newly added regression test in the previous commit. Also removes a few warnings in the regression test by suppressing 'rawtypes' and 'unchecked' usages. Original Pull Request: #3225 Related tickets: #3187 Signed-off-by: onobc <chris.bono@gmail.com>
1 parent 96f250d commit f5d7dd2

File tree

1 file changed

+34
-56
lines changed

1 file changed

+34
-56
lines changed

‎src/test/java/org/springframework/data/redis/core/TransactionalStringRedisTemplateTests.java‎

Lines changed: 34 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
import java.sql.SQLException;
2323
import java.util.LinkedHashMap;
2424
import java.util.Map;
25-
import java.util.Set;
2625
import java.util.stream.Stream;
2726

2827
import javax.sql.DataSource;
2928

29+
import org.assertj.core.api.InstanceOfAssertFactories;
3030
import org.junit.jupiter.api.AfterEach;
3131
import org.junit.jupiter.api.BeforeEach;
3232
import org.junit.jupiter.api.Test;
@@ -68,6 +68,7 @@ class TransactionalStringRedisTemplateTests {
6868
}
6969
}
7070

71+
@SuppressWarnings({"rawtypes", "unchecked"})
7172
@BeforeEach
7273
void beforeEach() {
7374

@@ -78,14 +79,14 @@ void beforeEach() {
7879
stringTemplate.afterPropertiesSet();
7980

8081
stringTemplate.execute((RedisCallback) con -> {
81-
con.flushDb();
82+
con.serverCommands().flushDb();
8283
return null;
8384
});
8485
}
8586

8687
@AfterEach
8788
void afterEach() {
88-
redisConnectionFactory.getConnection().flushAll();
89+
redisConnectionFactory.getConnection().serverCommands().flushAll();
8990
}
9091

9192
@Test // GH-3191
@@ -119,7 +120,6 @@ void visibilityDuringManagedTransaction() throws SQLException {
119120
.containsEntry("isMember(inside)", false);
120121
}
121122

122-
@SuppressWarnings("unchecked")
123123
@Test // GH-3187
124124
void allRangeWithScoresMethodsShouldExecuteImmediatelyInTransaction() throws SQLException {
125125

@@ -138,77 +138,55 @@ void allRangeWithScoresMethodsShouldExecuteImmediatelyInTransaction() throws SQL
138138
Map<String, Object> ops = new LinkedHashMap<>();
139139

140140
// Query data added outside transaction (should execute immediately)
141-
ops.put("rangeWithScores_before",
141+
ops.put("rangeWithScores_outside",
142142
stringTemplate.opsForZSet().rangeWithScores("testzset", 0, -1));
143-
ops.put("reverseRangeWithScores_before",
143+
ops.put("reverseRangeWithScores_outside",
144144
stringTemplate.opsForZSet().reverseRangeWithScores("testzset", 0, -1));
145-
ops.put("rangeByScoreWithScores_before",
145+
ops.put("rangeByScoreWithScores_outside",
146146
stringTemplate.opsForZSet().rangeByScoreWithScores("testzset", 1.0, 2.0));
147-
ops.put("reverseRangeByScoreWithScores_before",
147+
ops.put("reverseRangeByScoreWithScores_outside",
148148
stringTemplate.opsForZSet().reverseRangeByScoreWithScores("testzset", 1.0, 2.0));
149149

150150
// Add inside transaction (goes into multi/exec queue)
151-
ops.put("add_result", stringTemplate.opsForZSet().add("testzset", "inside", 3.0));
151+
ops.put("add_inside", stringTemplate.opsForZSet().add("testzset", "inside", 3.0));
152152

153153
// Changes made inside transaction should not be visible yet (read executes immediately)
154-
ops.put("rangeWithScores_after",
154+
ops.put("rangeWithScores_inside",
155155
stringTemplate.opsForZSet().rangeWithScores("testzset", 0, -1));
156-
ops.put("reverseRangeWithScores_after",
156+
ops.put("reverseRangeWithScores_inside",
157157
stringTemplate.opsForZSet().reverseRangeWithScores("testzset", 0, -1));
158-
ops.put("rangeByScoreWithScores_after",
158+
ops.put("rangeByScoreWithScores_inside",
159159
stringTemplate.opsForZSet().rangeByScoreWithScores("testzset", 1.0, 3.0));
160-
ops.put("reverseRangeByScoreWithScores_after",
160+
ops.put("reverseRangeByScoreWithScores_inside",
161161
stringTemplate.opsForZSet().reverseRangeByScoreWithScores("testzset", 1.0, 3.0));
162162

163163
return ops;
164164
});
165165

166166
// add result is null (no result until exec)
167-
assertThat(result).containsEntry("add_result", null);
168-
169-
// before: only data added outside transaction is visible
170-
assertThat((Set<TypedTuple<String>>) result.get("rangeWithScores_before"))
171-
.hasSize(2)
172-
.extracting(TypedTuple::getValue)
173-
.containsExactly("outside1", "outside2");
174-
175-
assertThat((Set<TypedTuple<String>>) result.get("reverseRangeWithScores_before"))
176-
.hasSize(2)
177-
.extracting(TypedTuple::getValue)
178-
.containsExactly("outside2", "outside1");
179-
180-
assertThat((Set<TypedTuple<String>>) result.get("rangeByScoreWithScores_before"))
181-
.hasSize(2)
182-
.extracting(TypedTuple::getValue)
183-
.containsExactly("outside1", "outside2");
184-
185-
assertThat((Set<TypedTuple<String>>) result.get("reverseRangeByScoreWithScores_before"))
186-
.hasSize(2)
187-
.extracting(TypedTuple::getValue)
188-
.containsExactly("outside2", "outside1");
189-
190-
// after: changes made inside transaction are still not visible
191-
assertThat((Set<TypedTuple<String>>) result.get("rangeWithScores_after"))
192-
.hasSize(2)
193-
.extracting(TypedTuple::getValue)
194-
.containsExactly("outside1", "outside2");
195-
196-
assertThat((Set<TypedTuple<String>>) result.get("reverseRangeWithScores_after"))
197-
.hasSize(2)
198-
.extracting(TypedTuple::getValue)
199-
.containsExactly("outside2", "outside1");
200-
201-
assertThat((Set<TypedTuple<String>>) result.get("rangeByScoreWithScores_after"))
202-
.hasSize(2)
203-
.extracting(TypedTuple::getValue)
204-
.containsExactly("outside1", "outside2");
205-
206-
assertThat((Set<TypedTuple<String>>) result.get("reverseRangeByScoreWithScores_after"))
207-
.hasSize(2)
208-
.extracting(TypedTuple::getValue)
209-
.containsExactly("outside2", "outside1");
167+
assertThat(result).containsEntry("add_inside", null);
168+
169+
// changes made outside transaction are visible
170+
assertThatResultForOperationContainsExactly(result, "rangeWithScores_outside", "outside1", "outside2");
171+
assertThatResultForOperationContainsExactly(result, "reverseRangeWithScores_outside", "outside2", "outside1");
172+
assertThatResultForOperationContainsExactly(result, "rangeByScoreWithScores_outside", "outside1", "outside2");
173+
assertThatResultForOperationContainsExactly(result, "reverseRangeByScoreWithScores_outside", "outside2", "outside1");
174+
175+
// changes made inside transaction are not visible (i.e. a 3rd element was added but not detected in range op)
176+
assertThatResultForOperationContainsExactly(result, "rangeWithScores_inside", "outside1", "outside2");
177+
assertThatResultForOperationContainsExactly(result, "reverseRangeWithScores_inside", "outside2", "outside1");
178+
assertThatResultForOperationContainsExactly(result, "rangeByScoreWithScores_inside", "outside1", "outside2");
179+
assertThatResultForOperationContainsExactly(result, "reverseRangeByScoreWithScores_inside", "outside2", "outside1");
210180
}
211181

182+
private void assertThatResultForOperationContainsExactly(Map<String, Object> result, String operation, String... expectedValues) {
183+
assertThat(result.get(operation))
184+
.asInstanceOf(InstanceOfAssertFactories.set(TypedTuple.class))
185+
.hasSize(expectedValues.length)
186+
.extracting(TypedTuple::getValue)
187+
.containsExactly(expectedValues);
188+
}
189+
212190
static Stream<Arguments> argumentsStream() {
213191

214192
LettuceConnectionFactory lcf = new LettuceConnectionFactory(SettingsUtils.standaloneConfiguration());

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /