1717import mock
1818
1919from opencensus .trace .tracers import context_tracer
20+ from opencensus .trace import span
21+ from opencensus .trace import execution_context
2022
2123
2224class TestContextTracer (unittest .TestCase ):
25+
26+ def tearDown (self ):
27+ execution_context .clear ()
28+
2329 def test_constructor_defaults (self ):
2430 from opencensus .trace import span_context
2531 from opencensus .trace .exporters import print_exporter
@@ -58,7 +64,14 @@ def test_finish_without_spans(self):
5864
5965 def test_finish_with_spans (self ):
6066 tracer = context_tracer .ContextTracer ()
61- tracer ._spans_list = [mock .Mock ()]
67+ tracer .start_span ('span' )
68+ tracer .finish ()
69+
70+ self .assertEqual (tracer ._spans_list , [])
71+
72+ def test_end_leftover_spans (self ):
73+ tracer = context_tracer .ContextTracer ()
74+ tracer ._spans_list = [span .Span (name = 'span' )]
6275 tracer .finish ()
6376
6477 self .assertEqual (tracer ._spans_list , [])
@@ -132,7 +145,7 @@ def test_end_span_active(self, mock_current_span):
132145
133146 self .assertTrue (mock_span .finish .called )
134147 self .assertEqual (tracer .span_context .span_id , parent_span_id )
135- self .assertTrue (tracer .exporter .export .called )
148+ self .assertFalse (tracer .exporter .export .called )
136149
137150 @mock .patch .object (context_tracer .ContextTracer , 'current_span' )
138151 def test_end_span_without_parent (self , mock_current_span ):
@@ -155,30 +168,16 @@ def test_end_span_without_parent(self, mock_current_span):
155168 cur_span = get_current_span ()
156169 self .assertIsNone (cur_span )
157170
158- @mock .patch .object (context_tracer .ContextTracer , 'current_span' )
159- def test_end_span_batch_export (self , mock_current_span ):
160- from opencensus .trace import span
161-
162- span = span .Span (name = 'test' )
171+ def test_end_span_batch_export (self ):
163172 exporter = mock .Mock ()
164173 tracer = context_tracer .ContextTracer (exporter = exporter )
165- tracer ._spans_list = [span ]
166- mock_span = mock .Mock ()
167- mock_span .name = 'span'
168- mock_span .children = []
169- mock_span .status = None
170- mock_span .links = None
171- mock_span .stack_trace = None
172- mock_span .time_events = None
173- mock_span .attributes = {}
174- mock_span .__iter__ = mock .Mock (
175- return_value = iter ([mock_span ]))
174+ span = tracer .start_span ('test' )
176175 parent_span_id = '6e0c63257de34c92'
177- mock_span .parent_span .span_id = parent_span_id
178- mock_current_span . return_value = mock_span
176+ span .parent_span .span_id = parent_span_id
177+ span . finish = mock . Mock ()
179178 tracer .end_span ()
180179
181- self .assertTrue (mock_span .finish .called )
180+ self .assertTrue (span .finish .called )
182181 self .assertEqual (tracer .span_context .span_id , parent_span_id )
183182 self .assertTrue (tracer .exporter .export .called )
184183
@@ -208,4 +207,5 @@ def test_add_attribute_to_current_span(self):
208207
209208 tracer .add_attribute_to_current_span (attribute_key , attribute_value )
210209
211- span1 .add_attribute .assert_called_once_with (attribute_key , attribute_value )
210+ span1 .add_attribute .assert_called_once_with (attribute_key ,
211+ attribute_value )
0 commit comments