mirror of
https://github.com/redis/go-redis.git
synced 2025-11-08 13:02:18 +03:00
feat: Add support for certain slowlog commands (#3585)
* Add support for certain slowlog commands * add NonRedisEnterprise label for slow reset test --------- Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
This commit is contained in:
14
commands.go
14
commands.go
@@ -211,6 +211,8 @@ type Cmdable interface {
|
||||
ShutdownNoSave(ctx context.Context) *StatusCmd
|
||||
SlaveOf(ctx context.Context, host, port string) *StatusCmd
|
||||
SlowLogGet(ctx context.Context, num int64) *SlowLogCmd
|
||||
SlowLogLen(ctx context.Context) *IntCmd
|
||||
SlowLogReset(ctx context.Context) *StatusCmd
|
||||
Time(ctx context.Context) *TimeCmd
|
||||
DebugObject(ctx context.Context, key string) *StringCmd
|
||||
MemoryUsage(ctx context.Context, key string, samples ...int) *IntCmd
|
||||
@@ -675,6 +677,18 @@ func (c cmdable) SlowLogGet(ctx context.Context, num int64) *SlowLogCmd {
|
||||
return cmd
|
||||
}
|
||||
|
||||
func (c cmdable) SlowLogLen(ctx context.Context) *IntCmd {
|
||||
cmd := NewIntCmd(ctx, "slowlog", "len")
|
||||
_ = c(ctx, cmd)
|
||||
return cmd
|
||||
}
|
||||
|
||||
func (c cmdable) SlowLogReset(ctx context.Context) *StatusCmd {
|
||||
cmd := NewStatusCmd(ctx, "slowlog", "reset")
|
||||
_ = c(ctx, cmd)
|
||||
return cmd
|
||||
}
|
||||
|
||||
func (c cmdable) Latency(ctx context.Context) *LatencyCmd {
|
||||
cmd := NewLatencyCmd(ctx, "latency", "latest")
|
||||
_ = c(ctx, cmd)
|
||||
|
||||
@@ -8294,7 +8294,7 @@ var _ = Describe("Commands", func() {
|
||||
})
|
||||
})
|
||||
|
||||
Describe("SlowLogGet", func() {
|
||||
Describe("SlowLog", func() {
|
||||
It("returns slow query result", func() {
|
||||
const key = "slowlog-log-slower-than"
|
||||
|
||||
@@ -8311,6 +8311,34 @@ var _ = Describe("Commands", func() {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(len(result)).NotTo(BeZero())
|
||||
})
|
||||
|
||||
It("returns the number of slow queries", Label("NonRedisEnterprise"), func() {
|
||||
// Reset slowlog
|
||||
err := client.SlowLogReset(ctx).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
const key = "slowlog-log-slower-than"
|
||||
|
||||
old := client.ConfigGet(ctx, key).Val()
|
||||
// first slowlog entry is the config set command itself
|
||||
client.ConfigSet(ctx, key, "0")
|
||||
defer client.ConfigSet(ctx, key, old[key])
|
||||
|
||||
// Set a key to trigger a slow query, and this is the second slowlog entry
|
||||
client.Set(ctx, "test", "true", 0)
|
||||
result, err := client.SlowLogLen(ctx).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(result).Should(Equal(int64(2)))
|
||||
|
||||
// Reset slowlog
|
||||
err = client.SlowLogReset(ctx).Err()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
// Check if slowlog is empty, this is the first slowlog entry after reset
|
||||
result, err = client.SlowLogLen(ctx).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(result).Should(Equal(int64(1)))
|
||||
})
|
||||
})
|
||||
|
||||
Describe("Latency", Label("NonRedisEnterprise"), func() {
|
||||
|
||||
Reference in New Issue
Block a user