Skip to content

Commit d231c53

Browse files
mauriciovasquezbernalc24t
authored andcommitted
API: change order of arguments in add_event (open-telemetry#270)
e4d8949 ("OpenTracing Bridge - Initial implementation (open-telemetry#211)") introduced a new timestamp argument to the add_event method. This commit moves that argument to be the last one because it is more common to have event attributes than an explicitly timestamp.
1 parent f4cd5cc commit d231c53

File tree

4 files changed

+50
-37
lines changed

4 files changed

+50
-37
lines changed

ext/opentelemetry-ext-opentracing-shim/src/opentelemetry/ext/opentracing_shim/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def log_kv(self, key_values, timestamp=None):
7575
event_timestamp = None
7676

7777
event_name = util.event_name_from_kv(key_values)
78-
self._otel_span.add_event(event_name, event_timestamp, key_values)
78+
self._otel_span.add_event(event_name, key_values, event_timestamp)
7979
return self
8080

8181
@deprecated(reason="This method is deprecated in favor of log_kv")

opentelemetry-api/src/opentelemetry/trace/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ class Event:
9595
"""A text annotation with a set of attributes."""
9696

9797
def __init__(
98-
self, name: str, timestamp: int, attributes: types.Attributes = None
98+
self, name: str, attributes: types.Attributes, timestamp: int
9999
) -> None:
100100
self._name = name
101101
self._attributes = attributes
@@ -182,8 +182,8 @@ def set_attribute(self, key: str, value: types.AttributeValue) -> None:
182182
def add_event(
183183
self,
184184
name: str,
185-
timestamp: int = None,
186185
attributes: types.Attributes = None,
186+
timestamp: int = None,
187187
) -> None:
188188
"""Adds an `Event`.
189189

opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,14 @@ def set_attribute(self, key: str, value: types.AttributeValue) -> None:
202202
def add_event(
203203
self,
204204
name: str,
205-
timestamp: int = None,
206205
attributes: types.Attributes = None,
206+
timestamp: int = None,
207207
) -> None:
208208
self.add_lazy_event(
209209
trace_api.Event(
210210
name,
211-
time_ns() if timestamp is None else timestamp,
212211
Span.empty_attributes if attributes is None else attributes,
212+
time_ns() if timestamp is None else timestamp,
213213
)
214214
)
215215

opentelemetry-sdk/tests/trace/test_trace.py

+45-32
Original file line numberDiff line numberDiff line change
@@ -213,30 +213,15 @@ def test_start_as_current_span_explicit(self):
213213

214214

215215
class TestSpan(unittest.TestCase):
216+
def setUp(self):
217+
self.tracer = trace.Tracer("test_span")
218+
216219
def test_basic_span(self):
217220
span = trace.Span("name", mock.Mock(spec=trace_api.SpanContext))
218221
self.assertEqual(span.name, "name")
219222

220-
def test_span_members(self):
221-
tracer = trace.Tracer("test_span_members")
222-
223-
other_context1 = trace_api.SpanContext(
224-
trace_id=trace.generate_trace_id(),
225-
span_id=trace.generate_span_id(),
226-
)
227-
other_context2 = trace_api.SpanContext(
228-
trace_id=trace.generate_trace_id(),
229-
span_id=trace.generate_span_id(),
230-
)
231-
other_context3 = trace_api.SpanContext(
232-
trace_id=trace.generate_trace_id(),
233-
span_id=trace.generate_span_id(),
234-
)
235-
236-
self.assertIsNone(tracer.get_current_span())
237-
238-
with tracer.start_as_current_span("root") as root:
239-
# attributes
223+
def test_attributes(self):
224+
with self.tracer.start_as_current_span("root") as root:
240225
root.set_attribute("component", "http")
241226
root.set_attribute("http.method", "GET")
242227
root.set_attribute(
@@ -263,30 +248,57 @@ def test_span_members(self):
263248
self.assertEqual(root.attributes["misc.pi"], 3.14)
264249
self.assertEqual(root.attributes["attr-key"], "attr-value2")
265250

266-
# events
251+
def test_events(self):
252+
self.assertIsNone(self.tracer.get_current_span())
253+
254+
with self.tracer.start_as_current_span("root") as root:
255+
# only event name
267256
root.add_event("event0")
257+
258+
# event name and attributes
268259
now = time_ns()
269-
root.add_event(
270-
"event1", timestamp=now, attributes={"name": "birthday"}
271-
)
260+
root.add_event("event1", {"name": "pluto"})
261+
262+
# event name, attributes and timestamp
263+
now = time_ns()
264+
root.add_event("event2", {"name": "birthday"}, now)
265+
266+
# lazy event
272267
root.add_lazy_event(
273-
trace_api.Event("event2", now, {"name": "hello"})
268+
trace_api.Event("event3", {"name": "hello"}, now)
274269
)
275270

276-
self.assertEqual(len(root.events), 3)
271+
self.assertEqual(len(root.events), 4)
277272

278273
self.assertEqual(root.events[0].name, "event0")
279274
self.assertEqual(root.events[0].attributes, {})
280275

281276
self.assertEqual(root.events[1].name, "event1")
282-
self.assertEqual(root.events[1].attributes, {"name": "birthday"})
283-
self.assertEqual(root.events[1].timestamp, now)
277+
self.assertEqual(root.events[1].attributes, {"name": "pluto"})
284278

285279
self.assertEqual(root.events[2].name, "event2")
286-
self.assertEqual(root.events[2].attributes, {"name": "hello"})
280+
self.assertEqual(root.events[2].attributes, {"name": "birthday"})
287281
self.assertEqual(root.events[2].timestamp, now)
288282

289-
# links
283+
self.assertEqual(root.events[3].name, "event3")
284+
self.assertEqual(root.events[3].attributes, {"name": "hello"})
285+
self.assertEqual(root.events[3].timestamp, now)
286+
287+
def test_links(self):
288+
other_context1 = trace_api.SpanContext(
289+
trace_id=trace.generate_trace_id(),
290+
span_id=trace.generate_span_id(),
291+
)
292+
other_context2 = trace_api.SpanContext(
293+
trace_id=trace.generate_trace_id(),
294+
span_id=trace.generate_span_id(),
295+
)
296+
other_context3 = trace_api.SpanContext(
297+
trace_id=trace.generate_trace_id(),
298+
span_id=trace.generate_span_id(),
299+
)
300+
301+
with self.tracer.start_as_current_span("root") as root:
290302
root.add_link(other_context1)
291303
root.add_link(other_context2, {"name": "neighbor"})
292304
root.add_lazy_link(
@@ -313,6 +325,8 @@ def test_span_members(self):
313325
)
314326
self.assertEqual(root.links[2].attributes, {"component": "http"})
315327

328+
def test_update_name(self):
329+
with self.tracer.start_as_current_span("root") as root:
316330
# name
317331
root.update_name("toor")
318332
self.assertEqual(root.name, "toor")
@@ -359,14 +373,13 @@ def test_span_override_start_and_end_time(self):
359373

360374
def test_ended_span(self):
361375
""""Events, attributes are not allowed after span is ended"""
362-
tracer = trace.Tracer("test_ended_span")
363376

364377
other_context1 = trace_api.SpanContext(
365378
trace_id=trace.generate_trace_id(),
366379
span_id=trace.generate_span_id(),
367380
)
368381

369-
with tracer.start_as_current_span("root") as root:
382+
with self.tracer.start_as_current_span("root") as root:
370383
# everything should be empty at the beginning
371384
self.assertEqual(len(root.attributes), 0)
372385
self.assertEqual(len(root.events), 0)

0 commit comments

Comments
 (0)