Add NOMKSTREAM option to XADD command.

Closes #2047
Original pull request: #2118.
This commit is contained in:
Mark John Moreno
2021-07-13 22:40:29 +08:00
committed by Mark Paluch
parent 39d3b7c76a
commit f3f0c11f06
6 changed files with 116 additions and 10 deletions

View File

@@ -237,6 +237,23 @@ public class LettuceConnectionUnitTests {
verify(asyncCommandsMock).dispatch(eq(command.getType()), eq(command.getOutput()), any(CommandArgs.class));
}
@Test // GH-2047
void xaddShouldHonorNoMkStream() {
MapRecord<byte[], byte[], byte[]> record = MapRecord.create("key".getBytes(), Collections.emptyMap());
connection.streamCommands().xAdd(record, XAddOptions.makeNoStream());
ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class);
if (connection.isPipelined()) {
verify(asyncCommandsMock, times(1)).xadd(any(), args.capture(), anyMap());
} else {
verify(syncCommandsMock, times(1)).xadd(any(), args.capture(), anyMap());
}
assertThat(args.getValue()).extracting("nomkstream").isEqualTo(true);
}
}
public static class LettucePipelineConnectionUnitTests extends BasicUnitTests {

View File

@@ -241,4 +241,22 @@ class LettuceReactiveRedisConnectionUnitTests {
assertThat(args.getValue()).extracting("maxlen").isEqualTo(100L);
}
@Test // GH-2047
void xaddShouldHonorNoMkStream() {
LettuceReactiveRedisConnection connection = new LettuceReactiveRedisConnection(connectionProvider);
ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class);
when(reactiveCommands.xadd(any(ByteBuffer.class), args.capture(), anyMap())).thenReturn(Mono.just("1-1"));
MapRecord<ByteBuffer, ByteBuffer, ByteBuffer> record = MapRecord.create(ByteBuffer.wrap("key".getBytes()),
Collections.emptyMap());
connection.streamCommands().xAdd(Mono.just(AddStreamRecord.of(ByteBufferRecord.of(record)).makeNoStream()))
.subscribe();
assertThat(args.getValue()).extracting("nomkstream").isEqualTo(true);
}
}