|
50 | 50 | import org.springframework.dao.InvalidDataAccessResourceUsageException; |
51 | 51 | import org.springframework.data.redis.connection.AbstractConnectionUnitTestBase; |
52 | 52 | import org.springframework.data.redis.connection.RedisServerCommands.ShutdownOption; |
53 | | -import org.springframework.data.redis.connection.RedisStreamCommands; |
54 | 53 | import org.springframework.data.redis.connection.RedisStreamCommands.TrimOptions; |
55 | 54 | import org.springframework.data.redis.connection.RedisStreamCommands.XAddOptions; |
56 | 55 | import org.springframework.data.redis.connection.RedisStreamCommands.XClaimOptions; |
57 | 56 | import org.springframework.data.redis.connection.RedisStreamCommands.XTrimOptions; |
58 | 57 | import org.springframework.data.redis.connection.stream.MapRecord; |
59 | | -import org.springframework.data.redis.connection.stream.RecordId; |
60 | 58 | import org.springframework.data.redis.connection.zset.Tuple; |
61 | 59 | import org.springframework.data.redis.core.Cursor; |
62 | 60 | import org.springframework.data.redis.core.KeyScanOptions; |
@@ -201,15 +199,25 @@ void translatesPipelineUnknownExceptions() { |
201 | 199 | } |
202 | 200 |
|
203 | 201 | @Test // DATAREDIS-1122 |
204 | | - void xaddShouldHonorMaxlen() { |
| 202 | + void xaddShouldPassOptionsToConverter() { |
205 | 203 |
|
206 | 204 | MapRecord<byte[], byte[], byte[]> record = MapRecord.create("key".getBytes(), Collections.emptyMap()); |
207 | 205 |
|
208 | 206 | connection.streamCommands().xAdd(record, XAddOptions.maxlen(100)); |
209 | 207 | ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class); |
210 | 208 | verify(asyncCommandsMock).xadd(any(), args.capture(), anyMap()); |
211 | 209 |
|
212 | | - assertThat(args.getValue()).extracting("maxlen").isEqualTo(100L); |
| 210 | + assertThat(args.getValue()).isNotNull(); |
| 211 | + } |
| 212 | + |
| 213 | + @Test // GH-3232 |
| 214 | + void xtrimShouldPassOptionsToConverter() { |
| 215 | + |
| 216 | + connection.streamCommands().xTrim("key".getBytes(), XTrimOptions.trim(TrimOptions.maxLen(100))); |
| 217 | + ArgumentCaptor<XTrimArgs> args = ArgumentCaptor.forClass(XTrimArgs.class); |
| 218 | + verify(asyncCommandsMock).xtrim(any(), args.capture()); |
| 219 | + |
| 220 | + assertThat(args.getValue()).isNotNull(); |
213 | 221 | } |
214 | 222 |
|
215 | 223 | @Test // DATAREDIS-1226 |
@@ -251,146 +259,6 @@ void executeShouldPassThruCustomCommands() { |
251 | 259 | verify(asyncCommandsMock).dispatch(eq(command.getType()), eq(command.getOutput()), any(CommandArgs.class)); |
252 | 260 | } |
253 | 261 |
|
254 | | - @Test // GH-2047 |
255 | | - void xaddShouldHonorNoMkStream() { |
256 | | - |
257 | | - MapRecord<byte[], byte[], byte[]> record = MapRecord.create("key".getBytes(), Collections.emptyMap()); |
258 | | - |
259 | | - connection.streamCommands().xAdd(record, XAddOptions.makeNoStream()); |
260 | | - ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class); |
261 | | - verify(asyncCommandsMock).xadd(any(), args.capture(), anyMap()); |
262 | | - |
263 | | - assertThat(args.getValue()).extracting("nomkstream").isEqualTo(true); |
264 | | - } |
265 | | - |
266 | | - @Test // GH-3232 |
267 | | - void xaddShouldHonorMinId() { |
268 | | - |
269 | | - MapRecord<byte[], byte[], byte[]> record = MapRecord.create("key".getBytes(), Collections.emptyMap()); |
270 | | - |
271 | | - XAddOptions options = XAddOptions.none(); |
272 | | - connection.streamCommands().xAdd(record, options.minId(RecordId.of("1234567890-0"))); |
273 | | - ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class); |
274 | | - verify(asyncCommandsMock).xadd(any(), args.capture(), anyMap()); |
275 | | - |
276 | | - assertThat(ReflectionTestUtils.getField(args.getValue(), "minid")).isEqualTo("1234567890-0"); |
277 | | - } |
278 | | - |
279 | | - @Test // GH-3232 |
280 | | - void xaddShouldHonorLimit() { |
281 | | - |
282 | | - MapRecord<byte[], byte[], byte[]> record = MapRecord.create("key".getBytes(), Collections.emptyMap()); |
283 | | - |
284 | | - connection.streamCommands().xAdd(record, XAddOptions.trim(TrimOptions.maxLen(100).approximate().limit(50))); |
285 | | - ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class); |
286 | | - verify(asyncCommandsMock).xadd(any(), args.capture(), anyMap()); |
287 | | - |
288 | | - assertThat(args.getValue()).extracting("limit").isEqualTo(50L); |
289 | | - } |
290 | | - |
291 | | - @Test // GH-3232 |
292 | | - void xaddShouldHonorExactTrimming() { |
293 | | - |
294 | | - MapRecord<byte[], byte[], byte[]> record = MapRecord.create("key".getBytes(), Collections.emptyMap()); |
295 | | - |
296 | | - connection.streamCommands().xAdd(record, XAddOptions.trim(TrimOptions.maxLen(100).exact())); |
297 | | - ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class); |
298 | | - verify(asyncCommandsMock).xadd(any(), args.capture(), anyMap()); |
299 | | - |
300 | | - assertThat(args.getValue()).extracting("exactTrimming").isEqualTo(true); |
301 | | - } |
302 | | - |
303 | | - @Test // GH-3232 |
304 | | - void xaddShouldHonorApproximateTrimming() { |
305 | | - |
306 | | - MapRecord<byte[], byte[], byte[]> record = MapRecord.create("key".getBytes(), Collections.emptyMap()); |
307 | | - |
308 | | - connection.streamCommands().xAdd(record, XAddOptions.maxlen(100).approximateTrimming(true)); |
309 | | - ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class); |
310 | | - verify(asyncCommandsMock).xadd(any(), args.capture(), anyMap()); |
311 | | - |
312 | | - assertThat(args.getValue()).extracting("approximateTrimming").isEqualTo(true); |
313 | | - } |
314 | | - |
315 | | - @Test // GH-3232 |
316 | | - void xaddShouldHonorDeletionPolicy() { |
317 | | - |
318 | | - MapRecord<byte[], byte[], byte[]> record = MapRecord.create("key".getBytes(), Collections.emptyMap()); |
319 | | - |
320 | | - connection.streamCommands().xAdd(record, |
321 | | - XAddOptions.trim(TrimOptions.maxLen(100).deletionPolicy(RedisStreamCommands.StreamDeletionPolicy.keep()))); |
322 | | - ArgumentCaptor<XAddArgs> args = ArgumentCaptor.forClass(XAddArgs.class); |
323 | | - verify(asyncCommandsMock).xadd(any(), args.capture(), anyMap()); |
324 | | - |
325 | | - assertThat(args.getValue()).extracting("trimmingMode").isEqualTo(io.lettuce.core.StreamDeletionPolicy.KEEP_REFERENCES); |
326 | | - } |
327 | | - |
328 | | - @Test // GH-3232 |
329 | | - void xtrimShouldHonorMaxlen() { |
330 | | - |
331 | | - connection.streamCommands().xTrim("key".getBytes(), XTrimOptions.trim(TrimOptions.maxLen(100))); |
332 | | - ArgumentCaptor<XTrimArgs> args = ArgumentCaptor.forClass(XTrimArgs.class); |
333 | | - verify(asyncCommandsMock).xtrim(any(), args.capture()); |
334 | | - |
335 | | - assertThat(args.getValue()).extracting("maxlen").isEqualTo(100L); |
336 | | - } |
337 | | - |
338 | | - @Test // GH-3232 |
339 | | - void xtrimShouldHonorMinId() { |
340 | | - |
341 | | - connection.streamCommands().xTrim("key".getBytes(), |
342 | | - XTrimOptions.trim(TrimOptions.minId(RecordId.of("1234567890-0")))); |
343 | | - ArgumentCaptor<XTrimArgs> args = ArgumentCaptor.forClass(XTrimArgs.class); |
344 | | - verify(asyncCommandsMock).xtrim(any(), args.capture()); |
345 | | - |
346 | | - assertThat(ReflectionTestUtils.getField(args.getValue(), "minId")).isEqualTo("1234567890-0"); |
347 | | - } |
348 | | - |
349 | | - @Test // GH-3232 |
350 | | - void xtrimShouldHonorApproximateTrimming() { |
351 | | - |
352 | | - connection.streamCommands().xTrim("key".getBytes(), |
353 | | - XTrimOptions.trim(TrimOptions.maxLen(100).approximate())); |
354 | | - ArgumentCaptor<XTrimArgs> args = ArgumentCaptor.forClass(XTrimArgs.class); |
355 | | - verify(asyncCommandsMock).xtrim(any(), args.capture()); |
356 | | - |
357 | | - assertThat(args.getValue()).extracting("approximateTrimming").isEqualTo(true); |
358 | | - } |
359 | | - |
360 | | - @Test // GH-3232 |
361 | | - void xtrimShouldHonorExactTrimming() { |
362 | | - |
363 | | - connection.streamCommands().xTrim("key".getBytes(), |
364 | | - XTrimOptions.trim(TrimOptions.maxLen(100).exact())); |
365 | | - ArgumentCaptor<XTrimArgs> args = ArgumentCaptor.forClass(XTrimArgs.class); |
366 | | - verify(asyncCommandsMock).xtrim(any(), args.capture()); |
367 | | - |
368 | | - assertThat(args.getValue()).extracting("exactTrimming").isEqualTo(true); |
369 | | - } |
370 | | - |
371 | | - @Test // GH-3232 |
372 | | - void xtrimShouldHonorLimit() { |
373 | | - |
374 | | - connection.streamCommands().xTrim("key".getBytes(), |
375 | | - XTrimOptions.trim(TrimOptions.maxLen(100).approximate().limit(50))); |
376 | | - ArgumentCaptor<XTrimArgs> args = ArgumentCaptor.forClass(XTrimArgs.class); |
377 | | - verify(asyncCommandsMock).xtrim(any(), args.capture()); |
378 | | - |
379 | | - assertThat(args.getValue()).extracting("limit").isEqualTo(50L); |
380 | | - } |
381 | | - |
382 | | - @Test // GH-3232 |
383 | | - void xtrimShouldHonorDeletionPolicy() { |
384 | | - |
385 | | - connection.streamCommands().xTrim("key".getBytes(), XTrimOptions.trim(TrimOptions.maxLen(100) |
386 | | - .deletionPolicy(RedisStreamCommands.StreamDeletionPolicy.keep()))); |
387 | | - ArgumentCaptor<XTrimArgs> args = ArgumentCaptor.forClass(XTrimArgs.class); |
388 | | - verify(asyncCommandsMock).xtrim(any(), args.capture()); |
389 | | - |
390 | | - assertThat(args.getValue()).extracting("trimmingMode") |
391 | | - .isEqualTo(io.lettuce.core.StreamDeletionPolicy.KEEP_REFERENCES); |
392 | | - } |
393 | | - |
394 | 262 | @Test // GH-2796 |
395 | 263 | void scanShouldOperateUponUnsigned64BitCursorId() { |
396 | 264 |
|
|
0 commit comments