Skip to content

Commit 6639f34

Browse files
committed
Default trace all engines/queries to True.
This is done in order to improve usability - and this is something we do now by default in other connectors/libraries.
1 parent 9178b89 commit 6639f34

File tree

5 files changed

+50
-48
lines changed

5 files changed

+50
-48
lines changed

Diff for: README.rst

+9-12
Original file line numberDiff line numberDiff line change
@@ -14,44 +14,41 @@ Run the following command::
1414
Getting started
1515
===============
1616

17-
Please see the examples directory. Overall, basic usage requires that a tracer gets set, an Engine (or Connection) is registered, and statements get their parent spans assigned (if any):
17+
Please see the examples directory. Overall, basic usage requires that a tracer gets set, and statements get their parent spans assigned (if any):
1818

1919
.. code-block:: python
2020
2121
import sqlalchemy_opentracing
2222
2323
sqlalchemy_opentracing.init_tracing(tracer) # A OpenTracing compatible tracer.
24-
sqlalchemy_opentracing.register_engine(engine) # A valid SQLAlchemy Engine object.
2524
2625
with engine.begin() as conn:
2726
sel = select([users])
28-
sqlalchemy_opentracing.set_traced(sel)
27+
sqlalchemy_opentracing.set_parent_span(sel, main_span)
2928
conn.execute(sel)
3029
31-
By default, only statements marked to be traced are taken into account (explicitly through set_traced() or implicitly when registering its parent span through set_parent_span()). Alternatively, you can enable tracing of all queries under the registered Engine:
30+
By default, all statements in all engines are traced. Alternatively, you can enable tracing of all queries under a specific Engine by specifying that not all engines are registered, and register the Engine yourself:
3231

3332
.. code-block:: python
3433
35-
sqlalchemy_opentracing.init_tracing(tracer, trace_all_queries=True)
34+
sqlalchemy_opentracing.init_tracing(tracer, trace_all_engines=False)
3635
sqlalchemy_opentracing.register_engine(engine)
3736
38-
# this statement will be traced too (without a parent span, though)
37+
# Only queries under `engine` will be traced.
3938
with engine.begin() as conn:
4039
sel = select([users])
4140
conn.execute(sel)
4241
43-
It is also possible to have all engines being registered automatically (independently of the `trace_all_queries` flag, which can be enabled or disabled):
42+
It is also possible to prevent tracing of all queries automatically (independently of whether all engines are traced or not), and have them marked explicitly (with or without a parent span):
4443

4544
.. code-block:: python
4645
47-
# No need to call register_engine()
48-
sqlalchemy_opentracing.init_tracing(tracer, trace_all_engines=True)
46+
sqlalchemy_opentracing.init_tracing(tracer, trace_all_queries=False)
4947
5048
with engine.begin() as conn:
5149
sel = select([users])
52-
...
53-
54-
This is equivalent to calling `register_engine` with the `sqlalchemy.engine.Engine` class.
50+
sqlalchemy_opentracing.set_traced(sel)
51+
sqlalchemy_opentracing.set_parent_span(sel, main_span) # Optional
5552
5653
The resulting spans will have an operation name related to the sql statement (such as `create-table` or `insert`), and will include exception information (if any), the dialect/backend (such as sqlite), and a few other hints.
5754

Diff for: sqlalchemy_opentracing/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
g_trace_all_queries = False
77
g_trace_all_engines = False
88

