Support precise sub second timeout for BZPOPMIN, BZPOPMAX.

In cases where the timeout is defined in msec we calculate a precise timeout for the BZPOP* operations.
#2102 will bring this behaviour also to List commands.

Original Pull Request: #2088
This commit is contained in:
Christoph Strobl
2021-06-28 12:42:05 +02:00
parent 739b917922
commit bdf15de653
11 changed files with 96 additions and 33 deletions

View File

@@ -2074,6 +2074,7 @@ public abstract class AbstractConnectionIntegrationTests {
@Test
void testZRemRangeByScore() {
actual.add(connection.zAdd("myset", 2, "Bob"));
actual.add(connection.zAdd("myset", 1, "James"));
actual.add(connection.zRemRangeByScore("myset", 0d, 1d));
@@ -2084,6 +2085,7 @@ public abstract class AbstractConnectionIntegrationTests {
@Test
void testZRevRank() {
actual.add(connection.zAdd("myset", 2, "Bob"));
actual.add(connection.zAdd("myset", 1, "James"));
actual.add(connection.zAdd("myset", 3, "Joe"));
@@ -2093,6 +2095,7 @@ public abstract class AbstractConnectionIntegrationTests {
@Test
void testZScore() {
actual.add(connection.zAdd("myset", 2, "Bob"));
actual.add(connection.zAdd("myset", 1, "James"));
actual.add(connection.zAdd("myset", 3, "Joe"));
@@ -2103,15 +2106,17 @@ public abstract class AbstractConnectionIntegrationTests {
@Test
@EnabledOnCommand("ZMSCORE")
void testZMScore() {
actual.add(connection.zAdd("myset", 2, "Bob"));
actual.add(connection.zAdd("myset", 1, "James"));
actual.add(connection.zAdd("myset", 3, "Joe"));
actual.add(connection.zMScore("myset", "James", "Joe"));
verifyResults(Arrays.asList(new Object[] { true, true, true, Arrays.asList(1d, 3d) }));
actual.add(connection.zMScore("myset", "James", "Joe", "Dave"));
verifyResults(Arrays.asList(new Object[] { true, true, true, Arrays.asList(1d, 3d, null) }));
}
@Test
void testZUnionStore() {
actual.add(connection.zAdd("myset", 2, "Bob"));
actual.add(connection.zAdd("myset", 1, "James"));
actual.add(connection.zAdd("myset", 5, "Joe"));
@@ -2125,6 +2130,7 @@ public abstract class AbstractConnectionIntegrationTests {
@Test
void testZUnionStoreAggWeights() {
actual.add(connection.zAdd("myset", 2, "Bob"));
actual.add(connection.zAdd("myset", 1, "James"));
actual.add(connection.zAdd("myset", 4, "Joe"));

View File

@@ -1332,12 +1332,14 @@ public class DefaultStringRedisConnectionPipelineTests extends DefaultStringRedi
@Test
public void testZMScore() {
doReturn(Collections.singletonList(Arrays.asList(1d, 3d))).when(nativeConnection).closePipeline();
super.testZMScore();
}
@Test
public void testZUnionStoreAggWeightsBytes() {
doReturn(Collections.singletonList(5L)).when(nativeConnection).closePipeline();
super.testZUnionStoreAggWeightsBytes();
}

View File

@@ -1435,6 +1435,7 @@ public class DefaultStringRedisConnectionPipelineTxTests extends DefaultStringRe
@Test
public void testZMScore() {
doReturn(Collections.singletonList(Collections.singletonList(Arrays.asList(1d, 3d)))).when(nativeConnection)
.closePipeline();
super.testZMScore();

View File

@@ -1626,6 +1626,7 @@ public class DefaultStringRedisConnectionTests {
@Test
public void testZMScore() {
doReturn(Arrays.asList(1d, 3d)).when(nativeConnection).zMScore(fooBytes, barBytes, bar2Bytes);
actual.add(connection.zMScore(foo, bar, bar2));
verifyResults(Collections.singletonList(Arrays.asList(1d, 3d)));

View File

@@ -1318,6 +1318,7 @@ public class DefaultStringRedisConnectionTxTests extends DefaultStringRedisConne
@Test
public void testZMScore() {
doReturn(Collections.singletonList(Arrays.asList(1d, 3d))).when(nativeConnection).exec();
super.testZMScore();
}

View File

@@ -121,7 +121,7 @@ public abstract class AbstractRedisZSetTestIntegration<T> extends AbstractRedisC
assertThat(zSet.first()).isEqualTo(t1);
}
@ParameterizedRedisTest
@ParameterizedRedisTest // GH-2038
@EnabledOnCommand("ZPOPMIN")
void testPopFirst() {
@@ -137,7 +137,7 @@ public abstract class AbstractRedisZSetTestIntegration<T> extends AbstractRedisC
assertThat(zSet).hasSize(2);
}
@ParameterizedRedisTest
@ParameterizedRedisTest // GH-2038
@EnabledOnCommand("ZPOPMIN")
void testPopFirstWithTimeout() {