DATAREDIS-562 - Add reactive BitField support.
Original pull request: #227.
This commit is contained in:
@@ -16,13 +16,17 @@
|
||||
package org.springframework.data.redis.connection.lettuce;
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
|
||||
import static org.hamcrest.core.Is.is;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assume.*;
|
||||
import static org.springframework.data.redis.connection.BitFieldSubCommands.*;
|
||||
import static org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldIncrBy.Overflow.*;
|
||||
import static org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldType.*;
|
||||
import static org.springframework.data.redis.connection.BitFieldSubCommands.Offset.*;
|
||||
|
||||
import org.springframework.data.redis.util.ByteUtils;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.publisher.MonoOperator;
|
||||
import reactor.test.StepVerifier;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
@@ -46,6 +50,7 @@ import org.springframework.data.redis.connection.ReactiveStringCommands.SetComma
|
||||
import org.springframework.data.redis.connection.RedisStringCommands.BitOperation;
|
||||
import org.springframework.data.redis.core.types.Expiration;
|
||||
import org.springframework.data.redis.test.util.HexStringUtils;
|
||||
import org.springframework.data.redis.util.ByteUtils;
|
||||
|
||||
/**
|
||||
* @author Christoph Strobl
|
||||
@@ -346,6 +351,63 @@ public class LettuceReactiveStringCommandsTests extends LettuceReactiveCommandsT
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-562
|
||||
public void bitFieldSetShouldWorkCorrectly() {
|
||||
|
||||
StepVerifier
|
||||
.create(connection.stringCommands().bitField(KEY_1_BBUFFER, create().set(INT_8).valueAt(offset(0L)).to(10L)))
|
||||
.expectNext(Collections.singletonList(0L)).verifyComplete();
|
||||
|
||||
StepVerifier
|
||||
.create(connection.stringCommands().bitField(KEY_1_BBUFFER, create().set(INT_8).valueAt(offset(0L)).to(20L)))
|
||||
.expectNext(Collections.singletonList(10L)).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-562
|
||||
public void bitFieldGetShouldWorkCorrectly() {
|
||||
|
||||
StepVerifier.create(connection.stringCommands().bitField(KEY_1_BBUFFER, create().get(INT_8).valueAt(offset(0L))))
|
||||
.expectNext(Collections.singletonList(0L)).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-562
|
||||
public void bitFieldIncrByShouldWorkCorrectly() {
|
||||
|
||||
StepVerifier
|
||||
.create(connection.stringCommands().bitField(KEY_1_BBUFFER, create().incr(INT_8).valueAt(offset(100L)).by(1L)))
|
||||
.expectNext(Collections.singletonList(1L)).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-562
|
||||
public void bitFieldIncrByWithOverflowShouldWorkCorrectly() {
|
||||
|
||||
StepVerifier
|
||||
.create(connection.stringCommands().bitField(KEY_1_BBUFFER,
|
||||
create().incr(unsigned(2)).valueAt(offset(102L)).overflow(FAIL).by(1L)))
|
||||
.expectNext(Collections.singletonList(1L)).verifyComplete();
|
||||
StepVerifier
|
||||
.create(connection.stringCommands().bitField(KEY_1_BBUFFER,
|
||||
create().incr(unsigned(2)).valueAt(offset(102L)).overflow(FAIL).by(1L)))
|
||||
.expectNext(Collections.singletonList(2L)).verifyComplete();
|
||||
StepVerifier
|
||||
.create(connection.stringCommands().bitField(KEY_1_BBUFFER,
|
||||
create().incr(unsigned(2)).valueAt(offset(102L)).overflow(FAIL).by(1L)))
|
||||
.expectNext(Collections.singletonList(3L)).verifyComplete();
|
||||
StepVerifier
|
||||
.create(connection.stringCommands().bitField(KEY_1_BBUFFER,
|
||||
create().incr(unsigned(2)).valueAt(offset(102L)).overflow(FAIL).by(1L)))
|
||||
.expectNext(Collections.singletonList(null)).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-562
|
||||
public void bitfieldShouldAllowMultipleSubcommands() {
|
||||
|
||||
StepVerifier
|
||||
.create(connection.stringCommands().bitField(KEY_1_BBUFFER,
|
||||
create().incr(signed(5)).valueAt(offset(100L)).by(1L).get(unsigned(4)).valueAt(0L)))
|
||||
.expectNext(Arrays.asList(1L, 0L)).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-525
|
||||
public void bitOpAndShouldWorkAsExpected() {
|
||||
|
||||
|
||||
@@ -17,6 +17,10 @@ package org.springframework.data.redis.core;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.junit.Assume.*;
|
||||
import static org.springframework.data.redis.connection.BitFieldSubCommands.*;
|
||||
import static org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldIncrBy.Overflow.*;
|
||||
import static org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldType.*;
|
||||
import static org.springframework.data.redis.connection.BitFieldSubCommands.Offset.offset;
|
||||
|
||||
import reactor.test.StepVerifier;
|
||||
|
||||
@@ -24,6 +28,7 @@ import java.nio.ByteBuffer;
|
||||
import java.time.Duration;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -372,6 +377,25 @@ public class DefaultReactiveValueOperationsIntegrationTests<K, V> {
|
||||
StepVerifier.create(valueOperations.getBit(key, 1)).expectNext(false).expectComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-562
|
||||
public void bitField() {
|
||||
|
||||
K key = keyFactory.instance();
|
||||
|
||||
StepVerifier
|
||||
.create(valueOperations.bitField(key, create().incr(unsigned(2)).valueAt(offset(102L)).overflow(FAIL).by(1L)))
|
||||
.expectNext(Collections.singletonList(1L)).verifyComplete();
|
||||
StepVerifier
|
||||
.create(valueOperations.bitField(key, create().incr(unsigned(2)).valueAt(offset(102L)).overflow(FAIL).by(1L)))
|
||||
.expectNext(Collections.singletonList(2L)).verifyComplete();
|
||||
StepVerifier
|
||||
.create(valueOperations.bitField(key, create().incr(unsigned(2)).valueAt(offset(102L)).overflow(FAIL).by(1L)))
|
||||
.expectNext(Collections.singletonList(3L)).verifyComplete();
|
||||
StepVerifier
|
||||
.create(valueOperations.bitField(key, create().incr(unsigned(2)).valueAt(offset(102L)).overflow(FAIL).by(1L)))
|
||||
.expectNext(Collections.singletonList(null)).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-602
|
||||
public void delete() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user