@@ -3772,7 +3772,7 @@ var _ = Describe("Commands", func() {
3772
3772
Expect (err ).NotTo (HaveOccurred ())
3773
3773
Expect (key ).To (Equal ("zset" ))
3774
3774
Expect (elems ).To (Equal ([]redis.Z {{
3775
- Score : 1 ,
3775
+ Score : 1 ,
3776
3776
Member : "one" ,
3777
3777
}}))
3778
3778
@@ -3790,45 +3790,170 @@ var _ = Describe("Commands", func() {
3790
3790
Expect (err ).NotTo (HaveOccurred ())
3791
3791
Expect (key ).To (Equal ("myzset" ))
3792
3792
Expect (elems ).To (Equal ([]redis.Z {{
3793
- Score :1 ,
3794
- Member :"one" ,
3793
+ Score : 1 ,
3794
+ Member : "one" ,
3795
3795
}}))
3796
3796
3797
3797
key , elems , err = client .ZMPop (ctx , "max" , 10 , "myzset" ).Result ()
3798
3798
Expect (err ).NotTo (HaveOccurred ())
3799
3799
Expect (key ).To (Equal ("myzset" ))
3800
3800
Expect (elems ).To (Equal ([]redis.Z {{
3801
- Score :3 ,
3802
- Member :"three" ,
3803
- },{
3804
- Score : 2 ,
3801
+ Score : 3 ,
3802
+ Member : "three" ,
3803
+ }, {
3804
+ Score : 2 ,
3805
3805
Member : "two" ,
3806
3806
}}))
3807
3807
3808
-
3809
3808
err = client .ZAdd (ctx , "myzset2" , redis.Z {Score : 4 , Member : "four" }).Err ()
3810
3809
Expect (err ).NotTo (HaveOccurred ())
3811
3810
err = client .ZAdd (ctx , "myzset2" , redis.Z {Score : 5 , Member : "five" }).Err ()
3812
3811
Expect (err ).NotTo (HaveOccurred ())
3813
3812
err = client .ZAdd (ctx , "myzset2" , redis.Z {Score : 6 , Member : "six" }).Err ()
3814
3813
Expect (err ).NotTo (HaveOccurred ())
3815
3814
3816
- key , elems , err = client .ZMPop (ctx , "min" , 10 , "myzset" ,"myzset2" ).Result ()
3815
+ key , elems , err = client .ZMPop (ctx , "min" , 10 , "myzset" , "myzset2" ).Result ()
3817
3816
Expect (err ).NotTo (HaveOccurred ())
3818
3817
Expect (key ).To (Equal ("myzset2" ))
3819
3818
Expect (elems ).To (Equal ([]redis.Z {{
3820
- Score :4 ,
3821
- Member :"four" ,
3822
- },{
3823
- Score : 5 ,
3819
+ Score : 4 ,
3820
+ Member : "four" ,
3821
+ }, {
3822
+ Score : 5 ,
3824
3823
Member : "five" ,
3825
- },{
3826
- Score :6 ,
3824
+ }, {
3825
+ Score : 6 ,
3827
3826
Member : "six" ,
3828
3827
}}))
3829
3828
3830
-
3831
-
3829
+ })
3830
+
3831
+ It ("should BZMPop" , func () {
3832
+
3833
+ err := client .ZAdd (ctx , "zset" , redis.Z {Score : 1 , Member : "one" }).Err ()
3834
+ Expect (err ).NotTo (HaveOccurred ())
3835
+ err = client .ZAdd (ctx , "zset" , redis.Z {Score : 2 , Member : "two" }).Err ()
3836
+ Expect (err ).NotTo (HaveOccurred ())
3837
+ err = client .ZAdd (ctx , "zset" , redis.Z {Score : 3 , Member : "three" }).Err ()
3838
+ Expect (err ).NotTo (HaveOccurred ())
3839
+
3840
+ err = client .ZAdd (ctx , "zset2" , redis.Z {Score : 1 , Member : "one" }).Err ()
3841
+ Expect (err ).NotTo (HaveOccurred ())
3842
+ err = client .ZAdd (ctx , "zset2" , redis.Z {Score : 2 , Member : "two" }).Err ()
3843
+ Expect (err ).NotTo (HaveOccurred ())
3844
+ err = client .ZAdd (ctx , "zset2" , redis.Z {Score : 3 , Member : "three" }).Err ()
3845
+ Expect (err ).NotTo (HaveOccurred ())
3846
+
3847
+ key , elems , err := client .BZMPop (ctx , 0 , "min" , 1 , "zset" ).Result ()
3848
+ Expect (err ).NotTo (HaveOccurred ())
3849
+ Expect (key ).To (Equal ("zset" ))
3850
+ Expect (elems ).To (Equal ([]redis.Z {{
3851
+ Score : 1 ,
3852
+ Member : "one" ,
3853
+ }}))
3854
+ key , elems , err = client .BZMPop (ctx , 0 , "max" , 1 , "zset" ).Result ()
3855
+ Expect (err ).NotTo (HaveOccurred ())
3856
+ Expect (key ).To (Equal ("zset" ))
3857
+ Expect (elems ).To (Equal ([]redis.Z {{
3858
+ Score : 3 ,
3859
+ Member : "three" ,
3860
+ }}))
3861
+ key , elems , err = client .BZMPop (ctx , 0 , "min" , 10 , "zset" ).Result ()
3862
+ Expect (err ).NotTo (HaveOccurred ())
3863
+ Expect (key ).To (Equal ("zset" ))
3864
+ Expect (elems ).To (Equal ([]redis.Z {{
3865
+ Score : 2 ,
3866
+ Member : "two" ,
3867
+ }}))
3868
+
3869
+ key , elems , err = client .BZMPop (ctx , 0 , "max" , 10 , "zset2" ).Result ()
3870
+ Expect (err ).NotTo (HaveOccurred ())
3871
+ Expect (key ).To (Equal ("zset2" ))
3872
+ Expect (elems ).To (Equal ([]redis.Z {{
3873
+ Score : 3 ,
3874
+ Member : "three" ,
3875
+ }, {
3876
+ Score : 2 ,
3877
+ Member : "two" ,
3878
+ }, {
3879
+ Score : 1 ,
3880
+ Member : "one" ,
3881
+ }}))
3882
+
3883
+ err = client .ZAdd (ctx , "myzset" , redis.Z {Score : 1 , Member : "one" }).Err ()
3884
+ Expect (err ).NotTo (HaveOccurred ())
3885
+ key , elems , err = client .BZMPop (ctx , 0 , "min" , 10 , "myzset" ).Result ()
3886
+ Expect (err ).NotTo (HaveOccurred ())
3887
+ Expect (key ).To (Equal ("myzset" ))
3888
+ Expect (elems ).To (Equal ([]redis.Z {{
3889
+ Score : 1 ,
3890
+ Member : "one" ,
3891
+ }}))
3892
+
3893
+ err = client .ZAdd (ctx , "myzset2" , redis.Z {Score : 4 , Member : "four" }).Err ()
3894
+ Expect (err ).NotTo (HaveOccurred ())
3895
+ err = client .ZAdd (ctx , "myzset2" , redis.Z {Score : 5 , Member : "five" }).Err ()
3896
+ Expect (err ).NotTo (HaveOccurred ())
3897
+
3898
+ key , elems , err = client .BZMPop (ctx , 0 , "min" , 10 , "myzset" , "myzset2" ).Result ()
3899
+ Expect (err ).NotTo (HaveOccurred ())
3900
+ Expect (key ).To (Equal ("myzset2" ))
3901
+ Expect (elems ).To (Equal ([]redis.Z {{
3902
+ Score : 4 ,
3903
+ Member : "four" ,
3904
+ }, {
3905
+ Score : 5 ,
3906
+ Member : "five" ,
3907
+ }}))
3908
+ })
3909
+
3910
+ It ("should BZMPopBlocks" , func () {
3911
+ started := make (chan bool )
3912
+ done := make (chan bool )
3913
+ go func () {
3914
+ defer GinkgoRecover ()
3915
+
3916
+ started <- true
3917
+ key , elems , err := client .BZMPop (ctx , 0 , "min" , 1 , "list_list" ).Result ()
3918
+ Expect (err ).NotTo (HaveOccurred ())
3919
+ Expect (key ).To (Equal ("list_list" ))
3920
+ Expect (elems ).To (Equal ([]redis.Z {{
3921
+ Score : 1 ,
3922
+ Member : "one" ,
3923
+ }}))
3924
+ done <- true
3925
+ }()
3926
+ <- started
3927
+
3928
+ select {
3929
+ case <- done :
3930
+ Fail ("BZMPop is not blocked" )
3931
+ case <- time .After (time .Second ):
3932
+ //ok
3933
+ }
3934
+
3935
+ err := client .ZAdd (ctx , "list_list" , redis.Z {Score : 1 , Member : "one" }).Err ()
3936
+ Expect (err ).NotTo (HaveOccurred ())
3937
+
3938
+ select {
3939
+ case <- done :
3940
+ //ok
3941
+ case <- time .After (time .Second ):
3942
+ Fail ("BZMPop is still blocked" )
3943
+ }
3944
+ })
3945
+
3946
+ It ("should BZMPop timeout" , func () {
3947
+ _ , val , err := client .BZMPop (ctx , time .Second , "min" , 1 , "list1" ).Result ()
3948
+ Expect (err ).To (Equal (redis .Nil ))
3949
+ Expect (val ).To (BeNil ())
3950
+
3951
+ Expect (client .Ping (ctx ).Err ()).NotTo (HaveOccurred ())
3952
+
3953
+ stats := client .PoolStats ()
3954
+ Expect (stats .Hits ).To (Equal (uint32 (2 )))
3955
+ Expect (stats .Misses ).To (Equal (uint32 (1 )))
3956
+ Expect (stats .Timeouts ).To (Equal (uint32 (0 )))
3832
3957
})
3833
3958
3834
3959
It ("should ZMScore" , func () {
0 commit comments