Skip to content
This repository was archived by the owner on Sep 17, 2025. It is now read-only.

Commit 781b3cb

Browse files
geobeaureyang
authored andcommitted
Make the service name configurable for Jaeger in flask and django (#352)
* Make the service name configurable for Jaeger in flask and django * Fix typo * Fix a bug and added tests
1 parent c49495d commit 781b3cb

4 files changed

Lines changed: 74 additions & 1 deletion

File tree

opencensus/trace/ext/django/middleware.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,11 @@ def __init__(self, get_response=None):
153153
service_name=_service_name,
154154
endpoint=_endpoint,
155155
transport=transport)
156+
elif self._exporter.__name__ == 'JaegerExporter':
157+
_service_name = self._get_service_name(settings.params)
158+
self.exporter = self._exporter(
159+
service_name=_service_name,
160+
transport=transport)
156161
else:
157162
self.exporter = self._exporter(transport=transport)
158163

opencensus/trace/ext/flask/flask_middleware.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,11 @@ def init_app(self, app):
157157
service_name=_service_name,
158158
endpoint=_endpoint,
159159
transport=transport)
160+
elif self.exporter.__name__ == 'JaegerExporter':
161+
_service_name = self._get_service_name(params)
162+
self.exporter = self.exporter(
163+
service_name=_service_name,
164+
transport=transport)
160165
else:
161166
self.exporter = self.exporter(transport=transport)
162167

tests/unit/trace/ext/django/test_middleware.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from opencensus.trace import span as span_module
2323
from opencensus.trace.exporters import print_exporter
2424
from opencensus.trace.exporters import zipkin_exporter
25+
from opencensus.trace.exporters import jaeger_exporter
2526
from opencensus.trace.exporters.ocagent import trace_exporter
2627
from opencensus.trace.exporters.transports import sync
2728
from opencensus.trace.ext import utils
@@ -133,6 +134,43 @@ def test_constructor_zipkin(self):
133134
self.assertEqual(middleware.exporter.host_name, host_name)
134135
self.assertEqual(middleware.exporter.port, port)
135136

137+
def test_constructor_jaeger(self):
138+
from opencensus.trace.ext.django import middleware
139+
140+
service_name = 'test_service'
141+
params = {
142+
'SERVICE_NAME': service_name,
143+
'TRANSPORT':
144+
'opencensus.trace.exporters.transports.sync.SyncTransport',
145+
}
146+
147+
patch_jaeger = mock.patch(
148+
'opencensus.trace.ext.django.config.settings.EXPORTER',
149+
jaeger_exporter.JaegerExporter)
150+
151+
patch_params = mock.patch(
152+
'opencensus.trace.ext.django.config.settings.params',
153+
params)
154+
155+
with patch_jaeger, patch_params:
156+
middleware = middleware.OpencensusMiddleware()
157+
158+
self.assertIs(middleware._sampler, always_on.AlwaysOnSampler)
159+
self.assertIs(
160+
middleware._exporter, jaeger_exporter.JaegerExporter)
161+
self.assertIs(
162+
middleware._propagator,
163+
google_cloud_format.GoogleCloudFormatPropagator)
164+
165+
assert isinstance(middleware.sampler, always_on.AlwaysOnSampler)
166+
assert isinstance(
167+
middleware.exporter, jaeger_exporter.JaegerExporter)
168+
assert isinstance(
169+
middleware.propagator,
170+
google_cloud_format.GoogleCloudFormatPropagator)
171+
172+
self.assertEqual(middleware.exporter.service_name, service_name)
173+
136174
def test_constructor_zipkin_service_name_param(self):
137175
from opencensus.trace.ext.django import middleware
138176

tests/unit/trace/ext/flask/test_flask_middleware.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from opencensus.trace import stack_trace
2828
from opencensus.trace import status
2929
from opencensus.trace.exporters import print_exporter, stackdriver_exporter, \
30-
zipkin_exporter
30+
zipkin_exporter, jaeger_exporter
3131
from opencensus.trace.exporters.ocagent import trace_exporter
3232
from opencensus.trace.ext.flask import flask_middleware
3333
from opencensus.trace.propagation import google_cloud_format
@@ -202,6 +202,31 @@ def test_init_app_config_zipkin_exporter_service_name_param(self):
202202
self.assertEqual(middleware.exporter.host_name, host_name)
203203
self.assertEqual(middleware.exporter.port, port)
204204

205+
def test_init_app_config_jaeger_exporter(self):
206+
service_name = 'foo'
207+
app = mock.Mock()
208+
app.config = {
209+
'OPENCENSUS_TRACE': {
210+
'SAMPLER': ProbabilitySampler,
211+
'EXPORTER': jaeger_exporter.JaegerExporter,
212+
'PROPAGATOR': google_cloud_format.GoogleCloudFormatPropagator,
213+
},
214+
'OPENCENSUS_TRACE_PARAMS': {
215+
'SERVICE_NAME': service_name,
216+
},
217+
}
218+
219+
middleware = flask_middleware.FlaskMiddleware()
220+
middleware.init_app(app)
221+
222+
self.assertIs(middleware.app, app)
223+
self.assertTrue(app.before_request.called)
224+
self.assertTrue(app.after_request.called)
225+
226+
assert isinstance(
227+
middleware.exporter, jaeger_exporter.JaegerExporter)
228+
self.assertEqual(middleware.exporter.service_name, service_name)
229+
205230
def test_init_app_config_ocagent_trace_exporter(self):
206231
app = mock.Mock()
207232
app.config = {

0 commit comments

Comments
 (0)