From 7e54283db0eea6b7d55c10485de666d277ab3b65 Mon Sep 17 00:00:00 2001 From: M Sazzadul Hoque <7600764+sazzad16@users.noreply.github.com> Date: Wed, 27 Mar 2024 17:40:49 +0600 Subject: [PATCH] xreadgroup command test --- .../commands/jedis/StreamsCommandsTest.java | 61 ++++++++++++------- .../pipeline/StreamsPipelineCommandsTest.java | 22 +++---- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/src/test/java/redis/clients/jedis/commands/jedis/StreamsCommandsTest.java b/src/test/java/redis/clients/jedis/commands/jedis/StreamsCommandsTest.java index 8641db7e8e..552c8ac1f6 100644 --- a/src/test/java/redis/clients/jedis/commands/jedis/StreamsCommandsTest.java +++ b/src/test/java/redis/clients/jedis/commands/jedis/StreamsCommandsTest.java @@ -311,10 +311,10 @@ public void xreadWithParams() { @Test public void xreadAsMap() { - final String key1 = "xread-stream1"; - final String key2 = "xread-stream2"; + final String stream1 = "xread-stream1"; + final String stream2 = "xread-stream2"; - Map streamQeury1 = singletonMap(key1, new StreamEntryID()); + Map streamQeury1 = singletonMap(stream1, new StreamEntryID()); // Before creating Stream assertNull(jedis.xreadAsMap(XReadParams.xReadParams().block(1), streamQeury1)); @@ -326,14 +326,14 @@ public void xreadAsMap() { StreamEntryID id2 = new StreamEntryID(2); StreamEntryID id3 = new StreamEntryID(3); - assertEquals(id1, jedis.xadd(key1, id1, map)); - assertEquals(id2, jedis.xadd(key2, id2, map)); - assertEquals(id3, jedis.xadd(key1, id3, map)); + assertEquals(id1, jedis.xadd(stream1, id1, map)); + assertEquals(id2, jedis.xadd(stream2, id2, map)); + assertEquals(id3, jedis.xadd(stream1, id3, map)); // Read only a single Stream Map> streams1 = jedis.xreadAsMap(XReadParams.xReadParams().count(2), streamQeury1); - assertEquals(singleton(key1), streams1.keySet()); - List list1 = streams1.get(key1); + assertEquals(singleton(stream1), streams1.keySet()); + List list1 = streams1.get(stream1); assertEquals(2, list1.size()); assertEquals(id1, list1.get(0).getID()); assertEquals(map, list1.get(0).getFields()); @@ -342,20 +342,20 @@ public void xreadAsMap() { // Read from two Streams Map streamQuery2 = new LinkedHashMap<>(); - streamQuery2.put(key1, new StreamEntryID()); - streamQuery2.put(key2, new StreamEntryID()); + streamQuery2.put(stream1, new StreamEntryID()); + streamQuery2.put(stream2, new StreamEntryID()); Map> streams2 = jedis.xreadAsMap(XReadParams.xReadParams().count(1), streamQuery2); assertEquals(2, streams2.size()); - assertEquals(id1, streams2.get(key1).get(0).getID()); - assertEquals(id2, streams2.get(key2).get(0).getID()); + assertEquals(id1, streams2.get(stream1).get(0).getID()); + assertEquals(id2, streams2.get(stream2).get(0).getID()); // Read from last entry - Map streamQueryLE = singletonMap(key1, StreamEntryID.XREAD_LAST_ENTRY); + Map streamQueryLE = singletonMap(stream1, StreamEntryID.XREAD_LAST_ENTRY); Map> streamsLE = jedis.xreadAsMap(XReadParams.xReadParams().count(1), streamQueryLE); - assertEquals(singleton(key1), streamsLE.keySet()); - assertEquals(1, streamsLE.get(key1).size()); - assertEquals(id3, streamsLE.get(key1).get(0).getID()); - assertEquals(map, streamsLE.get(key1).get(0).getFields()); + assertEquals(singleton(stream1), streamsLE.keySet()); + assertEquals(1, streamsLE.get(stream1).size()); + assertEquals(id3, streamsLE.get(stream1).get(0).getID()); + assertEquals(map, streamsLE.get(stream1).get(0).getFields()); } @Test @@ -499,9 +499,8 @@ public void xreadGroupWithParams() { jedis.xgroupCreate("xreadGroup-stream2", "xreadGroup-group", null, false); // Read only a single Stream - Map streamQeury11 = singletonMap("xreadGroup-stream1", StreamEntryID.XREADGROUP_UNDELIVERED_ENTRY); List>> streams1 = jedis.xreadGroup("xreadGroup-group", "xreadGroup-consumer", - XReadGroupParams.xReadGroupParams().count(1).block(1).noAck(), streamQeury11); + XReadGroupParams.xReadGroupParams().count(1).block(1).noAck(), streamQeury1); assertEquals(1, streams1.size()); assertEquals(1, streams1.get(0).getValue().size()); @@ -516,10 +515,28 @@ public void xreadGroupWithParams() { // Read only fresh messages StreamEntryID id4 = jedis.xadd("xreadGroup-stream1", (StreamEntryID) null, map); Map streamQeuryFresh = singletonMap("xreadGroup-stream1", StreamEntryID.XREADGROUP_UNDELIVERED_ENTRY); - List>> streams3 = jedis.xreadGroup("xreadGroup-group", "xreadGroup-consumer", + List>> streamsFresh = jedis.xreadGroup("xreadGroup-group", "xreadGroup-consumer", XReadGroupParams.xReadGroupParams().count(4).block(100).noAck(), streamQeuryFresh); - assertEquals(1, streams3.size()); - assertEquals(id4, streams3.get(0).getValue().get(0).getID()); + assertEquals(1, streamsFresh.size()); + assertEquals(id4, streamsFresh.get(0).getValue().get(0).getID()); + } + + @Test + public void xreadGroupAsMap() { + + final String stream1 = "xreadGroup-stream1"; + Map map = singletonMap("f1", "v1"); + + StreamEntryID id1 = jedis.xadd(stream1, StreamEntryID.NEW_ENTRY, map); + jedis.xgroupCreate(stream1, "xreadGroup-group", null, false); + Map streamQeury1 = singletonMap(stream1, StreamEntryID.XREADGROUP_UNDELIVERED_ENTRY); + Map> range = jedis.xreadGroupAsMap("xreadGroup-group", "xreadGroup-consumer", + XReadGroupParams.xReadGroupParams().noAck(), streamQeury1); + assertEquals(singleton(stream1), range.keySet()); + List list = range.get(stream1); + assertEquals(1, list.size()); + assertEquals(id1, list.get(0).getID()); + assertEquals(map, list.get(0).getFields()); } @Test diff --git a/src/test/java/redis/clients/jedis/commands/unified/pipeline/StreamsPipelineCommandsTest.java b/src/test/java/redis/clients/jedis/commands/unified/pipeline/StreamsPipelineCommandsTest.java index f2e77663d1..af64b17576 100644 --- a/src/test/java/redis/clients/jedis/commands/unified/pipeline/StreamsPipelineCommandsTest.java +++ b/src/test/java/redis/clients/jedis/commands/unified/pipeline/StreamsPipelineCommandsTest.java @@ -397,10 +397,10 @@ public void xrangeExclusive() { @Test public void xreadWithParams() { - final String key1 = "xread-stream1"; - final String key2 = "xread-stream2"; + final String stream1 = "xread-stream1"; + final String stream2 = "xread-stream2"; - Map streamQuery1 = singletonMap(key1, new StreamEntryID()); + Map streamQuery1 = singletonMap(stream1, new StreamEntryID()); // Before creating Stream pipe.xread(XReadParams.xReadParams().block(1), streamQuery1); @@ -412,25 +412,25 @@ public void xreadWithParams() { )); Map map1 = singletonMap("f1", "v1"); - StreamEntryID id1 = jedis.xadd(key1, (StreamEntryID) null, map1); + StreamEntryID id1 = jedis.xadd(stream1, (StreamEntryID) null, map1); Map map2 = singletonMap("f2", "v2"); - StreamEntryID id2 = jedis.xadd(key2, (StreamEntryID) null, map2); + StreamEntryID id2 = jedis.xadd(stream2, (StreamEntryID) null, map2); // Read only a single Stream Response>>> streams1 = pipe.xread(XReadParams.xReadParams().count(1).block(1), streamQuery1); Response>>> streams2 = - pipe.xread(XReadParams.xReadParams().block(1), singletonMap(key1, id1)); + pipe.xread(XReadParams.xReadParams().block(1), singletonMap(stream1, id1)); Response>>> streams3 = - pipe.xread(XReadParams.xReadParams(), singletonMap(key1, id1)); + pipe.xread(XReadParams.xReadParams(), singletonMap(stream1, id1)); pipe.sync(); assertThat(streams1.get().stream().map(Entry::getKey).collect(Collectors.toList()), - contains(key1)); + contains(stream1)); assertThat(streams1.get().stream().map(Entry::getValue).flatMap(List::stream) .map(StreamEntry::getID).collect(Collectors.toList()), contains(id1)); @@ -444,8 +444,8 @@ public void xreadWithParams() { // Read from two Streams Map streamQuery2 = new LinkedHashMap<>(); - streamQuery2.put(key1, new StreamEntryID()); - streamQuery2.put(key2, new StreamEntryID()); + streamQuery2.put(stream1, new StreamEntryID()); + streamQuery2.put(stream2, new StreamEntryID()); Response>>> streams4 = pipe.xread(XReadParams.xReadParams().count(2).block(1), streamQuery2); @@ -453,7 +453,7 @@ public void xreadWithParams() { pipe.sync(); assertThat(streams4.get().stream().map(Entry::getKey).collect(Collectors.toList()), - contains(key1, key2)); + contains(stream1, stream2)); assertThat(streams4.get().stream().map(Entry::getValue).flatMap(List::stream) .map(StreamEntry::getID).collect(Collectors.toList()), contains(id1, id2));