Skip to content

Commit bb2f5a2

Browse files
author
Emanuele Palazzetti
authored
Merge pull request #334 from bemermet/bug-sendtraceswhendisabled
Fix initialization order in Django app
2 parents 2b01d10 + 47bfb24 commit bb2f5a2

File tree

2 files changed

+47
-7
lines changed

2 files changed

+47
-7
lines changed

ddtrace/contrib/django/apps.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,6 @@ def ready(self):
3131
if settings.TAGS:
3232
tracer.set_tags(settings.TAGS)
3333

34-
# define the service details
35-
tracer.set_service_info(
36-
app='django',
37-
app_type=AppTypes.web,
38-
service=settings.DEFAULT_SERVICE,
39-
)
40-
4134
# configure the tracer instance
4235
# TODO[manu]: we may use configure() but because it creates a new
4336
# AgentWriter, it breaks all tests. The configure() behavior must
@@ -46,6 +39,13 @@ def ready(self):
4639
tracer.writer.api.hostname = settings.AGENT_HOSTNAME
4740
tracer.writer.api.port = settings.AGENT_PORT
4841

42+
# define the service details
43+
tracer.set_service_info(
44+
app='django',
45+
app_type=AppTypes.web,
46+
service=settings.DEFAULT_SERVICE,
47+
)
48+
4949
if settings.AUTO_INSTRUMENT:
5050
# trace Django internals
5151
insert_exception_middleware()
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# 3rd party
2+
from django.apps import apps
3+
from django.test import TestCase, override_settings
4+
5+
# project
6+
from ddtrace.tracer import Tracer
7+
from ddtrace.contrib.django.conf import settings
8+
9+
# testing
10+
from ...test_tracer import DummyWriter
11+
12+
13+
class DjangoTracingDisabledTest(TestCase):
14+
def setUp(self):
15+
tracer = Tracer()
16+
tracer.writer = DummyWriter()
17+
self.tracer = tracer
18+
# Backup the old conf
19+
self.backupTracer = settings.TRACER
20+
self.backupEnabled = settings.ENABLED
21+
# Disable tracing
22+
settings.ENABLED = False
23+
settings.TRACER = tracer
24+
# Restart the app
25+
app = apps.get_app_config('datadog_django')
26+
app.ready()
27+
28+
def tearDown(self):
29+
# Reset the original settings
30+
settings.ENABLED = self.backupEnabled
31+
settings.TRACER = self.backupTracer
32+
33+
def test_no_service_info_is_written(self):
34+
services = self.tracer.writer.pop_services()
35+
assert len(services) == 0
36+
37+
def test_no_trace_is_written(self):
38+
settings.TRACER.trace("client.testing").finish()
39+
traces = self.tracer.writer.pop_traces()
40+
assert len(traces) == 0

0 commit comments

Comments
 (0)