77# 3p
88from pyramid .response import Response
99from pyramid .config import Configurator
10+ from pyramid .renderers import render_to_response
1011from pyramid .httpexceptions import HTTPInternalServerError
1112import webtest
1213from nose .tools import eq_
@@ -118,6 +119,29 @@ def test_json(self):
118119 eq_ (s .error , 0 )
119120 eq_ (s .span_type , 'template' )
120121
122+ def test_renderer (self ):
123+ res = self .app .get ('/renderer' , status = 200 )
124+ assert self .rend ._received ['request' ] is not None
125+ self .rend .assert_ (foo = 'bar' )
126+ writer = self .tracer .writer
127+ spans = writer .pop ()
128+ eq_ (len (spans ), 2 )
129+ spans_by_name = {s .name : s for s in spans }
130+ s = spans_by_name ['pyramid.request' ]
131+ eq_ (s .service , 'foobar' )
132+ eq_ (s .resource , 'GET renderer' )
133+ eq_ (s .error , 0 )
134+ eq_ (s .span_type , 'http' )
135+ eq_ (s .meta .get ('http.method' ), 'GET' )
136+ eq_ (s .meta .get ('http.status_code' ), '200' )
137+ eq_ (s .meta .get ('http.url' ), '/renderer' )
138+ eq_ (s .meta .get ('pyramid.route.name' ), 'renderer' )
139+
140+ s = spans_by_name ['pyramid.render' ]
141+ eq_ (s .service , 'foobar' )
142+ eq_ (s .error , 0 )
143+ eq_ (s .span_type , 'template' )
144+
121145class TestPyramid (PyramidBase ):
122146 def setUp (self ):
123147 from tests .test_tracer import get_dummy_tracer
@@ -128,6 +152,7 @@ def setUp(self):
128152 'datadog_tracer' : self .tracer
129153 }
130154 config = Configurator (settings = settings )
155+ self .rend = config .testing_add_renderer ('template.pt' )
131156 trace_pyramid (config )
132157
133158 app = get_app (config )
@@ -213,14 +238,19 @@ def exception(request):
213238 def json (request ):
214239 return {'a' : 1 }
215240
241+ def renderer (request ):
242+ return render_to_response ('template.pt' , {'foo' : 'bar' }, request = request )
243+
216244 config .add_route ('index' , '/' )
217245 config .add_route ('error' , '/error' )
218246 config .add_route ('exception' , '/exception' )
219247 config .add_route ('json' , '/json' )
248+ config .add_route ('renderer' , '/renderer' )
220249 config .add_view (index , route_name = 'index' )
221250 config .add_view (error , route_name = 'error' )
222251 config .add_view (exception , route_name = 'exception' )
223252 config .add_view (json , route_name = 'json' , renderer = 'json' )
253+ config .add_view (renderer , route_name = 'renderer' , renderer = 'template.pt' )
224254 return config .make_wsgi_app ()
225255
226256
0 commit comments