@@ -2175,3 +2175,104 @@ func TestRedisTxPipeline(t *testing.T) {
21752175 assert .Equal (t , hashValue , value )
21762176 })
21772177}
2178+
2179+ func TestRedisXGroupCreate (t * testing.T ) {
2180+ runOnRedis (t , func (client * Redis ) {
2181+ _ , err := newRedis (client .Addr , badType ()).XGroupCreate ("Source" , "Destination" , "0" )
2182+ assert .NotNil (t , err )
2183+
2184+ redisCli := newRedis (client .Addr )
2185+
2186+ _ , err = redisCli .XGroupCreate ("aa" , "bb" , "0" )
2187+ assert .NotNil (t , err )
2188+
2189+ _ , err = newRedis (client .Addr , badType ()).XGroupCreateMkStream ("Source" , "Destination" , "0" )
2190+ assert .NotNil (t , err )
2191+
2192+ _ , err = redisCli .XGroupCreateMkStream ("aa" , "bb" , "0" )
2193+ assert .Nil (t , err )
2194+
2195+ _ , err = redisCli .XGroupCreate ("aa" , "cc" , "0" )
2196+ assert .Nil (t , err )
2197+ })
2198+ }
2199+
2200+ func TestRedisXInfo (t * testing.T ) {
2201+ runOnRedis (t , func (client * Redis ) {
2202+ _ , err := newRedis (client .Addr , badType ()).XInfoStream ("Source" )
2203+ assert .NotNil (t , err )
2204+ _ , err = newRedis (client .Addr , badType ()).XInfoGroups ("Source" )
2205+ assert .NotNil (t , err )
2206+ _ , err = newRedis (client .Addr , badType ()).XReadGroup ("aa" , "consumer" , 1 , 2000 , false , "ss" , ">" )
2207+ assert .NotNil (t , err )
2208+ _ , err = newRedis (client .Addr , badType ()).XInfoConsumers ("aa" , "bb" )
2209+ assert .NotNil (t , err )
2210+
2211+ redisCli := newRedis (client .Addr )
2212+
2213+ stream := "aa"
2214+ group := "bb"
2215+
2216+ _ , err = redisCli .XGroupCreateMkStream (stream , group , "$" )
2217+ assert .Nil (t , err )
2218+
2219+ _ , err = redisCli .XAdd (stream , true , "*" , []string {"key1" , "value1" , "key2" , "value2" })
2220+ assert .Nil (t , err )
2221+
2222+ infoStream , err := redisCli .XInfoStream (stream )
2223+ assert .Nil (t , err )
2224+ assert .Equal (t , int64 (1 ), infoStream .Length )
2225+
2226+ infoGroups , err := redisCli .XInfoGroups (stream )
2227+ assert .Nil (t , err )
2228+ assert .Equal (t , int64 (1 ), infoGroups [0 ].Lag )
2229+ assert .Equal (t , group , infoGroups [0 ].Name )
2230+
2231+ streamRes , err := redisCli .XReadGroup (group , "consumer" , 1 , 2000 , false , stream , ">" )
2232+ assert .Nil (t , err )
2233+ assert .Equal (t , 1 , len (streamRes ))
2234+ assert .Equal (t , "value1" , streamRes [0 ].Messages [0 ].Values ["key1" ])
2235+
2236+ infoConsumers , err := redisCli .XInfoConsumers (stream , group )
2237+ assert .Nil (t , err )
2238+ assert .Equal (t , 1 , len (infoConsumers ))
2239+ })
2240+ }
2241+
2242+ func TestRedisXReadGroup (t * testing.T ) {
2243+ runOnRedis (t , func (client * Redis ) {
2244+ _ , err := newRedis (client .Addr , badType ()).XAdd ("bb" , true , "*" , []string {"key1" , "value1" , "key2" , "value2" })
2245+ assert .NotNil (t , err )
2246+ _ , err = newRedis (client .Addr , badType ()).XAck ("bb" , "aa" , "123" )
2247+ assert .NotNil (t , err )
2248+
2249+ redisCli := newRedis (client .Addr )
2250+
2251+ stream := "aa"
2252+ group := "bb"
2253+
2254+ _ , err = redisCli .XGroupCreateMkStream (stream , group , "$" )
2255+ assert .Nil (t , err )
2256+
2257+ _ , err = redisCli .XAdd (stream , true , "*" , []string {"key1" , "value1" , "key2" , "value2" })
2258+ assert .Nil (t , err )
2259+
2260+ streamRes , err := redisCli .XReadGroup (group , "consumer" , 1 , 2000 , false , stream , ">" )
2261+ assert .Nil (t , err )
2262+ assert .Equal (t , 1 , len (streamRes ))
2263+ assert .Equal (t , "value1" , streamRes [0 ].Messages [0 ].Values ["key1" ])
2264+
2265+ streamRes1 , err := redisCli .XReadGroup (group , "consumer" , 1 , 2000 , false , stream , "0" )
2266+ assert .Nil (t , err )
2267+ assert .Equal (t , 1 , len (streamRes1 ))
2268+ assert .Equal (t , "value1" , streamRes1 [0 ].Messages [0 ].Values ["key1" ])
2269+
2270+ _ , err = redisCli .XAck (stream , group , streamRes [0 ].Messages [0 ].ID )
2271+ assert .Nil (t , err )
2272+
2273+ streamRes2 , err := redisCli .XReadGroup (group , "consumer" , 1 , 2000 , false , stream , "0" )
2274+ assert .Nil (t , err )
2275+ assert .Greater (t , len (streamRes2 ), 0 , "streamRes2 is empty" )
2276+ assert .Equal (t , 0 , len (streamRes2 [0 ].Messages ))
2277+ })
2278+ }
0 commit comments