@@ -2,8 +2,11 @@ package redis_test
2
2
3
3
import (
4
4
"context"
5
+ "strings"
5
6
"time"
6
7
8
+ "testing"
9
+
7
10
. "github.com/bsm/ginkgo/v2"
8
11
. "github.com/bsm/gomega"
9
12
@@ -46,3 +49,52 @@ var _ = Describe("Monitor command", Label("monitor"), func() {
46
49
Expect (lst [3 ]).To (ContainSubstring (`"set" "bap" "8"` ))
47
50
})
48
51
})
52
+
53
+ func TestMonitorCommand (t * testing.T ) {
54
+ ctx := context .TODO ()
55
+ client := redis .NewClient (& redis.Options {Addr : ":6379" })
56
+ if err := client .FlushDB (ctx ).Err (); err != nil {
57
+ t .Fatalf ("FlushDB failed: %v" , err )
58
+ }
59
+
60
+ defer func () {
61
+ if err := client .Close (); err != nil {
62
+ t .Fatalf ("Close failed: %v" , err )
63
+ }
64
+ }()
65
+
66
+ ress := make (chan string , 10 ) // Buffer to prevent blocking
67
+ client1 := redis .NewClient (& redis.Options {Addr : ":6379" }) // Adjust the Addr field as necessary
68
+ mn := client1 .Monitor (ctx , ress )
69
+ mn .Start ()
70
+ // Wait for the Redis server to be in monitoring mode.
71
+ time .Sleep (100 * time .Millisecond )
72
+ client .Set (ctx , "foo" , "bar" , 0 )
73
+ client .Set (ctx , "bar" , "baz" , 0 )
74
+ client .Set (ctx , "bap" , 8 , 0 )
75
+ client .Get (ctx , "bap" )
76
+ mn .Stop ()
77
+ var lst []string
78
+ for i := 0 ; i < 5 ; i ++ {
79
+ s := <- ress
80
+ lst = append (lst , s )
81
+ }
82
+
83
+ // Assertions
84
+ if ! containsSubstring (lst [0 ], "OK" ) {
85
+ t .Errorf ("Expected lst[0] to contain 'OK', got %s" , lst [0 ])
86
+ }
87
+ if ! containsSubstring (lst [1 ], `"set" "foo" "bar"` ) {
88
+ t .Errorf (`Expected lst[1] to contain '"set" "foo" "bar"', got %s` , lst [1 ])
89
+ }
90
+ if ! containsSubstring (lst [2 ], `"set" "bar" "baz"` ) {
91
+ t .Errorf (`Expected lst[2] to contain '"set" "bar" "baz"', got %s` , lst [2 ])
92
+ }
93
+ if ! containsSubstring (lst [3 ], `"set" "bap" "8"` ) {
94
+ t .Errorf (`Expected lst[3] to contain '"set" "bap" "8"', got %s` , lst [3 ])
95
+ }
96
+ }
97
+
98
+ func containsSubstring (s , substr string ) bool {
99
+ return strings .Contains (s , substr )
100
+ }
0 commit comments