Skip to content

Commit 4eeecf6

Browse files
Add contextvar tests
1 parent 96c0aad commit 4eeecf6

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

opentelemetry-instrumentation/tests/test_labeler.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
get_labeler_attributes,
2525
set_labeler,
2626
)
27+
from opentelemetry.instrumentation._labeler._internal import _labeler_context
2728

2829

2930
class TestLabeler(unittest.TestCase):
@@ -183,3 +184,39 @@ def context_worker(context_id, results):
183184
"value": f"context_{i_operation}",
184185
}
185186
self.assertEqual(results[i_operation], expected)
187+
188+
189+
class TestLabelerContextVar(unittest.TestCase):
190+
def setUp(self):
191+
clear_labeler()
192+
193+
def test_contextvar_name_and_api_consistency(self):
194+
self.assertEqual(_labeler_context.name, "otel_labeler")
195+
labeler = get_labeler()
196+
labeler.add("test", "value")
197+
ctx_labeler = _labeler_context.get()
198+
self.assertIs(labeler, ctx_labeler)
199+
200+
def test_contextvar_isolation(self):
201+
def context_worker(worker_id, results):
202+
labeler = get_labeler()
203+
labeler.add("worker_id", worker_id)
204+
results[worker_id] = labeler.get_attributes()
205+
206+
results = {}
207+
for worker_id in range(3):
208+
ctx = contextvars.copy_context()
209+
ctx.run(context_worker, worker_id, results)
210+
for worker_id in range(3):
211+
expected = {"worker_id": worker_id}
212+
self.assertEqual(results[worker_id], expected)
213+
214+
def test_clear_and_get_labeler_contextvar(self):
215+
labeler = get_labeler()
216+
labeler.add("test", "value")
217+
self.assertIs(_labeler_context.get(), labeler)
218+
clear_labeler()
219+
self.assertIsNone(_labeler_context.get())
220+
new_labeler = get_labeler()
221+
self.assertIsNot(new_labeler, labeler)
222+
self.assertEqual(new_labeler.get_attributes(), {})

0 commit comments

Comments
 (0)