@@ -95,6 +95,63 @@ func TestWithoutCaller(t *testing.T) {
95
95
}
96
96
}
97
97
98
+ func TestWithCommandFilter (t * testing.T ) {
99
+
100
+ t .Run ("filter out ping command" , func (t * testing.T ) {
101
+ provider := sdktrace .NewTracerProvider ()
102
+ hook := newTracingHook (
103
+ "" ,
104
+ WithTracerProvider (provider ),
105
+ WithCommandFilter (func (cmd redis.Cmder ) bool {
106
+ return cmd .Name () == "ping"
107
+ }),
108
+ )
109
+ ctx , span := provider .Tracer ("redis-test" ).Start (context .TODO (), "redis-test" )
110
+ cmd := redis .NewCmd (ctx , "ping" )
111
+ defer span .End ()
112
+
113
+ processHook := hook .ProcessHook (func (ctx context.Context , cmd redis.Cmder ) error {
114
+ innerSpan := trace .SpanFromContext (ctx ).(sdktrace.ReadOnlySpan )
115
+ if innerSpan .Name () != "redis-test" || innerSpan .Name () == "ping" {
116
+ t .Fatalf ("ping command should not be traced" )
117
+ }
118
+
119
+ return nil
120
+ })
121
+ err := processHook (ctx , cmd )
122
+ if err != nil {
123
+ t .Fatal (err )
124
+ }
125
+ })
126
+
127
+ t .Run ("do not filter ping command" , func (t * testing.T ) {
128
+ provider := sdktrace .NewTracerProvider ()
129
+ hook := newTracingHook (
130
+ "" ,
131
+ WithTracerProvider (provider ),
132
+ WithCommandFilter (func (cmd redis.Cmder ) bool {
133
+ return false // never filter
134
+ }),
135
+ )
136
+ ctx , span := provider .Tracer ("redis-test" ).Start (context .TODO (), "redis-test" )
137
+ cmd := redis .NewCmd (ctx , "ping" )
138
+ defer span .End ()
139
+
140
+ processHook := hook .ProcessHook (func (ctx context.Context , cmd redis.Cmder ) error {
141
+ innerSpan := trace .SpanFromContext (ctx ).(sdktrace.ReadOnlySpan )
142
+ if innerSpan .Name () != "ping" {
143
+ t .Fatalf ("ping command should be traced" )
144
+ }
145
+
146
+ return nil
147
+ })
148
+ err := processHook (ctx , cmd )
149
+ if err != nil {
150
+ t .Fatal (err )
151
+ }
152
+ })
153
+ }
154
+
98
155
func TestTracingHook_DialHook (t * testing.T ) {
99
156
imsb := tracetest .NewInMemoryExporter ()
100
157
provider := sdktrace .NewTracerProvider (sdktrace .WithSyncer (imsb ))
0 commit comments