@@ -3735,6 +3735,13 @@ def test_xadd_minlen_and_limit(self, r):
3735
3735
r .xadd (stream , {"foo" : "bar" })
3736
3736
assert r .xadd (stream , {"foo" : "bar" }, approximate = True , minid = m3 )
3737
3737
3738
+ @skip_if_server_version_lt ("7.0.0" )
3739
+ def test_xadd_explicit_ms (self , r : redis .Redis ):
3740
+ stream = "stream"
3741
+ message_id = r .xadd (stream , {"foo" : "bar" }, "9999999999999999999-*" )
3742
+ ms = message_id [: message_id .index (b"-" )]
3743
+ assert ms == b"9999999999999999999"
3744
+
3738
3745
@skip_if_server_version_lt ("6.2.0" )
3739
3746
def test_xautoclaim (self , r ):
3740
3747
stream = "stream"
@@ -3820,7 +3827,7 @@ def test_xclaim(self, r):
3820
3827
== [message_id ]
3821
3828
)
3822
3829
3823
- @skip_if_server_version_lt ("5 .0.0" )
3830
+ @skip_if_server_version_lt ("7 .0.0" )
3824
3831
def test_xclaim_trimmed (self , r ):
3825
3832
# xclaim should not raise an exception if the item is not there
3826
3833
stream = "stream"
@@ -3841,9 +3848,8 @@ def test_xclaim_trimmed(self, r):
3841
3848
# xclaim them from consumer2
3842
3849
# the item that is still in the stream should be returned
3843
3850
item = r .xclaim (stream , group , "consumer2" , 0 , [sid1 , sid2 ])
3844
- assert len (item ) == 2
3845
- assert item [0 ] == (None , None )
3846
- assert item [1 ][0 ] == sid2
3851
+ assert len (item ) == 1
3852
+ assert item [0 ][0 ] == sid2
3847
3853
3848
3854
@skip_if_server_version_lt ("5.0.0" )
3849
3855
def test_xdel (self , r ):
@@ -3860,7 +3866,7 @@ def test_xdel(self, r):
3860
3866
assert r .xdel (stream , m1 ) == 1
3861
3867
assert r .xdel (stream , m2 , m3 ) == 2
3862
3868
3863
- @skip_if_server_version_lt ("5 .0.0" )
3869
+ @skip_if_server_version_lt ("7 .0.0" )
3864
3870
def test_xgroup_create (self , r ):
3865
3871
# tests xgroup_create and xinfo_groups
3866
3872
stream = "stream"
@@ -3877,11 +3883,13 @@ def test_xgroup_create(self, r):
3877
3883
"consumers" : 0 ,
3878
3884
"pending" : 0 ,
3879
3885
"last-delivered-id" : b"0-0" ,
3886
+ "entries-read" : None ,
3887
+ "lag" : 1 ,
3880
3888
}
3881
3889
]
3882
3890
assert r .xinfo_groups (stream ) == expected
3883
3891
3884
- @skip_if_server_version_lt ("5 .0.0" )
3892
+ @skip_if_server_version_lt ("7 .0.0" )
3885
3893
def test_xgroup_create_mkstream (self , r ):
3886
3894
# tests xgroup_create and xinfo_groups
3887
3895
stream = "stream"
@@ -3901,6 +3909,30 @@ def test_xgroup_create_mkstream(self, r):
3901
3909
"consumers" : 0 ,
3902
3910
"pending" : 0 ,
3903
3911
"last-delivered-id" : b"0-0" ,
3912
+ "entries-read" : None ,
3913
+ "lag" : 0 ,
3914
+ }
3915
+ ]
3916
+ assert r .xinfo_groups (stream ) == expected
3917
+
3918
+ @skip_if_server_version_lt ("7.0.0" )
3919
+ def test_xgroup_create_entriesread (self , r : redis .Redis ):
3920
+ stream = "stream"
3921
+ group = "group"
3922
+ r .xadd (stream , {"foo" : "bar" })
3923
+
3924
+ # no group is setup yet, no info to obtain
3925
+ assert r .xinfo_groups (stream ) == []
3926
+
3927
+ assert r .xgroup_create (stream , group , 0 , entries_read = 7 )
3928
+ expected = [
3929
+ {
3930
+ "name" : group .encode (),
3931
+ "consumers" : 0 ,
3932
+ "pending" : 0 ,
3933
+ "last-delivered-id" : b"0-0" ,
3934
+ "entries-read" : 7 ,
3935
+ "lag" : - 6 ,
3904
3936
}
3905
3937
]
3906
3938
assert r .xinfo_groups (stream ) == expected
@@ -3951,21 +3983,23 @@ def test_xgroup_destroy(self, r):
3951
3983
r .xgroup_create (stream , group , 0 )
3952
3984
assert r .xgroup_destroy (stream , group )
3953
3985
3954
- @skip_if_server_version_lt ("5 .0.0" )
3986
+ @skip_if_server_version_lt ("7 .0.0" )
3955
3987
def test_xgroup_setid (self , r ):
3956
3988
stream = "stream"
3957
3989
group = "group"
3958
3990
message_id = r .xadd (stream , {"foo" : "bar" })
3959
3991
3960
3992
r .xgroup_create (stream , group , 0 )
3961
3993
# advance the last_delivered_id to the message_id
3962
- r .xgroup_setid (stream , group , message_id )
3994
+ r .xgroup_setid (stream , group , message_id , entries_read = 2 )
3963
3995
expected = [
3964
3996
{
3965
3997
"name" : group .encode (),
3966
3998
"consumers" : 0 ,
3967
3999
"pending" : 0 ,
3968
4000
"last-delivered-id" : message_id ,
4001
+ "entries-read" : 2 ,
4002
+ "lag" : - 1 ,
3969
4003
}
3970
4004
]
3971
4005
assert r .xinfo_groups (stream ) == expected
@@ -3995,7 +4029,7 @@ def test_xinfo_consumers(self, r):
3995
4029
assert isinstance (info [1 ].pop ("idle" ), int )
3996
4030
assert info == expected
3997
4031
3998
- @skip_if_server_version_lt ("5 .0.0" )
4032
+ @skip_if_server_version_lt ("7 .0.0" )
3999
4033
def test_xinfo_stream (self , r ):
4000
4034
stream = "stream"
4001
4035
m1 = r .xadd (stream , {"foo" : "bar" })
@@ -4005,6 +4039,9 @@ def test_xinfo_stream(self, r):
4005
4039
assert info ["length" ] == 2
4006
4040
assert info ["first-entry" ] == get_stream_message (r , stream , m1 )
4007
4041
assert info ["last-entry" ] == get_stream_message (r , stream , m2 )
4042
+ assert info ["max-deleted-entry-id" ] == b"0-0"
4043
+ assert info ["entries-added" ] == 2
4044
+ assert info ["recorded-first-entry-id" ] == m1
4008
4045
4009
4046
@skip_if_server_version_lt ("6.0.0" )
4010
4047
def test_xinfo_stream_full (self , r ):
0 commit comments