Skip to content
This repository was archived by the owner on Jul 21, 2021. It is now read-only.

Commit e622712

Browse files
committed
Make basictracer-py KV-compliant
1 parent 8474027 commit e622712

File tree

3 files changed

+41
-9
lines changed

3 files changed

+41
-9
lines changed

basictracer/span.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,30 @@ def set_tag(self, key, value):
4444
self.tags[key] = value
4545
return super(BasicSpan, self).set_tag(key, value)
4646

47+
def log_kv(self, key_values, timestamp=None):
48+
with self._lock:
49+
self.logs.append(LogData(key_values, timestamp))
50+
return super(BasicSpan, self).log_kv(key_values, timestamp)
51+
4752
def log_event(self, event, payload=None):
53+
key_values = {"event": event}
54+
if payload is not None:
55+
key_values["payload"] = payload
4856
with self._lock:
49-
self.logs.append(LogData(event=event, payload=payload))
57+
self.logs.append(LogData(key_values))
5058
return super(BasicSpan, self).log_event(event, payload)
5159

5260
def log(self, **kwargs):
61+
key_values = {}
62+
if kwargs["event"] is not None:
63+
key_values["event"] = kwargs["event"]
64+
if kwargs["payload"] is not None:
65+
key_values["payload"] = kwargs["payload"]
66+
timestamp = None
67+
if kwargs["timestamp"] is not None:
68+
timestamp = kwargs["timestamp"]
5369
with self._lock:
54-
self.logs.append(LogData(**kwargs))
70+
self.logs.append(LogData(key_values, timestamp))
5571
return super(BasicSpan, self).log(**kwargs)
5672

5773
def finish(self, finish_time=None):
@@ -72,12 +88,9 @@ def get_baggage_item(self, key):
7288

7389

7490
class LogData(object):
75-
7691
def __init__(
7792
self,
78-
event='',
79-
timestamp=None,
80-
payload=None):
81-
self.event = event
93+
key_values,
94+
timestamp=None):
95+
self.key_values = key_values
8296
self.timestamp = time.time() if timestamp is None else timestamp
83-
self.payload = payload

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
install_requires=[
2424
'futures',
2525
'protobuf>=3.0.0b2.post2',
26-
'opentracing>=1.1,<1.2'
26+
'opentracing>=1.2,<1.3'
2727
],
2828
extras_require={
2929
'tests': [

tests/test_span.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,22 @@ def get_sampled_spans():
2121
return [span for span in recorder.get_spans() if span.context.sampled]
2222

2323
assert len(get_sampled_spans()) == 0
24+
25+
26+
def test_span_log_kv():
27+
recorder = InMemoryRecorder()
28+
tracer = BasicTracer(recorder=recorder)
29+
30+
span = tracer.start_span('x')
31+
span.log_kv({
32+
'foo': 'bar',
33+
'baz': 42,
34+
})
35+
span.finish()
36+
37+
finished_spans = recorder.get_spans()
38+
assert len(finished_spans) == 1
39+
assert len(finished_spans[0].logs) == 1
40+
assert len(finished_spans[0].logs[0].key_values) == 2
41+
assert finished_spans[0].logs[0].key_values['foo'] == 'bar'
42+
assert finished_spans[0].logs[0].key_values['baz'] == 42

0 commit comments

Comments
 (0)