Skip to content

Commit fa0b526

Browse files
committed
[mysql] systematically checking sql.query
1 parent c6d6d9d commit fa0b526

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

tests/contrib/mysql/test_mysql.py

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55

66
from ddtrace.contrib.mysql import missing_modules
77

8-
from nose.tools import eq_, assert_greater_equal, assert_is_not_none, assert_true
8+
from nose.tools import eq_, \
9+
assert_dict_contains_subset, \
10+
assert_greater_equal, \
11+
assert_is_not_none, \
12+
assert_true
913

1014
from ddtrace.tracer import Tracer
1115
from ddtrace.contrib.mysql import get_traced_mysql_connection
@@ -181,10 +185,14 @@ def test_query_with_several_rows():
181185
MySQL = get_traced_mysql_connection(tracer, service=SERVICE)
182186
conn = MySQL(**MYSQL_CONFIG)
183187
cursor = conn.cursor()
184-
cursor.execute("SELECT n FROM "
185-
"(SELECT 42 n UNION SELECT 421 UNION SELECT 4210) m")
188+
query = "SELECT n FROM " \
189+
"(SELECT 42 n UNION SELECT 421 UNION SELECT 4210) m"
190+
cursor.execute(query)
186191
rows = cursor.fetchall()
187192
eq_(len(rows), 3)
193+
spans = writer.pop()
194+
for span in spans:
195+
assert_dict_contains_subset({'sql.query': query}, span.meta)
188196

189197
def test_query_many():
190198
"""Tests that the executemany method is correctly wrapped."""
@@ -208,8 +216,14 @@ def test_query_many():
208216
eq_(rows[0][1], "this is bar")
209217
eq_(rows[1][0], "foo")
210218
eq_(rows[1][1], "this is foo")
219+
211220
cursor.execute(DROP_TABLE_DUMMY)
212221

222+
spans = writer.pop()
223+
assert_greater_equal(len(spans), 3)
224+
span = spans[2]
225+
assert_dict_contains_subset({'sql.query': stmt}, span.meta)
226+
213227
def test_query_proc():
214228
"""Tests that callproc works as expected, and generates a correct span."""
215229
writer = DummyWriter()
@@ -270,8 +284,10 @@ def test_fetch_variants():
270284
stmt = "INSERT INTO dummy (dummy_key,dummy_value) VALUES (%s, %s)"
271285
data = [("%02d" % i, "this is %d" % i) for i in range(NB_FETCH_TOTAL)]
272286
cursor.executemany(stmt, data)
273-
cursor.execute("SELECT dummy_key, dummy_value FROM dummy "
274-
"ORDER BY dummy_key")
287+
query = "SELECT dummy_key, dummy_value FROM dummy " \
288+
"ORDER BY dummy_key"
289+
cursor.execute(query)
290+
writer.pop() # flushing traces
275291

276292
rows = cursor.fetchmany(size=NB_FETCH_MANY)
277293
fetchmany_rowcount_a = cursor.rowcount
@@ -303,10 +319,11 @@ def test_fetch_variants():
303319

304320
eq_(NB_FETCH_TOTAL, fetchmany_nbrows_a + fetchmany_nbrows_b + 2)
305321

306-
cursor.execute(DROP_TABLE_DUMMY)
307-
308322
spans = writer.pop()
309-
assert_greater_equal(len(spans), 6)
323+
for span in spans:
324+
assert_dict_contains_subset({'sql.query': query}, span.meta)
325+
326+
cursor.execute(DROP_TABLE_DUMMY)
310327

311328
def check_connection_class(buffered, raw, baseclass_name):
312329
writer = DummyWriter()
@@ -317,10 +334,14 @@ def check_connection_class(buffered, raw, baseclass_name):
317334
conn = MySQL(buffered=buffered, raw=raw, **MYSQL_CONFIG)
318335
cursor = conn.cursor()
319336
eq_(cursor._datadog_baseclass_name, baseclass_name)
320-
cursor.execute("SELECT 1")
337+
query = "SELECT 1"
338+
cursor.execute(query)
321339
rows = cursor.fetchall()
322340
eq_(len(rows), 1)
323341
eq_(int(rows[0][0]), 1)
342+
spans = writer.pop()
343+
for span in spans:
344+
assert_dict_contains_subset({'sql.query': query}, span.meta)
324345

325346
def test_connection_class():
326347
"""
@@ -345,10 +366,14 @@ def check_cursor_class(buffered, raw, baseclass_name):
345366
conn = MySQL(**MYSQL_CONFIG)
346367
cursor = conn.cursor(buffered=buffered, raw=raw)
347368
eq_(cursor._datadog_baseclass_name, baseclass_name)
369+
query = "SELECT 1"
348370
cursor.execute("SELECT 1")
349371
rows = cursor.fetchall()
350372
eq_(len(rows), 1)
351373
eq_(int(rows[0][0]), 1)
374+
spans = writer.pop()
375+
for span in spans:
376+
assert_dict_contains_subset({'sql.query': query}, span.meta)
352377

353378
def test_cursor_class():
354379
"""

0 commit comments

Comments
 (0)