Skip to content

Commit 201a570

Browse files
committed
add more tests
1 parent 11d6421 commit 201a570

File tree

3 files changed

+77
-9
lines changed

3 files changed

+77
-9
lines changed

command.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -3862,6 +3862,7 @@ func (cmd *MapMapStringInterfaceCmd) Val() map[string]interface{} {
38623862
return cmd.val
38633863
}
38643864

3865+
// readReply will try to parse the reply from the proto.Reader for both resp2 and resp3
38653866
func (cmd *MapMapStringInterfaceCmd) readReply(rd *proto.Reader) (err error) {
38663867
data, err := rd.ReadReply()
38673868
if err != nil {
@@ -3870,32 +3871,32 @@ func (cmd *MapMapStringInterfaceCmd) readReply(rd *proto.Reader) (err error) {
38703871
resultMap := map[string]interface{}{}
38713872

38723873
switch midResponse := data.(type) {
3873-
case map[interface{}]interface{}:
3874+
case map[interface{}]interface{}: // resp3 will return map
38743875
for k, v := range midResponse {
38753876
stringKey, ok := k.(string)
38763877
if !ok {
38773878
return fmt.Errorf("redis: invalid map key %#v", k)
38783879
}
38793880
resultMap[stringKey] = v
38803881
}
3881-
case []interface{}: // resp2
3882+
case []interface{}: // resp2 will return array of arrays
38823883
n := len(midResponse)
38833884
for i := 0; i < n; i++ {
3884-
finalArr, ok := midResponse[i].([]interface{})
3885+
finalArr, ok := midResponse[i].([]interface{}) // final array that we need to transform to map
38853886
if !ok {
38863887
return fmt.Errorf("redis: unexpected response %#v", data)
38873888
}
38883889
m := len(finalArr)
3889-
if m%2 != 0 {
3890+
if m%2 != 0 { // since this should be map, keys should be even number
38903891
return fmt.Errorf("redis: unexpected response %#v", data)
38913892
}
38923893

38933894
for j := 0; j < m; j += 2 {
3894-
stringKey, ok := finalArr[j].(string)
3895+
stringKey, ok := finalArr[j].(string) // the first one
38953896
if !ok {
38963897
return fmt.Errorf("redis: invalid map key %#v", finalArr[i])
38973898
}
3898-
resultMap[stringKey] = finalArr[j+1]
3899+
resultMap[stringKey] = finalArr[j+1] // second one is value
38993900
}
39003901
}
39013902
default:

commands_test.go

+12-1
Original file line numberDiff line numberDiff line change
@@ -379,8 +379,19 @@ var _ = Describe("Commands", func() {
379379
Expect(configSet.Val()).To(Equal("OK"))
380380
})
381381

382+
It("should ConfigGet with Modules", Label("NonRedisEnterprise"), func() {
383+
SkipBeforeRedisMajor(8, "config get won't return modules configs before redis 8")
384+
configGet := client.ConfigGet(ctx, "*")
385+
Expect(configGet.Err()).NotTo(HaveOccurred())
386+
Expect(configGet.Val()).To(HaveKey("maxmemory"))
387+
Expect(configGet.Val()).To(HaveKey("search-timeout"))
388+
Expect(configGet.Val()).To(HaveKey("ts-retention-policy"))
389+
Expect(configGet.Val()).To(HaveKey("bf-error-rate"))
390+
Expect(configGet.Val()).To(HaveKey("cf-initial-size"))
391+
})
392+
382393
It("should ConfigSet FT DIALECT", func() {
383-
SkipBeforeRedisMajor(8, "Config doesn't include modules before Redis 8")
394+
SkipBeforeRedisMajor(8, "config doesn't include modules before Redis 8")
384395
defaultState, err := client.ConfigGet(ctx, "search-default-dialect").Result()
385396
Expect(err).NotTo(HaveOccurred())
386397

search_test.go

+58-2
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,6 @@ var _ = Describe("RediSearch commands Resp 2", Label("search"), func() {
457457
})
458458

459459
It("should FTConfigSet and FTConfigGet ", Label("search", "ftconfigget", "ftconfigset", "NonRedisEnterprise"), func() {
460-
SkipAfterRedisMajor(7, "FT.CONFIG is moved to Config for redis 8")
461460
val, err := client.FTConfigSet(ctx, "TIMEOUT", "100").Result()
462461
Expect(err).NotTo(HaveOccurred())
463462
Expect(val).To(BeEquivalentTo("OK"))
@@ -1013,8 +1012,25 @@ var _ = Describe("RediSearch commands Resp 2", Label("search"), func() {
10131012

10141013
})
10151014

1015+
It("should FTConfigGet return multiple fields", Label("search", "NonRedisEnterprise"), func() {
1016+
res, err := client.FTConfigSet(ctx, "DEFAULT_DIALECT", "1").Result()
1017+
Expect(err).NotTo(HaveOccurred())
1018+
Expect(res).To(BeEquivalentTo("OK"))
1019+
1020+
defDialect, err := client.FTConfigGet(ctx, "DEFAULT_DIALECT").Result()
1021+
Expect(err).NotTo(HaveOccurred())
1022+
Expect(defDialect).To(BeEquivalentTo(map[string]interface{}{"DEFAULT_DIALECT": "1"}))
1023+
1024+
res, err = client.FTConfigSet(ctx, "DEFAULT_DIALECT", "2").Result()
1025+
Expect(err).NotTo(HaveOccurred())
1026+
Expect(res).To(BeEquivalentTo("OK"))
1027+
1028+
defDialect, err = client.FTConfigGet(ctx, "DEFAULT_DIALECT").Result()
1029+
Expect(err).NotTo(HaveOccurred())
1030+
Expect(defDialect).To(BeEquivalentTo(map[string]interface{}{"DEFAULT_DIALECT": "2"}))
1031+
})
1032+
10161033
It("should FTConfigSet and FTConfigGet dialect", Label("search", "ftconfigget", "ftconfigset", "NonRedisEnterprise"), func() {
1017-
SkipAfterRedisMajor(7, "FT.CONFIG is moved to Config for redis 8")
10181034
res, err := client.FTConfigSet(ctx, "DEFAULT_DIALECT", "1").Result()
10191035
Expect(err).NotTo(HaveOccurred())
10201036
Expect(res).To(BeEquivalentTo("OK"))
@@ -1470,6 +1486,46 @@ func _assert_geosearch_result(result *redis.FTSearchResult, expectedDocIDs []str
14701486
// Expect(results0["extra_attributes"].(map[interface{}]interface{})["__v_score"]).To(BeEquivalentTo("0"))
14711487
// })
14721488

1489+
var _ = Describe("RediSearch FT.Config with Resp2 and Resp3", Label("search", "NonRedisEnterprise"), func() {
1490+
1491+
var clientResp2 *redis.Client
1492+
var clientResp3 *redis.Client
1493+
BeforeEach(func() {
1494+
clientResp2 = redis.NewClient(&redis.Options{Addr: ":6379", Protocol: 2})
1495+
clientResp3 = redis.NewClient(&redis.Options{Addr: ":6379", Protocol: 3, UnstableResp3: true})
1496+
Expect(clientResp3.FlushDB(ctx).Err()).NotTo(HaveOccurred())
1497+
})
1498+
1499+
AfterEach(func() {
1500+
Expect(clientResp2.Close()).NotTo(HaveOccurred())
1501+
Expect(clientResp3.Close()).NotTo(HaveOccurred())
1502+
})
1503+
1504+
It("should FTConfigSet and FTConfigGet ", Label("search", "ftconfigget", "ftconfigset", "NonRedisEnterprise"), func() {
1505+
val, err := clientResp3.FTConfigSet(ctx, "TIMEOUT", "100").Result()
1506+
Expect(err).NotTo(HaveOccurred())
1507+
Expect(val).To(BeEquivalentTo("OK"))
1508+
1509+
res2, err := clientResp2.FTConfigGet(ctx, "TIMEOUT").Result()
1510+
Expect(err).NotTo(HaveOccurred())
1511+
Expect(res2).To(BeEquivalentTo(map[string]interface{}{"TIMEOUT": "100"}))
1512+
1513+
res3, err := clientResp3.FTConfigGet(ctx, "TIMEOUT").Result()
1514+
Expect(err).NotTo(HaveOccurred())
1515+
Expect(res3).To(BeEquivalentTo(map[string]interface{}{"TIMEOUT": "100"}))
1516+
})
1517+
1518+
It("should FTConfigGet all resp2 and resp3", Label("search", "NonRedisEnterprise"), func() {
1519+
res2, err := clientResp2.FTConfigGet(ctx, "*").Result()
1520+
Expect(err).NotTo(HaveOccurred())
1521+
1522+
res3, err := clientResp3.FTConfigGet(ctx, "*").Result()
1523+
Expect(err).NotTo(HaveOccurred())
1524+
Expect(len(res3)).To(BeEquivalentTo(len(res2)))
1525+
Expect(res2["DEFAULT_DIALECT"]).To(BeEquivalentTo(res2["DEFAULT_DIALECT"]))
1526+
})
1527+
})
1528+
14731529
var _ = Describe("RediSearch commands Resp 3", Label("search"), func() {
14741530
ctx := context.TODO()
14751531
var client *redis.Client

0 commit comments

Comments
 (0)