Added zRangeStoreByLex and zRangeStoreByScore for ZRANGESTORE command.

Original pull request: #2370.
Closes #2345
This commit is contained in:
Shyngys Sapraliyev
2022-07-17 04:31:08 +06:00
committed by Mark Paluch
parent e61d9e7137
commit 40d078f66d
11 changed files with 405 additions and 0 deletions

View File

@@ -106,6 +106,7 @@ import org.springframework.data.util.Streamable;
* @author Dejan Jankov
* @author Andrey Shlykov
* @author Hendrik Duerkop
* @author Shyngys Sapraliyev
*/
public abstract class AbstractConnectionIntegrationTests {
@@ -4068,6 +4069,44 @@ public abstract class AbstractConnectionIntegrationTests {
assertThat(info.size()).isZero();
}
@Test //GH-2345
public void zRangeStoreStoresKeysCreatedByZAddByScore() {
final String dstKey = KEY_2;
final String srcKey = KEY_1;
actual.add(connection.zAdd(srcKey, 1, VALUE_1));
actual.add(connection.zAdd(srcKey, 2, VALUE_2));
actual.add(connection.zAdd(srcKey, 3, VALUE_3));
actual.add(connection.zAdd(srcKey, 4, VALUE_4));
actual.add(connection.zRangeStoreByScore(dstKey, srcKey, 3, 4));
actual.add(connection.zRange(dstKey, 0, -1));
List<Object> result = getResults();
assertThat(result.get(0)).isEqualTo(true);
assertThat(result.get(1)).isEqualTo(true);
assertThat(result.get(2)).isEqualTo(true);
assertThat(result.get(3)).isEqualTo(true);
assertThat(result.get(4)).isEqualTo(2L);
assertThat((LinkedHashSet<Object>) result.get(5)).containsSequence(VALUE_3, VALUE_4);
}
@Test //GH-2345
public void zRangeStoreStoresKeysCreatedByZAddByLex() {
final String dstKey = KEY_2;
final String srcKey = KEY_1;
actual.add(connection.zAdd(srcKey, 0, VALUE_3));
actual.add(connection.zAdd(srcKey, 0, VALUE_1));
actual.add(connection.zAdd(srcKey, 0, VALUE_4));
actual.add(connection.zAdd(srcKey, 0, VALUE_2));
actual.add(connection.zRangeStoreByLex(dstKey, srcKey, Range.rightUnbounded(Bound.inclusive(VALUE_3))));
actual.add(connection.zRange(dstKey, 0, -1));
List<Object> result = getResults();
assertThat(result.get(0)).isEqualTo(true);
assertThat(result.get(1)).isEqualTo(true);
assertThat(result.get(2)).isEqualTo(true);
assertThat(result.get(3)).isEqualTo(true);
assertThat(result.get(4)).isEqualTo(2L);
assertThat((LinkedHashSet<Object>) result.get(5)).containsSequence(VALUE_3, VALUE_4);
}
protected void verifyResults(List<Object> expected) {
assertThat(getResults()).isEqualTo(expected);
}

View File

@@ -29,6 +29,7 @@ public abstract class ClusterTestVariables {
public static final String VALUE_1 = "value1";
public static final String VALUE_2 = "value2";
public static final String VALUE_3 = "value3";
public static final String VALUE_4 = "value4";
public static final String SAME_SLOT_KEY_1 = "key2660";
public static final String SAME_SLOT_KEY_2 = "key7112";