DATAREDIS-529 - Add support for EXISTS taking multiple keys.
Original pull request: #281.
This commit is contained in:
committed by
Mark Paluch
parent
143c452313
commit
c843269804
@@ -908,6 +908,36 @@ public abstract class AbstractConnectionIntegrationTests {
|
||||
verifyResults(Arrays.asList(new Object[] { true, false }));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsWithMultipleKeys() {
|
||||
|
||||
connection.set("exist-1", "true");
|
||||
connection.set("exist-2", "true");
|
||||
connection.set("exist-3", "true");
|
||||
|
||||
actual.add(connection.exists("exist-1", "exist-2", "exist-3", "nonexistent"));
|
||||
|
||||
verifyResults(Arrays.asList(new Object[] { 3L }));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsWithMultipleKeysNoneExists() {
|
||||
|
||||
actual.add(connection.exists("no-exist-1", "no-exist-2"));
|
||||
|
||||
verifyResults(Arrays.asList(new Object[] { 0L }));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsSameKeyMultipleTimes() {
|
||||
|
||||
connection.set("existent", "true");
|
||||
|
||||
actual.add(connection.exists("existent", "existent"));
|
||||
|
||||
verifyResults(Arrays.asList(new Object[] { 2L }));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test
|
||||
public void testKeys() throws Exception {
|
||||
|
||||
@@ -23,9 +23,9 @@ import org.springframework.data.geo.Point;
|
||||
*/
|
||||
public interface ClusterConnectionTests {
|
||||
|
||||
static final Point POINT_ARIGENTO = new Point(13.583333, 37.316667);
|
||||
static final Point POINT_CATANIA = new Point(15.087269, 37.502669);
|
||||
static final Point POINT_PALERMO = new Point(13.361389, 38.115556);
|
||||
Point POINT_ARIGENTO = new Point(13.583333, 37.316667);
|
||||
Point POINT_CATANIA = new Point(15.087269, 37.502669);
|
||||
Point POINT_PALERMO = new Point(13.361389, 38.115556);
|
||||
|
||||
// DATAREDIS-315
|
||||
void shouldAllowSettingAndGettingValues();
|
||||
@@ -642,4 +642,14 @@ public interface ClusterConnectionTests {
|
||||
|
||||
// DATAREDIS-698
|
||||
void hStrLenReturnsZeroWhenKeyDoesNotExist();
|
||||
|
||||
// DATAREDIS-529
|
||||
void testExistsWithMultipleKeys();
|
||||
|
||||
// DATAREDIS-529
|
||||
void testExistsWithMultipleKeysNoneExists();
|
||||
|
||||
// DATAREDIS-529
|
||||
void testExistsSameKeyMultipleTimes();
|
||||
|
||||
}
|
||||
|
||||
@@ -2137,6 +2137,32 @@ public class JedisClusterConnectionTests implements ClusterConnectionTests {
|
||||
assertThat(clusterConnection.geoRemove(KEY_1_BYTES, ARIGENTO.getName()), is(1L));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsWithMultipleKeys() {
|
||||
|
||||
nativeConnection.set(KEY_1, "true");
|
||||
nativeConnection.set(KEY_2, "true");
|
||||
nativeConnection.set(KEY_3, "true");
|
||||
|
||||
assertThat(clusterConnection.keyCommands()
|
||||
.exists(Arrays.asList(KEY_1_BYTES, KEY_2_BYTES, KEY_3_BYTES, "nonexistent".getBytes())), is(3L));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsWithMultipleKeysNoneExists() {
|
||||
|
||||
assertThat(clusterConnection.keyCommands().exists(Arrays.asList("no-exist-1".getBytes(), "no-exist-2".getBytes())),
|
||||
is(0L));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsSameKeyMultipleTimes() {
|
||||
|
||||
nativeConnection.set(KEY_1, "true");
|
||||
|
||||
assertThat(clusterConnection.keyCommands().exists(Arrays.asList(KEY_1_BYTES, KEY_1_BYTES)), is(2L));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class) // DATAREDIS-689
|
||||
public void executeWithNoKeyAndArgsThrowsException() {
|
||||
clusterConnection.execute("KEYS", null, Collections.singletonList("*".getBytes()));
|
||||
|
||||
@@ -124,7 +124,7 @@ public class LettuceClusterConnectionTests implements ClusterConnectionTests {
|
||||
@After
|
||||
public void tearDown() throws InterruptedException {
|
||||
|
||||
clusterConnection.flushDb();
|
||||
clusterConnection.serverCommands().flushDb();
|
||||
nativeConnection.getStatefulConnection().close();
|
||||
clusterConnection.close();
|
||||
client.shutdown(0, 0, TimeUnit.MILLISECONDS);
|
||||
@@ -2146,6 +2146,32 @@ public class LettuceClusterConnectionTests implements ClusterConnectionTests {
|
||||
assertThat(clusterConnection.geoRemove(KEY_1_BYTES, ARIGENTO_BYTES.getName()), is(1L));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsWithMultipleKeys() {
|
||||
|
||||
nativeConnection.set(KEY_1, "true");
|
||||
nativeConnection.set(KEY_2, "true");
|
||||
nativeConnection.set(KEY_3, "true");
|
||||
|
||||
assertThat(clusterConnection.keyCommands()
|
||||
.exists(Arrays.asList(KEY_1_BYTES, KEY_2_BYTES, KEY_3_BYTES, "nonexistent".getBytes())), is(3L));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsWithMultipleKeysNoneExists() {
|
||||
|
||||
assertThat(clusterConnection.keyCommands().exists(Arrays.asList("no-exist-1".getBytes(), "no-exist-2".getBytes())),
|
||||
is(0L));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void testExistsSameKeyMultipleTimes() {
|
||||
|
||||
nativeConnection.set(KEY_1, "true");
|
||||
|
||||
assertThat(clusterConnection.keyCommands().exists(Arrays.asList(KEY_1_BYTES, KEY_1_BYTES)), is(2L));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-698
|
||||
public void hStrLenReturnsFieldLength() {
|
||||
|
||||
|
||||
@@ -809,6 +809,19 @@ public class RedisTemplateTests<K, V> {
|
||||
assertThat(redisTemplate.getClientList().size(), IsNot.not(0));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-529
|
||||
public void countExistingKeysReturnsNumberOfKeysCorrectly() {
|
||||
|
||||
Map<K, V> source = new LinkedHashMap<>(3, 1);
|
||||
source.put(keyFactory.instance(), valueFactory.instance());
|
||||
source.put(keyFactory.instance(), valueFactory.instance());
|
||||
source.put(keyFactory.instance(), valueFactory.instance());
|
||||
|
||||
redisTemplate.opsForValue().multiSet(source);
|
||||
|
||||
assertThat(redisTemplate.countExistingKeys(source.keySet()), is(3L));
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
private byte[] serialize(Object value, RedisSerializer serializer) {
|
||||
if (serializer == null && value instanceof byte[]) {
|
||||
|
||||
Reference in New Issue
Block a user