Invoke correct BZPOPMAX method when called with a Duration.

`ZSetOperations.popMax(K key, Duration timeout)` now calls `popMax` instead the previously incorrect method `popMin`.

Closes #2323
This commit is contained in:
Jens Deppe
2022-09-16 05:24:18 -07:00
committed by Mark Paluch
parent da9a0e0b4e
commit d1252689f6
2 changed files with 8 additions and 1 deletions

View File

@@ -525,7 +525,7 @@ public interface ZSetOperations<K, V> {
Assert.notNull(timeout, "Timeout must not be null");
Assert.isTrue(!timeout.isNegative(), "Timeout must not be negative");
return popMin(key, TimeoutUtils.toSeconds(timeout), TimeUnit.SECONDS);
return popMax(key, TimeoutUtils.toSeconds(timeout), TimeUnit.SECONDS);
}
/**

View File

@@ -20,6 +20,7 @@ import static org.assertj.core.api.Assumptions.*;
import static org.assertj.core.data.Offset.offset;
import java.io.IOException;
import java.time.Duration;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -137,16 +138,19 @@ public class DefaultZSetOperationsIntegrationTests<K, V> {
void testPopMin() {
K key = keyFactory.instance();
V value0 = valueFactory.instance();
V value1 = valueFactory.instance();
V value2 = valueFactory.instance();
V value3 = valueFactory.instance();
V value4 = valueFactory.instance();
zSetOps.add(key, value0, 0);
zSetOps.add(key, value1, 1);
zSetOps.add(key, value2, 2);
zSetOps.add(key, value3, 3);
zSetOps.add(key, value4, 4);
assertThat(zSetOps.popMin(key, Duration.ofSeconds(1))).isEqualTo(new DefaultTypedTuple<>(value0, 0d));
assertThat(zSetOps.popMin(key)).isEqualTo(new DefaultTypedTuple<>(value1, 1d));
assertThat(zSetOps.popMin(key, 2)).containsExactly(new DefaultTypedTuple<>(value2, 2d),
new DefaultTypedTuple<>(value3, 3d));
@@ -162,12 +166,15 @@ public class DefaultZSetOperationsIntegrationTests<K, V> {
V value2 = valueFactory.instance();
V value3 = valueFactory.instance();
V value4 = valueFactory.instance();
V value5 = valueFactory.instance();
zSetOps.add(key, value1, 1);
zSetOps.add(key, value2, 2);
zSetOps.add(key, value3, 3);
zSetOps.add(key, value4, 4);
zSetOps.add(key, value5, 5);
assertThat(zSetOps.popMax(key, Duration.ofSeconds(1))).isEqualTo(new DefaultTypedTuple<>(value5, 5d));
assertThat(zSetOps.popMax(key)).isEqualTo(new DefaultTypedTuple<>(value4, 4d));
assertThat(zSetOps.popMax(key, 2)).containsExactly(new DefaultTypedTuple<>(value3, 3d),
new DefaultTypedTuple<>(value2, 2d));