public void StreamReadMultipleStreamsWithEmptyResponse() { var key1 = GetUniqueKey("read_multi_1"); var key2 = GetUniqueKey("read_multi_2"); using (var conn = Create()) { Skip.IfMissingFeature(conn, nameof(RedisFeatures.Streams), r => r.Streams); var db = conn.GetDatabase(); var id1 = db.StreamAdd(key1, "field1", "value1"); var id2 = db.StreamAdd(key1, "fiedl2", "value2"); var id3 = db.StreamAdd(key2, "field3", "value3"); var id4 = db.StreamAdd(key2, "field4", "value4"); var streamList = new StreamIdPair[] { // Read past the end of both streams. new StreamIdPair(key1, id2), new StreamIdPair(key2, id4) }; var streams = db.StreamRead(streamList); // We expect an empty response. Assert.True(streams.Length == 0); } }
public void StreamReadMultipleStreamsWithReadPastSecondStream() { var key1 = GetUniqueKey("read_multi_1"); var key2 = GetUniqueKey("read_multi_2"); using (var conn = Create()) { Skip.IfMissingFeature(conn, nameof(RedisFeatures.Streams), r => r.Streams); var db = conn.GetDatabase(); var id1 = db.StreamAdd(key1, "field1", "value1"); var id2 = db.StreamAdd(key1, "fiedl2", "value2"); var id3 = db.StreamAdd(key2, "field3", "value3"); var id4 = db.StreamAdd(key2, "field4", "value4"); var streamList = new StreamIdPair[2] { new StreamIdPair(key1, "0-0"), // read past the end of stream # 2 new StreamIdPair(key2, id4) }; var streams = db.StreamRead(streamList); // We should only get the first stream back. Assert.True(streams.Length == 1); Assert.Equal(key1, streams[0].Key); Assert.True(streams[0].Entries.Length == 2); } }
public void StreamReadAsync_1() { var keysAndIds = new StreamIdPair[0] { }; wrapper.StreamReadAsync(keysAndIds, null, CommandFlags.HighPriority); mock.Verify(_ => _.StreamReadAsync(keysAndIds, null, CommandFlags.HighPriority)); }
public void StreamReadExpectedExceptionEmptyStreamList() { using (var conn = Create()) { Skip.IfMissingFeature(conn, nameof(RedisFeatures.Streams), r => r.Streams); var db = conn.GetDatabase(); var emptyList = new StreamIdPair[0]; Assert.Throws <ArgumentOutOfRangeException>(() => db.StreamRead(emptyList)); } }
public void StreamReadExpectedExceptionInvalidCountMultipleStream() { using (var conn = Create()) { Skip.IfMissingFeature(conn, nameof(RedisFeatures.Streams), r => r.Streams); var streamPairs = new StreamIdPair[] { new StreamIdPair("key1", "0-0"), new StreamIdPair("key2", "0-0") }; var db = conn.GetDatabase(); Assert.Throws <ArgumentOutOfRangeException>(() => db.StreamRead(streamPairs, 0)); } }
public void StreamReadMultipleStreams() { var key1 = GetUniqueKey("read_multi_1"); var key2 = GetUniqueKey("read_multi_2"); using (var conn = Create()) { Skip.IfMissingFeature(conn, nameof(RedisFeatures.Streams), r => r.Streams); var db = conn.GetDatabase(); var id1 = db.StreamAdd(key1, "field1", "value1"); var id2 = db.StreamAdd(key1, "fiedl2", "value2"); var id3 = db.StreamAdd(key2, "field3", "value3"); var id4 = db.StreamAdd(key2, "field4", "value4"); // Read from both streams at the same time. var streamList = new StreamIdPair[2] { new StreamIdPair(key1, "0-0"), new StreamIdPair(key2, "0-0") }; var streams = db.StreamRead(streamList); Assert.True(streams.Length == 2); Assert.Equal(key1, streams[0].Key); Assert.True(streams[0].Entries.Length == 2); Assert.Equal(id1, streams[0].Entries[0].Id); Assert.Equal(id2, streams[0].Entries[1].Id); Assert.Equal(key2, streams[1].Key); Assert.True(streams[1].Entries.Length == 2); Assert.Equal(id3, streams[1].Entries[0].Id); Assert.Equal(id4, streams[1].Entries[1].Id); } }
public void StreamReadMultipleStreamsWithCount() { var key1 = GetUniqueKey("read_multi_count_1"); var key2 = GetUniqueKey("read_multi_count_2"); using (var conn = Create()) { Skip.IfMissingFeature(conn, nameof(RedisFeatures.Streams), r => r.Streams); var db = conn.GetDatabase(); var id1 = db.StreamAdd(key1, "field1", "value1"); var id2 = db.StreamAdd(key1, "fiedl2", "value2"); var id3 = db.StreamAdd(key2, "field3", "value3"); var id4 = db.StreamAdd(key2, "field4", "value4"); var streamList = new StreamIdPair[2] { new StreamIdPair(key1, "0-0"), new StreamIdPair(key2, "0-0") }; var streams = db.StreamRead(streamList, countPerStream: 1); // We should get both streams back. Assert.True(streams.Length == 2); // Ensure we only got one message per stream. Assert.True(streams[0].Entries.Length == 1); Assert.True(streams[1].Entries.Length == 1); // Check the message IDs as well. Assert.Equal(id1, streams[0].Entries[0].Id); Assert.Equal(id3, streams[1].Entries[0].Id); } }