Skip to content

Commit 4bbfb01

Browse files
committed
Merge branch 'main' into fix-2051
2 parents 6dd996a + 2a726e4 commit 4bbfb01

File tree

3 files changed

+111
-4
lines changed

3 files changed

+111
-4
lines changed

Diff for: CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2222
([#2044](https://github.com/open-telemetry/opentelemetry-python/pull/2044))
2323
- `opentelemetry-sdk` Add support for `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` env var
2424
([#2056](https://github.com/open-telemetry/opentelemetry-python/pull/2056))
25+
2526
## [0.23.1](https://github.com/open-telemetry/opentelemetry-python/pull/1987) - 2021-07-26
2627

2728
### Changed

Diff for: opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,10 @@ def __init__(
593593
OTEL_LINK_ATTRIBUTE_COUNT_LIMIT,
594594
_DEFAULT_OTEL_LINK_ATTRIBUTE_COUNT_LIMIT,
595595
)
596+
self.max_attribute_length = self._from_env_if_absent(
597+
max_attribute_length,
598+
OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,
599+
)
596600

597601
self.max_attribute_length = self._from_env_if_absent(
598602
max_attribute_length,

Diff for: opentelemetry-sdk/tests/trace/test_trace.py

+106-4
Original file line numberDiff line numberDiff line change
@@ -1350,7 +1350,9 @@ def test_limits_attribute_length_limits_code(self):
13501350
self.assertEqual(limits.max_span_attribute_length, 22)
13511351

13521352
# global and span limits set to different values
1353-
limits = trace.SpanLimits(max_attribute_length=22, max_span_attribute_length=33)
1353+
limits = trace.SpanLimits(
1354+
max_attribute_length=22, max_span_attribute_length=33
1355+
)
13541356
self.assertEqual(limits.max_attribute_length, 22)
13551357
self.assertEqual(limits.max_span_attribute_length, 33)
13561358

@@ -1393,6 +1395,101 @@ def test_limits_values_env(self):
13931395
self.assertEqual(limits.max_events, max_events)
13941396
self.assertEqual(limits.max_links, max_links)
13951397

1398+
def _test_span_limits(
1399+
self, tracer, max_attrs, max_events, max_links, max_attr_len
1400+
):
1401+
id_generator = RandomIdGenerator()
1402+
some_links = [
1403+
trace_api.Link(
1404+
trace_api.SpanContext(
1405+
trace_id=id_generator.generate_trace_id(),
1406+
span_id=id_generator.generate_span_id(),
1407+
is_remote=False,
1408+
),
1409+
attributes={"k": self.long_val},
1410+
)
1411+
for _ in range(100)
1412+
]
1413+
1414+
some_attrs = {
1415+
"init_attribute_{}".format(idx): self.long_val
1416+
for idx in range(100)
1417+
}
1418+
with tracer.start_as_current_span(
1419+
"root", links=some_links, attributes=some_attrs
1420+
) as root:
1421+
self.assertEqual(len(root.links), max_links)
1422+
self.assertEqual(len(root.attributes), max_attrs)
1423+
for idx in range(100):
1424+
root.set_attribute(
1425+
"my_str_attribute_{}".format(idx), self.long_val
1426+
)
1427+
root.set_attribute(
1428+
"my_byte_attribute_{}".format(idx), self.long_val.encode()
1429+
)
1430+
root.set_attribute(
1431+
"my_int_attribute_{}".format(idx), self.long_val.encode()
1432+
)
1433+
root.add_event(
1434+
"my_event_{}".format(idx), attributes={"k": self.long_val}
1435+
)
1436+
1437+
self.assertEqual(len(root.attributes), max_attrs)
1438+
self.assertEqual(len(root.events), max_events)
1439+
1440+
for link in root.links:
1441+
for attr_val in link.attributes.values():
1442+
self._assert_attr_length(attr_val, max_attr_len)
1443+
1444+
for event in root.events:
1445+
for attr_val in event.attributes.values():
1446+
self._assert_attr_length(attr_val, max_attr_len)
1447+
1448+
for attr_val in root.attributes.values():
1449+
self._assert_attr_length(attr_val, max_attr_len)
1450+
1451+
def _test_span_no_limits(self, tracer):
1452+
num_links = int(trace._DEFAULT_OTEL_SPAN_LINK_COUNT_LIMIT) + randint(
1453+
1, 100
1454+
)
1455+
1456+
id_generator = RandomIdGenerator()
1457+
some_links = [
1458+
trace_api.Link(
1459+
trace_api.SpanContext(
1460+
trace_id=id_generator.generate_trace_id(),
1461+
span_id=id_generator.generate_span_id(),
1462+
is_remote=False,
1463+
)
1464+
)
1465+
for _ in range(num_links)
1466+
]
1467+
with tracer.start_as_current_span("root", links=some_links) as root:
1468+
self.assertEqual(len(root.links), num_links)
1469+
1470+
num_events = int(trace._DEFAULT_OTEL_SPAN_EVENT_COUNT_LIMIT) + randint(
1471+
1, 100
1472+
)
1473+
with tracer.start_as_current_span("root") as root:
1474+
for idx in range(num_events):
1475+
root.add_event(
1476+
"my_event_{}".format(idx), attributes={"k": self.long_val}
1477+
)
1478+
1479+
self.assertEqual(len(root.events), num_events)
1480+
1481+
num_attributes = int(
1482+
trace._DEFAULT_OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT
1483+
) + randint(1, 100)
1484+
with tracer.start_as_current_span("root") as root:
1485+
for idx in range(num_attributes):
1486+
root.set_attribute(
1487+
"my_attribute_{}".format(idx), self.long_val
1488+
)
1489+
1490+
self.assertEqual(len(root.attributes), num_attributes)
1491+
for attr_val in root.attributes.values():
1492+
self.assertEqual(attr_val, self.long_val)
13961493

13971494
@mock.patch.dict(
13981495
"os.environ",
@@ -1469,7 +1566,6 @@ def test_span_limits_code(self):
14691566
OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: "unset",
14701567
},
14711568
)
1472-
14731569
def test_span_no_limits_env(self):
14741570
self._test_span_no_limits(new_tracer())
14751571

@@ -1495,7 +1591,13 @@ def test_dropped_attributes(self):
14951591
self.assertEqual(2, span.resource.attributes.dropped)
14961592

14971593
def _test_span_limits(
1498-
self, tracer, max_attrs, max_events, max_links, max_attr_len, max_span_attr_len,
1594+
self,
1595+
tracer,
1596+
max_attrs,
1597+
max_events,
1598+
max_links,
1599+
max_attr_len,
1600+
max_span_attr_len,
14991601
):
15001602
id_generator = RandomIdGenerator()
15011603
some_links = [
@@ -1588,4 +1690,4 @@ def _test_span_no_limits(self, tracer):
15881690

15891691
self.assertEqual(len(root.attributes), num_attributes)
15901692
for attr_val in root.attributes.values():
1591-
self.assertEqual(attr_val, self.long_val)
1693+
self.assertEqual(attr_val, self.long_val)

0 commit comments

Comments
 (0)