Add missing zRevRangeByScore ops to StringRedisConnection

DATAREDIS-145
This commit is contained in:
Jennifer Hickey
2013-07-17 15:37:13 -07:00
parent 31c682dbde
commit ae118ff9d7
8 changed files with 153 additions and 76 deletions

View File

@@ -34,7 +34,6 @@ 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;
@@ -53,13 +52,11 @@ 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;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationUtils;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.test.annotation.IfProfileValue;
import org.springframework.test.annotation.ProfileValueSourceConfiguration;
@@ -1589,46 +1586,44 @@ public abstract class AbstractConnectionIntegrationTests {
new DefaultStringTuple("James".getBytes(), "James", 1d) })) }));
}
@SuppressWarnings("unchecked")
@Test
public void testZRevRangeByScoreOffsetCount() {
actual.add(byteConnection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(byteConnection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(byteConnection.zRevRangeByScore("myset".getBytes(), 0d, 3d, 0, 5));
assertEquals(new LinkedHashSet<String>(Arrays.asList(new String[] { "Bob", "James" })),
SerializationUtils.deserialize((Set<byte[]>) getResults().get(2), stringSerializer));
actual.add(connection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(connection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(connection.zRevRangeByScore("myset", 0d, 3d, 0, 5));
verifyResults(Arrays.asList(new Object[] {true, true,
new LinkedHashSet<String>(Arrays.asList(new String[] { "Bob", "James" }))}));
}
@SuppressWarnings("unchecked")
@Test
public void testZRevRangeByScore() {
actual.add(byteConnection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(byteConnection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(byteConnection.zRevRangeByScore("myset".getBytes(), 0d, 3d));
assertEquals(new LinkedHashSet<String>(Arrays.asList(new String[] { "Bob", "James" })),
SerializationUtils.deserialize((Set<byte[]>) getResults().get(2), stringSerializer));
actual.add(connection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(connection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(connection.zRevRangeByScore("myset", 0d, 3d));
verifyResults(Arrays.asList(new Object[] {true, true,
new LinkedHashSet<String>(Arrays.asList(new String[] { "Bob", "James" }))}));
}
@Test
public void testZRevRangeByScoreWithScoresOffsetCount() {
actual.add(byteConnection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(byteConnection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(byteConnection.zRevRangeByScoreWithScores("myset".getBytes(), 0d, 3d, 0, 1));
assertEquals(
new LinkedHashSet<Tuple>(Arrays.asList(new Tuple[] { new DefaultTuple("Bob"
.getBytes(), 2d) })), getResults().get(2));
actual.add(connection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(connection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(connection.zRevRangeByScoreWithScores("myset", 0d, 3d, 0, 1));
verifyResults(Arrays.asList(new Object[] {true, true,
new LinkedHashSet<StringTuple>(Arrays.asList(new StringTuple[] { new DefaultStringTuple("Bob"
.getBytes(), "Bob", 2d) }))}));
}
@Test
public void testZRevRangeByScoreWithScores() {
actual.add(byteConnection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(byteConnection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(byteConnection.zAdd("myset".getBytes(), 3, "Joe".getBytes()));
actual.add(byteConnection.zRevRangeByScoreWithScores("myset".getBytes(), 0d, 2d));
assertEquals(
new LinkedHashSet<Tuple>(Arrays.asList(new Tuple[] {
new DefaultTuple("Bob".getBytes(), 2d),
new DefaultTuple("James".getBytes(), 1d) })), getResults().get(3));
actual.add(connection.zAdd("myset", 2, "Bob"));
actual.add(connection.zAdd("myset", 1, "James"));
actual.add(connection.zAdd("myset", 3, "Joe"));
actual.add(connection.zRevRangeByScoreWithScores("myset", 0d, 2d));
verifyResults(Arrays.asList(new Object[] {true, true, true,
new LinkedHashSet<StringTuple>(Arrays.asList(new StringTuple[] {
new DefaultStringTuple("Bob".getBytes(), "Bob", 2d),
new DefaultStringTuple("James".getBytes(), "James", 1d) }))}));
}
@Test

View File

@@ -459,34 +459,6 @@ abstract public class AbstractConnectionTransactionIntegrationTests extends
verifyResults(Arrays.asList(new Object[] { "sup", 13l, "suckrcalifrag" }));
}
@SuppressWarnings("unchecked")
@Test
public void testZRevRangeByScoreOffsetCount() {
actual.add(byteConnection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(byteConnection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(byteConnection.zRevRangeByScore("myset".getBytes(), 0d, 3d, 0, 5));
assertEquals(Arrays.asList(new String[] { "Bob", "James" }),(List<String>) getResults().get(2));
}
@SuppressWarnings("unchecked")
@Test
public void testZRevRangeByScore() {
actual.add(byteConnection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(byteConnection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(byteConnection.zRevRangeByScore("myset".getBytes(), 0d, 3d));
assertEquals(Arrays.asList(new String[] { "Bob", "James" }), (List<String>) getResults().get(2));
}
@SuppressWarnings("unchecked")
@Test
public void testZRevRangeByScoreWithScoresOffsetCount() {
actual.add(byteConnection.zAdd("myset".getBytes(), 2, "Bob".getBytes()));
actual.add(byteConnection.zAdd("myset".getBytes(), 1, "James".getBytes()));
actual.add(byteConnection.zRevRangeByScore("myset".getBytes(), 0d, 3d, 0, 5));
assertEquals(Arrays.asList(new String[] { "Bob", "James" }),
(List<byte[]>) getResults().get(2));
}
protected void initConnection() {
connection.multi();
}

View File

@@ -1141,24 +1141,48 @@ public class DefaultStringRedisConnectionPipelineTests extends DefaultStringRedi
super.testZRevRangeByScoreOffsetCountBytes();
}
@Test
public void testZRevRangeByScoreOffsetCount() {
doReturn(Arrays.asList(new Object[] { bytesSet })).when(nativeConnection).closePipeline();
super.testZRevRangeByScoreOffsetCount();
}
@Test
public void testZRevRangeByScoreBytes() {
doReturn(Arrays.asList(new Object[] { bytesSet })).when(nativeConnection).closePipeline();
super.testZRevRangeByScoreBytes();
}
@Test
public void testZRevRangeByScore() {
doReturn(Arrays.asList(new Object[] { bytesSet })).when(nativeConnection).closePipeline();
super.testZRevRangeByScore();
}
@Test
public void testZRevRangeByScoreWithScoresOffsetCountBytes() {
doReturn(Arrays.asList(new Object[] { tupleSet })).when(nativeConnection).closePipeline();
super.testZRevRangeByScoreWithScoresOffsetCountBytes();
}
@Test
public void testZRevRangeByScoreWithScoresOffsetCount() {
doReturn(Arrays.asList(new Object[] { tupleSet })).when(nativeConnection).closePipeline();
super.testZRevRangeByScoreWithScoresOffsetCount();
}
@Test
public void testZRevRangeByScoreWithScoresBytes() {
doReturn(Arrays.asList(new Object[] { tupleSet })).when(nativeConnection).closePipeline();
super.testZRevRangeByScoreWithScoresBytes();
}
@Test
public void testZRevRangeByScoreWithScores() {
doReturn(Arrays.asList(new Object[] { tupleSet })).when(nativeConnection).closePipeline();
super.testZRevRangeByScoreWithScores();
}
@Test
public void testZRankBytes() {
doReturn(Arrays.asList(new Object[] { 5l })).when(nativeConnection).closePipeline();

View File

@@ -1361,6 +1361,13 @@ public class DefaultStringRedisConnectionTests {
verifyResults(Arrays.asList(new Object[] { bytesSet }));
}
@Test
public void testZRevRangeByScoreOffsetCount() {
doReturn(bytesSet).when(nativeConnection).zRevRangeByScore(fooBytes, 1d, 3d, 5l, 7l);
actual.add(connection.zRevRangeByScore(foo, 1d, 3d, 5l, 7l));
verifyResults(Arrays.asList(new Object[] { stringSet }));
}
@Test
public void testZRevRangeByScoreBytes() {
doReturn(bytesSet).when(nativeConnection).zRevRangeByScore(fooBytes, 1d, 3d);
@@ -1368,6 +1375,13 @@ public class DefaultStringRedisConnectionTests {
verifyResults(Arrays.asList(new Object[] { bytesSet }));
}
@Test
public void testZRevRangeByScore() {
doReturn(bytesSet).when(nativeConnection).zRevRangeByScore(fooBytes, 1d, 3d);
actual.add(connection.zRevRangeByScore(foo, 1d, 3d));
verifyResults(Arrays.asList(new Object[] { stringSet }));
}
@Test
public void testZRevRangeByScoreWithScoresOffsetCountBytes() {
doReturn(tupleSet).when(nativeConnection).zRevRangeByScoreWithScores(fooBytes, 1d, 3d, 5l,
@@ -1376,6 +1390,14 @@ public class DefaultStringRedisConnectionTests {
verifyResults(Arrays.asList(new Object[] { tupleSet }));
}
@Test
public void testZRevRangeByScoreWithScoresOffsetCount() {
doReturn(tupleSet).when(nativeConnection).zRevRangeByScoreWithScores(fooBytes, 1d, 3d, 5l,
7l);
actual.add(connection.zRevRangeByScoreWithScores(foo, 1d, 3d, 5l, 7l));
verifyResults(Arrays.asList(new Object[] { stringTupleSet }));
}
@Test
public void testZRevRangeByScoreWithScoresBytes() {
doReturn(tupleSet).when(nativeConnection).zRevRangeByScoreWithScores(fooBytes, 1d, 3d);
@@ -1383,6 +1405,13 @@ public class DefaultStringRedisConnectionTests {
verifyResults(Arrays.asList(new Object[] { tupleSet }));
}
@Test
public void testZRevRangeByScoreWithScores() {
doReturn(tupleSet).when(nativeConnection).zRevRangeByScoreWithScores(fooBytes, 1d, 3d);
actual.add(connection.zRevRangeByScoreWithScores(foo, 1d, 3d));
verifyResults(Arrays.asList(new Object[] { stringTupleSet }));
}
@Test
public void testZRankBytes() {
doReturn(5l).when(nativeConnection).zRank(fooBytes, barBytes);

View File

@@ -56,7 +56,6 @@ public class LettuceConnectionTransactionIntegrationTests extends
private boolean convertListToSet;
private boolean convertToStringTuple=true;
@Test
@Ignore("Exceptions on native execute are swallowed in tx")
@@ -118,6 +117,18 @@ public class LettuceConnectionTransactionIntegrationTests extends
super.testZRangeByScoreWithScoresOffsetCount();
}
@Test
public void testZRevRangeByScoreOffsetCount() {
convertListToSet = true;
super.testZRevRangeByScoreOffsetCount();
}
@Test
public void testZRevRangeByScore() {
convertListToSet = true;
super.testZRevRangeByScore();
}
@Test
public void testZRevRange() {
convertListToSet = true;
@@ -195,12 +206,6 @@ public class LettuceConnectionTransactionIntegrationTests extends
super.testSortStoreNullParams();
}
@Test
public void testZRevRangeByScoreWithScores() {
convertToStringTuple = false;
super.testZRevRangeByScoreWithScores();
}
@Test
public void testMove() {
connection.set("foo", "bar");
@@ -242,11 +247,8 @@ public class LettuceConnectionTransactionIntegrationTests extends
if (convertedResult instanceof List && !(((List) result).isEmpty())
&& ((List) convertedResult).get(0) instanceof ScoredValue) {
Set<Tuple> tuples = LettuceConverters.toTupleSet((List) convertedResult);
if(convertToStringTuple) {
return new SetConverter<Tuple, StringTuple>(new TupleConverter())
return new SetConverter<Tuple, StringTuple>(new TupleConverter())
.convert(tuples);
}
return tuples;
}
if (convertListToSet && convertedResult instanceof List) {
return new LinkedHashSet((List) convertedResult);

View File

@@ -58,8 +58,6 @@ public class SrpConnectionTransactionIntegrationTests extends AbstractConnection
protected boolean convertResultToStringTuples=false;
protected boolean convertResultToTuples=false;
protected boolean convertBooleanToLong=false;
protected boolean convertResultsToMap=false;
@@ -254,10 +252,30 @@ public class SrpConnectionTransactionIntegrationTests extends AbstractConnection
@Test
public void testZRevRangeByScoreWithScores() {
convertResultToTuples = true;
convertResultToStringTuples = true;
convertResultToSet = true;
super.testZRevRangeByScoreWithScores();
}
@Test
public void testZRevRangeByScoreOffsetCount() {
convertResultToSet = true;
super.testZRevRangeByScoreOffsetCount();
}
@Test
public void testZRevRangeByScore() {
convertResultToSet = true;
super.testZRevRangeByScore();
}
@Test
public void testZRevRangeByScoreWithScoresOffsetCount() {
convertResultToStringTuples = true;
convertResultToSet = true;
super.testZRevRangeByScoreWithScoresOffsetCount();
}
@Test
public void testZRem() {
convertResultToSet = true;
@@ -367,10 +385,7 @@ public class SrpConnectionTransactionIntegrationTests extends AbstractConnection
stringTuples.add(new DefaultStringTuple(tuple, new String(tuple.getValue())));
}
return stringTuples;
} else if(convertResultToTuples) {
return SrpConverters.toTupleSet((Reply[])convertedResult);
}
else if (convertResultToSet) {
} else if (convertResultToSet) {
return SerializationUtils.deserialize(SrpConverters.toBytesSet((Reply[])convertedResult),
stringSerializer);
} else if(((Reply[]) convertedResult).length > 0 && ((Reply[])convertedResult)[0] instanceof IntegerReply) {