Skip to content

Commit 5b30e4e

Browse files
committed
Test extractKeys
1 parent 249510c commit 5b30e4e

File tree

4 files changed

+32
-57
lines changed

4 files changed

+32
-57
lines changed

command.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,18 +119,23 @@ func cmdString(cmd Cmder, val interface{}) string {
119119
return util.BytesToString(b)
120120
}
121121

122+
// A wrapper around extract keys, just to make it easier to test.
123+
func GetKeys(cmd Cmder) []string {
124+
return extractKeys(cmd)
125+
}
126+
122127
func extractKeys(cmd Cmder) []string {
123128
firstKeyPos := cmdFirstKeyPos(cmd)
124129
if firstKeyPos == -1 {
125130
return nil
126131
}
127-
internal.Logger.Printf(context.Background(), "firstKeyPos: %d", firstKeyPos)
132+
128133
args := cmd.Args()
129134
keys := []string{}
130135

131136
switch cmd.Name() {
132-
case "MGET", "MSET":
133-
for i := int(firstKeyPos); i < len(args); i += 2 {
137+
case "mget":
138+
for i := int(firstKeyPos); i < len(args); i++ {
134139
keys = append(keys, cmd.stringArg(i))
135140
}
136141

commands_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7279,6 +7279,29 @@ var _ = Describe("Commands", func() {
72797279
})
72807280
})
72817281

7282+
var _ = Describe("Get Keys from Command", func() {
7283+
var client *redis.Client
7284+
7285+
BeforeEach(func() {
7286+
client = redis.NewClient(redisOptions())
7287+
Expect(client.FlushDB(ctx).Err()).NotTo(HaveOccurred())
7288+
})
7289+
7290+
AfterEach(func() {
7291+
Expect(client.Close()).NotTo(HaveOccurred())
7292+
})
7293+
7294+
It("returns the keys extracted from the command", func() {
7295+
cmd := redis.NewCmd(ctx, "SET", "key1", "value1")
7296+
keys := redis.GetKeys(cmd)
7297+
Expect(keys).To(Equal([]string{"key1"}))
7298+
7299+
cmd = redis.NewCmd(ctx, "MGET", "key1", "key2", "key3")
7300+
keys = redis.GetKeys(cmd)
7301+
Expect(keys).To(Equal([]string{"key1", "key2", "key3"}))
7302+
})
7303+
})
7304+
72827305
type numberStruct struct {
72837306
Number int
72847307
}

redis.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ func (c *baseClient) _process(ctx context.Context, cmd Cmder, attempt int) (bool
431431
return false, err
432432
}
433433
}
434-
internal.Logger.Printf(ctx, "redis: keys in command %s", extractKeys(cmd))
434+
435435
retryTimeout := uint32(0)
436436
if err := c.withConn(ctx, func(ctx context.Context, cn *pool.Conn) error {
437437
if err := cn.WithWriter(c.context(ctx), c.opt.WriteTimeout, func(wr *proto.Writer) error {

redis_test.go

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"errors"
77
"fmt"
88
"net"
9-
"strconv"
109
"testing"
1110
"time"
1211

@@ -634,55 +633,3 @@ var _ = Describe("Hook with MinIdleConns", func() {
634633
}))
635634
})
636635
})
637-
638-
var _ = Describe("Command Name", func() {
639-
var client *redis.Client
640-
641-
BeforeEach(func() {
642-
client = redis.NewClient(redisOptions())
643-
Expect(client.FlushDB(ctx).Err()).NotTo(HaveOccurred())
644-
})
645-
646-
AfterEach(func() {
647-
err := client.Close()
648-
Expect(err).NotTo(HaveOccurred())
649-
})
650-
651-
It("should return key name", func() {
652-
mSet := client.MSet(ctx, "key1", "hello1", "key2", "hello2")
653-
Expect(mSet.Err()).NotTo(HaveOccurred())
654-
Expect(mSet.Val()).To(Equal("OK"))
655-
Expect(mSet.Args()).To(Equal([]string{"MSET", "key1", "hello1", "key2", "hello2"}))
656-
657-
mGet := client.MGet(ctx, "key1", "key2", "_")
658-
Expect(mGet.Err()).NotTo(HaveOccurred())
659-
Expect(mGet.Val()).To(Equal([]interface{}{"hello1", "hello2", nil}))
660-
661-
// MSet struct
662-
type set struct {
663-
Set1 string `redis:"set1"`
664-
Set2 int16 `redis:"set2"`
665-
Set3 time.Duration `redis:"set3"`
666-
Set4 interface{} `redis:"set4"`
667-
Set5 map[string]interface{} `redis:"-"`
668-
}
669-
mSet = client.MSet(ctx, &set{
670-
Set1: "val1",
671-
Set2: 1024,
672-
Set3: 2 * time.Millisecond,
673-
Set4: nil,
674-
Set5: map[string]interface{}{"k1": 1},
675-
})
676-
Expect(mSet.Err()).NotTo(HaveOccurred())
677-
Expect(mSet.Val()).To(Equal("OK"))
678-
679-
mGet = client.MGet(ctx, "set1", "set2", "set3", "set4")
680-
Expect(mGet.Err()).NotTo(HaveOccurred())
681-
Expect(mGet.Val()).To(Equal([]interface{}{
682-
"val1",
683-
"1024",
684-
strconv.Itoa(int(2 * time.Millisecond.Nanoseconds())),
685-
"",
686-
}))
687-
})
688-
})

0 commit comments

Comments
 (0)