|
7 | 7 | from nose.tools import assert_raises, eq_ |
8 | 8 | from unittest.case import SkipTest |
9 | 9 |
|
10 | | -from ddtrace.tracer import Tracer |
11 | 10 | from ddtrace import encoding |
| 11 | +from ddtrace.tracer import Tracer |
| 12 | +from ddtrace.writer import AgentWriter |
| 13 | +from ddtrace.transport import ThreadedHTTPTransport |
12 | 14 |
|
13 | 15 |
|
14 | 16 | def test_tracer_vars(): |
@@ -264,37 +266,44 @@ def test_tracer_disabled_mem_leak(): |
264 | 266 | assert not p1, p1 |
265 | 267 |
|
266 | 268 |
|
267 | | -class DummyWriter(object): |
| 269 | +class DummyWriter(AgentWriter): |
268 | 270 | """ DummyWriter is a small fake writer used for tests. not thread-safe. """ |
269 | 271 |
|
270 | 272 | def __init__(self): |
| 273 | + # original call |
| 274 | + super(DummyWriter, self).__init__() |
| 275 | + # dummy components |
271 | 276 | self.spans = [] |
272 | 277 | self.services = {} |
| 278 | + self._reporter.transport = DummyTransport(Tracer.DEFAULT_HOSTNAME, Tracer.DEFAULT_PORT) |
273 | 279 |
|
274 | 280 | def write(self, spans, services=None): |
275 | | - # even though it's going nowhere, still encode / decode the spans |
276 | | - # as an extra safety check. |
277 | | - if spans: |
278 | | - encoding.encode_spans(spans) |
279 | | - if services: |
280 | | - encoding.encode_services(services) |
| 281 | + # ensures the writer is called as usual; this includes |
| 282 | + # the reporter encoding |
| 283 | + super(DummyWriter, self).write(spans, services=services) |
281 | 284 |
|
| 285 | + # simplify for easier retrieval |
282 | 286 | self.spans += spans |
283 | 287 | if services: |
284 | 288 | self.services.update(services) |
285 | 289 |
|
286 | | - # dummy methods |
287 | | - |
288 | 290 | def pop(self): |
| 291 | + # dummy method |
289 | 292 | s = self.spans |
290 | 293 | self.spans = [] |
291 | 294 | return s |
292 | 295 |
|
293 | 296 | def pop_services(self): |
| 297 | + # dummy method |
294 | 298 | s = self.services |
295 | 299 | self.services = {} |
296 | 300 | return s |
297 | 301 |
|
| 302 | +class DummyTransport(ThreadedHTTPTransport): |
| 303 | + """ Fake HTTPTransport for tests. """ |
| 304 | + def send(self, *args, **kwargs): |
| 305 | + pass |
| 306 | + |
298 | 307 | def get_test_tracer(): |
299 | 308 | tracer = Tracer() |
300 | 309 | tracer.writer = DummyWriter() |
|
0 commit comments