@@ -46,6 +46,27 @@ def _check_span(self, span, name):
46
46
self .assertEqual (span .attributes [SpanAttributes .NET_PEER_PORT ], 6379 )
47
47
48
48
def test_long_command (self ):
49
+ self .redis_client .mget (* range (2000 ))
50
+
51
+ spans = self .memory_exporter .get_finished_spans ()
52
+ self .assertEqual (len (spans ), 1 )
53
+ span = spans [0 ]
54
+ self ._check_span (span , "MGET" )
55
+ self .assertTrue (
56
+ span .attributes .get (SpanAttributes .DB_STATEMENT ).startswith (
57
+ "MGET ? ? ? ?"
58
+ )
59
+ )
60
+ self .assertTrue (
61
+ span .attributes .get (SpanAttributes .DB_STATEMENT ).endswith ("..." )
62
+ )
63
+
64
+ def test_long_command_unsanitized (self ):
65
+ RedisInstrumentor ().uninstrument ()
66
+ RedisInstrumentor ().instrument (
67
+ tracer_provider = self .tracer_provider , sanitize_query = False
68
+ )
69
+
49
70
self .redis_client .mget (* range (1000 ))
50
71
51
72
spans = self .memory_exporter .get_finished_spans ()
@@ -62,6 +83,22 @@ def test_long_command(self):
62
83
)
63
84
64
85
def test_basics (self ):
86
+ self .assertIsNone (self .redis_client .get ("cheese" ))
87
+ spans = self .memory_exporter .get_finished_spans ()
88
+ self .assertEqual (len (spans ), 1 )
89
+ span = spans [0 ]
90
+ self ._check_span (span , "GET" )
91
+ self .assertEqual (
92
+ span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET ?"
93
+ )
94
+ self .assertEqual (span .attributes .get ("db.redis.args_length" ), 2 )
95
+
96
+ def test_basics_unsanitized (self ):
97
+ RedisInstrumentor ().uninstrument ()
98
+ RedisInstrumentor ().instrument (
99
+ tracer_provider = self .tracer_provider , sanitize_query = False
100
+ )
101
+
65
102
self .assertIsNone (self .redis_client .get ("cheese" ))
66
103
spans = self .memory_exporter .get_finished_spans ()
67
104
self .assertEqual (len (spans ), 1 )
@@ -73,6 +110,28 @@ def test_basics(self):
73
110
self .assertEqual (span .attributes .get ("db.redis.args_length" ), 2 )
74
111
75
112
def test_pipeline_traced (self ):
113
+ with self .redis_client .pipeline (transaction = False ) as pipeline :
114
+ pipeline .set ("blah" , 32 )
115
+ pipeline .rpush ("foo" , "éé" )
116
+ pipeline .hgetall ("xxx" )
117
+ pipeline .execute ()
118
+
119
+ spans = self .memory_exporter .get_finished_spans ()
120
+ self .assertEqual (len (spans ), 1 )
121
+ span = spans [0 ]
122
+ self ._check_span (span , "SET RPUSH HGETALL" )
123
+ self .assertEqual (
124
+ span .attributes .get (SpanAttributes .DB_STATEMENT ),
125
+ "SET ? ?\n RPUSH ? ?\n HGETALL ?" ,
126
+ )
127
+ self .assertEqual (span .attributes .get ("db.redis.pipeline_length" ), 3 )
128
+
129
+ def test_pipeline_traced_unsanitized (self ):
130
+ RedisInstrumentor ().uninstrument ()
131
+ RedisInstrumentor ().instrument (
132
+ tracer_provider = self .tracer_provider , sanitize_query = False
133
+ )
134
+
76
135
with self .redis_client .pipeline (transaction = False ) as pipeline :
77
136
pipeline .set ("blah" , 32 )
78
137
pipeline .rpush ("foo" , "éé" )
@@ -90,6 +149,27 @@ def test_pipeline_traced(self):
90
149
self .assertEqual (span .attributes .get ("db.redis.pipeline_length" ), 3 )
91
150
92
151
def test_pipeline_immediate (self ):
152
+ with self .redis_client .pipeline () as pipeline :
153
+ pipeline .set ("a" , 1 )
154
+ pipeline .immediate_execute_command ("SET" , "b" , 2 )
155
+ pipeline .execute ()
156
+
157
+ spans = self .memory_exporter .get_finished_spans ()
158
+ # expecting two separate spans here, rather than a
159
+ # single span for the whole pipeline
160
+ self .assertEqual (len (spans ), 2 )
161
+ span = spans [0 ]
162
+ self ._check_span (span , "SET" )
163
+ self .assertEqual (
164
+ span .attributes .get (SpanAttributes .DB_STATEMENT ), "SET ? ?"
165
+ )
166
+
167
+ def test_pipeline_immediate_unsanitized (self ):
168
+ RedisInstrumentor ().uninstrument ()
169
+ RedisInstrumentor ().instrument (
170
+ tracer_provider = self .tracer_provider , sanitize_query = False
171
+ )
172
+
93
173
with self .redis_client .pipeline () as pipeline :
94
174
pipeline .set ("a" , 1 )
95
175
pipeline .immediate_execute_command ("SET" , "b" , 2 )
@@ -150,7 +230,7 @@ def test_basics(self):
150
230
span = spans [0 ]
151
231
self ._check_span (span , "GET" )
152
232
self .assertEqual (
153
- span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET cheese "
233
+ span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET ? "
154
234
)
155
235
self .assertEqual (span .attributes .get ("db.redis.args_length" ), 2 )
156
236
@@ -167,7 +247,7 @@ def test_pipeline_traced(self):
167
247
self ._check_span (span , "SET RPUSH HGETALL" )
168
248
self .assertEqual (
169
249
span .attributes .get (SpanAttributes .DB_STATEMENT ),
170
- "SET blah 32 \n RPUSH foo éé \n HGETALL xxx " ,
250
+ "SET ? ? \n RPUSH ? ? \n HGETALL ? " ,
171
251
)
172
252
self .assertEqual (span .attributes .get ("db.redis.pipeline_length" ), 3 )
173
253
@@ -220,6 +300,27 @@ def _check_span(self, span, name):
220
300
self .assertEqual (span .attributes [SpanAttributes .NET_PEER_PORT ], 6379 )
221
301
222
302
def test_long_command (self ):
303
+ self .redis_client .mget (* range (2000 ))
304
+
305
+ spans = self .memory_exporter .get_finished_spans ()
306
+ self .assertEqual (len (spans ), 1 )
307
+ span = spans [0 ]
308
+ self ._check_span (span , "MGET" )
309
+ self .assertTrue (
310
+ span .attributes .get (SpanAttributes .DB_STATEMENT ).startswith (
311
+ "MGET ? ? ? ?"
312
+ )
313
+ )
314
+ self .assertTrue (
315
+ span .attributes .get (SpanAttributes .DB_STATEMENT ).endswith ("..." )
316
+ )
317
+
318
+ def test_long_command_unsanitized (self ):
319
+ RedisInstrumentor ().uninstrument ()
320
+ RedisInstrumentor ().instrument (
321
+ tracer_provider = self .tracer_provider , sanitize_query = False
322
+ )
323
+
223
324
async_call (self .redis_client .mget (* range (1000 )))
224
325
225
326
spans = self .memory_exporter .get_finished_spans ()
@@ -242,7 +343,7 @@ def test_basics(self):
242
343
span = spans [0 ]
243
344
self ._check_span (span , "GET" )
244
345
self .assertEqual (
245
- span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET cheese "
346
+ span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET ? "
246
347
)
247
348
self .assertEqual (span .attributes .get ("db.redis.args_length" ), 2 )
248
349
@@ -264,7 +365,7 @@ async def pipeline_simple():
264
365
self ._check_span (span , "SET RPUSH HGETALL" )
265
366
self .assertEqual (
266
367
span .attributes .get (SpanAttributes .DB_STATEMENT ),
267
- "SET blah 32 \n RPUSH foo éé \n HGETALL xxx " ,
368
+ "SET ? ? \n RPUSH ? ? \n HGETALL ? " ,
268
369
)
269
370
self .assertEqual (span .attributes .get ("db.redis.pipeline_length" ), 3 )
270
371
@@ -284,7 +385,7 @@ async def pipeline_immediate():
284
385
span = spans [0 ]
285
386
self ._check_span (span , "SET" )
286
387
self .assertEqual (
287
- span .attributes .get (SpanAttributes .DB_STATEMENT ), "SET b 2 "
388
+ span .attributes .get (SpanAttributes .DB_STATEMENT ), "SET ? ? "
288
389
)
289
390
290
391
def test_parent (self ):
@@ -332,7 +433,7 @@ def test_basics(self):
332
433
span = spans [0 ]
333
434
self ._check_span (span , "GET" )
334
435
self .assertEqual (
335
- span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET cheese "
436
+ span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET ? "
336
437
)
337
438
self .assertEqual (span .attributes .get ("db.redis.args_length" ), 2 )
338
439
@@ -354,7 +455,7 @@ async def pipeline_simple():
354
455
self ._check_span (span , "SET RPUSH HGETALL" )
355
456
self .assertEqual (
356
457
span .attributes .get (SpanAttributes .DB_STATEMENT ),
357
- "SET blah 32 \n RPUSH foo éé \n HGETALL xxx " ,
458
+ "SET ? ? \n RPUSH ? ? \n HGETALL ? " ,
358
459
)
359
460
self .assertEqual (span .attributes .get ("db.redis.pipeline_length" ), 3 )
360
461
@@ -408,5 +509,5 @@ def test_get(self):
408
509
span = spans [0 ]
409
510
self ._check_span (span , "GET" )
410
511
self .assertEqual (
411
- span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET foo "
512
+ span .attributes .get (SpanAttributes .DB_STATEMENT ), "GET ? "
412
513
)
0 commit comments