9-
def init_tracing(tracer, trace_all_engines=False, trace_all_queries=False):
9+
def init_tracing(tracer, trace_all_engines=True, trace_all_queries=True):
1010
'''
1111
Set our global tracer.
1212
Tracer objects from our pyramid/flask/django libraries

Diff for: tests/test_api.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,22 @@ def setUp(self):
1919
def tearDown(self):
2020
sqlalchemy_opentracing._clear_tracer()
2121

22-
def test_init(self):
22+
@patch('sqlalchemy_opentracing.register_engine')
23+
def test_init(self, mock_register):
2324
tracer = DummyTracer()
2425
sqlalchemy_opentracing.init_tracing(tracer)
2526
self.assertEqual(tracer, sqlalchemy_opentracing.g_tracer)
26-
self.assertEqual(False, sqlalchemy_opentracing.g_trace_all_queries)
27+
self.assertEqual(True, sqlalchemy_opentracing.g_trace_all_queries)
2728

28-
def test_init_subtracer(self):
29+
@patch('sqlalchemy_opentracing.register_engine')
30+
def test_init_subtracer(self, mock_register):
2931
tracer = DummyTracer(with_subtracer=True)
3032
sqlalchemy_opentracing.init_tracing(tracer)
3133
self.assertEqual(tracer._tracer, sqlalchemy_opentracing.g_tracer)
32-
self.assertEqual(False, sqlalchemy_opentracing.g_trace_all_queries)
34+
self.assertEqual(True, sqlalchemy_opentracing.g_trace_all_queries)
3335

34-
def test_init_trace_all_queries(self):
36+
@patch('sqlalchemy_opentracing.register_engine')
37+
def test_init_trace_all_queries(self, mock_register):
3538
sqlalchemy_opentracing.init_tracing(DummyTracer(), trace_all_queries=False)
3639
self.assertEqual(False, sqlalchemy_opentracing.g_trace_all_queries)
3740

@@ -42,13 +45,13 @@ def test_init_trace_all_queries(self):
4245
def test_init_trace_all_engines(self, mock_register):
4346
tracer = DummyTracer()
4447
sqlalchemy_opentracing.init_tracing(tracer)
45-
self.assertEqual(0, mock_register.call_count)
48+
self.assertEqual(1, mock_register.call_count)
4649

4750
sqlalchemy_opentracing.init_tracing(tracer, trace_all_engines=False)
48-
self.assertEqual(0, mock_register.call_count)
51+
self.assertEqual(1, mock_register.call_count) # Not called
4952

5053
sqlalchemy_opentracing.init_tracing(tracer, trace_all_engines=True)
51-
self.assertEqual(1, mock_register.call_count)
54+
self.assertEqual(2, mock_register.call_count) # Called again
5255

5356
def test_traced_property(self):
5457
stmt_obj = CreateTable(self.users_table)

Diff for: tests/test_core.py

+16-14
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def tearDown(self):
2020

2121
def test_traced(self):
2222
tracer = DummyTracer()
23-
sqlalchemy_opentracing.init_tracing(tracer)
23+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
2424
sqlalchemy_opentracing.register_engine(self.engine)
2525

2626
creat = CreateTable(self.users_table)
@@ -40,7 +40,7 @@ def test_traced(self):
4040

4141
def test_traced_none(self):
4242
tracer = DummyTracer()
43-
sqlalchemy_opentracing.init_tracing(tracer)
43+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
4444
sqlalchemy_opentracing.register_engine(self.engine)
4545

4646
creat = CreateTable(self.users_table)
@@ -50,7 +50,7 @@ def test_traced_none(self):
5050

5151
def test_traced_all_queries(self):
5252
tracer = DummyTracer()
53-
sqlalchemy_opentracing.init_tracing(tracer, trace_all_queries=True)
53+
sqlalchemy_opentracing.init_tracing(tracer, False, trace_all_queries=True)
5454
sqlalchemy_opentracing.register_engine(self.engine)
5555

5656
creat = CreateTable(self.users_table)
@@ -61,7 +61,9 @@ def test_traced_all_queries(self):
6161
def test_traced_all_engines(self):
6262
# Don't register the engine explicitly.
6363
tracer = DummyTracer()
64-
sqlalchemy_opentracing.init_tracing(tracer, trace_all_engines=True)
64+
sqlalchemy_opentracing.init_tracing(tracer,
65+
trace_all_engines=True,
66+
trace_all_queries=False)
6567

6668
creat = CreateTable(self.users_table)
6769
sqlalchemy_opentracing.set_traced(creat)
@@ -77,7 +79,7 @@ def test_traced_all_engines(self):
7779

7880
def test_traced_error(self):
7981
tracer = DummyTracer()
80-
sqlalchemy_opentracing.init_tracing(tracer)
82+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
8183
sqlalchemy_opentracing.register_engine(self.engine)
8284

8385
creat = CreateTable(self.users_table)
@@ -104,7 +106,7 @@ def test_traced_error(self):
104106

105107
def test_trace_text(self):
106108
tracer = DummyTracer()
107-
sqlalchemy_opentracing.init_tracing(tracer, trace_all_queries=True)
109+
sqlalchemy_opentracing.init_tracing(tracer, False, trace_all_queries=True)
108110
sqlalchemy_opentracing.register_engine(self.engine)
109111

110112
self.engine.execute('CREATE TABLE users (id INTEGER NOT NULL, name VARCHAR, PRIMARY KEY (id))')
@@ -120,7 +122,7 @@ def test_trace_text(self):
120122

121123
def test_trace_text_error(self):
122124
tracer = DummyTracer()
123-
sqlalchemy_opentracing.init_tracing(tracer, trace_all_queries=True)
125+
sqlalchemy_opentracing.init_tracing(tracer, False, trace_all_queries=True)
124126
sqlalchemy_opentracing.register_engine(self.engine)
125127

126128
try:
@@ -142,7 +144,7 @@ def test_trace_text_error(self):
142144

143145
def test_traced_transaction(self):
144146
tracer = DummyTracer()
145-
sqlalchemy_opentracing.init_tracing(tracer)
147+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
146148
sqlalchemy_opentracing.register_engine(self.engine)
147149

148150
creat = CreateTable(self.users_table)
@@ -165,7 +167,7 @@ def test_traced_transaction(self):
165167

166168
def test_traced_transaction_nested(self):
167169
tracer = DummyTracer()
168-
sqlalchemy_opentracing.init_tracing(tracer)
170+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
169171
sqlalchemy_opentracing.register_engine(self.engine)
170172

171173
creat = CreateTable(self.users_table)
@@ -191,7 +193,7 @@ def test_traced_transaction_nested(self):
191193

192194
def test_traced_rollback(self):
193195
tracer = DummyTracer()
194-
sqlalchemy_opentracing.init_tracing(tracer)
196+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
195197
sqlalchemy_opentracing.register_engine(self.engine)
196198

197199
creat = CreateTable(self.users_table)
@@ -220,7 +222,7 @@ def test_traced_rollback(self):
220222

221223
def test_traced_after_transaction(self):
222224
tracer = DummyTracer()
223-
sqlalchemy_opentracing.init_tracing(tracer)
225+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
224226
sqlalchemy_opentracing.register_engine(self.engine)
225227

226228
creat = CreateTable(self.users_table)
@@ -243,7 +245,7 @@ def test_traced_after_transaction(self):
243245

244246
def test_traced_after_rollback(self):
245247
tracer = DummyTracer()
246-
sqlalchemy_opentracing.init_tracing(tracer)
248+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
247249
sqlalchemy_opentracing.register_engine(self.engine)
248250

249251
creat = CreateTable(self.users_table)
@@ -273,7 +275,7 @@ def test_traced_after_rollback(self):
273275

274276
def test_traced_clear_connection(self):
275277
tracer = DummyTracer()
276-
sqlalchemy_opentracing.init_tracing(tracer)
278+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
277279
sqlalchemy_opentracing.register_engine(self.engine)
278280

279281
creat = CreateTable(self.users_table)
@@ -294,7 +296,7 @@ def test_traced_clear_connection(self):
294296

295297
def test_unregister_engine(self):
296298
tracer = DummyTracer()
297-
sqlalchemy_opentracing.init_tracing(tracer, trace_all_queries=True)
299+
sqlalchemy_opentracing.init_tracing(tracer, False, trace_all_queries=True)
298300
sqlalchemy_opentracing.register_engine(self.engine)
299301

300302
creat = CreateTable(self.users_table)

Diff for: tests/test_orm.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def tearDown(self):
2626

2727
def test_traced_simple(self):
2828
tracer = DummyTracer()
29-
sqlalchemy_opentracing.init_tracing(tracer)
29+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
3030
sqlalchemy_opentracing.register_engine(self.engine)
3131

3232
session = self.session
@@ -46,7 +46,7 @@ def test_traced_simple(self):
4646

4747
def test_traced_none(self):
4848
tracer = DummyTracer()
49-
sqlalchemy_opentracing.init_tracing(tracer)
49+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
5050
sqlalchemy_opentracing.register_engine(self.engine)
5151

5252
session = self.session
@@ -59,7 +59,7 @@ def test_traced_none(self):
5959
# test mixing insert with select and insert
6060
def test_traced_all(self):
6161
tracer = DummyTracer()
62-
sqlalchemy_opentracing.init_tracing(tracer, trace_all_queries=True)
62+
sqlalchemy_opentracing.init_tracing(tracer, False, trace_all_queries=True)
6363
sqlalchemy_opentracing.register_engine(self.engine)
6464

6565
session = self.session
@@ -74,7 +74,7 @@ def test_traced_all(self):
7474

7575
def test_traced_error(self):
7676
tracer = DummyTracer()
77-
sqlalchemy_opentracing.init_tracing(tracer)
77+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
7878
sqlalchemy_opentracing.register_engine(self.engine)
7979

8080
# Don't trace this one.
@@ -104,7 +104,7 @@ def test_traced_error(self):
104104

105105
def test_traced_parent(self):
106106
tracer = DummyTracer()
107-
sqlalchemy_opentracing.init_tracing(tracer)
107+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
108108
sqlalchemy_opentracing.register_engine(self.engine)
109109

110110
session = self.session
@@ -121,7 +121,7 @@ def test_traced_parent(self):
121121

122122
def test_traced_text(self):
123123
tracer = DummyTracer()
124-
sqlalchemy_opentracing.init_tracing(tracer)
124+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
125125
sqlalchemy_opentracing.register_engine(self.engine)
126126

127127
session = self.session
@@ -142,7 +142,7 @@ def test_traced_text(self):
142142

143143
def test_traced_text_error(self):
144144
tracer = DummyTracer()
145-
sqlalchemy_opentracing.init_tracing(tracer)
145+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
146146
sqlalchemy_opentracing.register_engine(self.engine)
147147

148148
session = self.session
@@ -168,7 +168,7 @@ def test_traced_text_error(self):
168168

169169
def test_traced_after_commit(self):
170170
tracer = DummyTracer()
171-
sqlalchemy_opentracing.init_tracing(tracer)
171+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
172172
sqlalchemy_opentracing.register_engine(self.engine)
173173

174174
session = self.session
@@ -189,7 +189,7 @@ def test_traced_after_commit(self):
189189

190190
def test_traced_after_rollback(self):
191191
tracer = DummyTracer()
192-
sqlalchemy_opentracing.init_tracing(tracer)
192+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
193193
sqlalchemy_opentracing.register_engine(self.engine)
194194

195195
session = self.session
@@ -212,7 +212,7 @@ def test_traced_after_rollback(self):
212212

213213
def test_traced_commit_repeat(self):
214214
tracer = DummyTracer()
215-
sqlalchemy_opentracing.init_tracing(tracer)
215+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
216216
sqlalchemy_opentracing.register_engine(self.engine)
217217

218218
parent_span1 = DummySpan('parent1')
@@ -237,7 +237,7 @@ def test_traced_commit_repeat(self):
237237
@unittest.skip('SQLite doesnt properly handle savepoints')
238238
def test_traced_savepoint(self):
239239
tracer = DummyTracer()
240-
sqlalchemy_opentracing.init_tracing(tracer)
240+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
241241
sqlalchemy_opentracing.register_engine(self.engine)
242242

243243
session = self.session
@@ -256,7 +256,7 @@ def test_traced_savepoint(self):
256256

257257
def test_traced_bulk_insert(self):
258258
tracer = DummyTracer()
259-
sqlalchemy_opentracing.init_tracing(tracer)
259+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
260260
sqlalchemy_opentracing.register_engine(self.engine)
261261

262262
parent_span = DummySpan('parent')
@@ -277,7 +277,7 @@ def test_traced_bulk_insert(self):
277277

278278
def test_traced_clear_session(self):
279279
tracer = DummyTracer()
280-
sqlalchemy_opentracing.init_tracing(tracer)
280+
sqlalchemy_opentracing.init_tracing(tracer, False, False)
281281
sqlalchemy_opentracing.register_engine(self.engine)
282282

283283
session = self.session

0 commit comments

Comments
 (0)