Support zAdd with multiple values
DATAREDIS-99
This commit is contained in:
@@ -34,6 +34,7 @@ import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.BlockingDeque;
|
||||
import java.util.concurrent.LinkedBlockingDeque;
|
||||
@@ -52,6 +53,7 @@ import org.springframework.data.redis.TestCondition;
|
||||
import org.springframework.data.redis.connection.RedisListCommands.Position;
|
||||
import org.springframework.data.redis.connection.RedisStringCommands.BitOperation;
|
||||
import org.springframework.data.redis.connection.RedisZSetCommands.Aggregate;
|
||||
import org.springframework.data.redis.connection.RedisZSetCommands.Tuple;
|
||||
import org.springframework.data.redis.connection.SortParameters.Order;
|
||||
import org.springframework.data.redis.connection.StringRedisConnection.StringTuple;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
@@ -1472,7 +1474,22 @@ public abstract class AbstractConnectionIntegrationTests {
|
||||
actual.add(connection.zAdd("myset", 2, "Bob"));
|
||||
actual.add(connection.zAdd("myset", 1, "James"));
|
||||
actual.add(connection.zRange("myset", 0, -1));
|
||||
verifyResults(Arrays.asList(new Object[] { true, true, new LinkedHashSet<String>(Arrays.asList(new String[] { "James", "Bob" })) }));
|
||||
verifyResults(Arrays.asList(new Object[] { true, true,
|
||||
new LinkedHashSet<String>(Arrays.asList(new String[] { "James", "Bob" })) }));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultiple() {
|
||||
Set<StringTuple> strTuples = new HashSet<StringTuple>();
|
||||
strTuples.add(new DefaultStringTuple("Bob".getBytes(), "Bob", 2.0));
|
||||
strTuples.add(new DefaultStringTuple("James".getBytes(), "James", 1.0));
|
||||
Set<Tuple> tuples = new HashSet<Tuple>();
|
||||
tuples.add(new DefaultTuple("Joe".getBytes(), 2.5));
|
||||
actual.add(connection.zAdd("myset",strTuples));
|
||||
actual.add(connection.zAdd("myset".getBytes(), tuples));
|
||||
actual.add(connection.zRange("myset", 0, -1));
|
||||
verifyResults(Arrays.asList(new Object[] { 2l, 1l,
|
||||
new LinkedHashSet<String>(Arrays.asList(new String[] { "James", "Bob", "Joe" })) }));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -997,6 +997,18 @@ public class DefaultStringRedisConnectionPipelineTests extends DefaultStringRedi
|
||||
super.testZAdd();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultipleBytes() {
|
||||
doReturn(Arrays.asList(new Object[] { 1l })).when(nativeConnection).closePipeline();
|
||||
super.testZAddMultipleBytes();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultiple() {
|
||||
doReturn(Arrays.asList(new Object[] { 1l })).when(nativeConnection).closePipeline();
|
||||
super.testZAddMultiple();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZCardBytes() {
|
||||
doReturn(Arrays.asList(new Object[] { 5l })).when(nativeConnection).closePipeline();
|
||||
|
||||
@@ -965,6 +965,18 @@ public class DefaultStringRedisConnectionPipelineTxTests extends
|
||||
super.testZAdd();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultipleBytes() {
|
||||
doReturn(Arrays.asList(new Object[] { Arrays.asList(new Object[] { 1l })})).when(nativeConnection).closePipeline();
|
||||
super.testZAddMultipleBytes();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultiple() {
|
||||
doReturn(Arrays.asList(new Object[] { Arrays.asList(new Object[] { 1l })})).when(nativeConnection).closePipeline();
|
||||
super.testZAddMultiple();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZCardBytes() {
|
||||
doReturn(Arrays.asList(new Object[] {Arrays.asList(new Object[] { 5l })})).when(nativeConnection).closePipeline();
|
||||
|
||||
@@ -1190,6 +1190,26 @@ public class DefaultStringRedisConnectionTests {
|
||||
verifyResults(Arrays.asList(new Object[] { true }));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultipleBytes() {
|
||||
Set<Tuple> tuples = new HashSet<Tuple>();
|
||||
tuples.add(new DefaultTuple(barBytes, 3.0));
|
||||
doReturn(1l).when(nativeConnection).zAdd(fooBytes, tuples);
|
||||
actual.add(connection.zAdd(fooBytes, tuples));
|
||||
verifyResults(Arrays.asList(new Object[] { 1l }));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultiple() {
|
||||
Set<Tuple> tuples = new HashSet<Tuple>();
|
||||
tuples.add(new DefaultTuple(barBytes, 3.0));
|
||||
Set<StringTuple> strTuples = new HashSet<StringTuple>();
|
||||
strTuples.add(new DefaultStringTuple(barBytes, bar, 3.0));
|
||||
doReturn(1l).when(nativeConnection).zAdd(fooBytes, tuples);
|
||||
actual.add(connection.zAdd(foo, strTuples));
|
||||
verifyResults(Arrays.asList(new Object[] { 1l }));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZCardBytes() {
|
||||
doReturn(5l).when(nativeConnection).zCard(fooBytes);
|
||||
|
||||
@@ -964,6 +964,18 @@ public class DefaultStringRedisConnectionTxTests extends DefaultStringRedisConne
|
||||
super.testZAdd();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultipleBytes() {
|
||||
doReturn(Arrays.asList(new Object[] { 1l })).when(nativeConnection).exec();
|
||||
super.testZAddMultipleBytes();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZAddMultiple() {
|
||||
doReturn(Arrays.asList(new Object[] { 1l })).when(nativeConnection).exec();
|
||||
super.testZAddMultiple();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZCardBytes() {
|
||||
doReturn(Arrays.asList(new Object[] { 5l })).when(nativeConnection).exec();
|
||||
|
||||
@@ -16,14 +16,19 @@
|
||||
|
||||
package org.springframework.data.redis.connection.jedis;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.dao.InvalidDataAccessApiUsageException;
|
||||
import org.springframework.data.redis.SettingsUtils;
|
||||
import org.springframework.data.redis.connection.AbstractConnectionIntegrationTests;
|
||||
import org.springframework.data.redis.connection.DefaultStringTuple;
|
||||
import org.springframework.data.redis.connection.RedisConnection;
|
||||
import org.springframework.data.redis.connection.ReturnType;
|
||||
import org.springframework.data.redis.connection.StringRedisConnection.StringTuple;
|
||||
import org.springframework.test.annotation.IfProfileValue;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
@@ -218,6 +223,14 @@ public class JedisConnectionIntegrationTests extends AbstractConnectionIntegrati
|
||||
factory2.destroy();
|
||||
}
|
||||
|
||||
@Test(expected=UnsupportedOperationException.class)
|
||||
public void testZAddSameScores() {
|
||||
Set<StringTuple> strTuples = new HashSet<StringTuple>();
|
||||
strTuples.add(new DefaultStringTuple("Bob".getBytes(), "Bob", 2.0));
|
||||
strTuples.add(new DefaultStringTuple("James".getBytes(), "James", 2.0));
|
||||
connection.zAdd("myset", strTuples);
|
||||
}
|
||||
|
||||
@Test(expected=InvalidDataAccessApiUsageException.class)
|
||||
@IfProfileValue(name = "redisVersion", value = "2.6")
|
||||
public void testEvalReturnSingleError() {
|
||||
|
||||
@@ -451,4 +451,9 @@ public class JedisConnectionPipelineIntegrationTests extends
|
||||
public void testSRemMultiple() {
|
||||
super.testSRemMultiple();
|
||||
}
|
||||
|
||||
@Test(expected=UnsupportedOperationException.class)
|
||||
public void testZAddMultiple() {
|
||||
super.testZAddMultiple();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,4 +387,9 @@ public class JedisConnectionTransactionIntegrationTests extends
|
||||
public void testSRemMultiple() {
|
||||
super.testSRemMultiple();
|
||||
}
|
||||
|
||||
@Test(expected=UnsupportedOperationException.class)
|
||||
public void testZAddMultiple() {
|
||||
super.testZAddMultiple();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -585,6 +585,11 @@ public class JRedisConnectionIntegrationTests extends AbstractConnectionIntegrat
|
||||
super.testSRemMultiple();
|
||||
}
|
||||
|
||||
@Test(expected=UnsupportedOperationException.class)
|
||||
public void testZAddMultiple() {
|
||||
super.testZAddMultiple();
|
||||
}
|
||||
|
||||
// Jredis returns null for rPush and lPush
|
||||
@Test
|
||||
public void testLLen() {
|
||||
|
||||
@@ -21,6 +21,8 @@ import static org.springframework.data.redis.matcher.RedisTestMatchers.isEqual;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -156,4 +158,22 @@ public class DefaultZSetOperationsTests<K,V> {
|
||||
TypedTuple<V> tuple = tuples.iterator().next();
|
||||
assertThat(tuple, isEqual(new DefaultTypedTuple<V>(value2, 3.7)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddMultiple() {
|
||||
K key = keyFactory.instance();
|
||||
V value1 = valueFactory.instance();
|
||||
V value2 = valueFactory.instance();
|
||||
V value3 = valueFactory.instance();
|
||||
Set<TypedTuple<V>> values = new HashSet<TypedTuple<V>>();
|
||||
values.add(new DefaultTypedTuple<V>(value1, 1.7));
|
||||
values.add(new DefaultTypedTuple<V>(value2, 3.2));
|
||||
values.add(new DefaultTypedTuple<V>(value3, 0.8));
|
||||
assertEquals(Long.valueOf(3), zSetOps.add(key, values));
|
||||
Set<V> expected = new LinkedHashSet<V>();
|
||||
expected.add(value3);
|
||||
expected.add(value1);
|
||||
expected.add(value2);
|
||||
assertThat(zSetOps.range(key, 0, -1), isEqual(expected));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user