1717import unittest
1818from unittest .mock import Mock , patch
1919
20+ from opentelemetry import trace as trace_api
2021from opentelemetry ._events import Event
21- from opentelemetry ._logs import SeverityNumber , set_logger_provider
22+ from opentelemetry ._logs import NoOpLogger , SeverityNumber , set_logger_provider
23+ from opentelemetry .context import get_current
2224from opentelemetry .sdk ._events import EventLoggerProvider
2325from opentelemetry .sdk ._logs import LoggerProvider
24- from opentelemetry .sdk ._logs ._internal import Logger , NoOpLogger
26+ from opentelemetry .sdk ._logs ._internal import Logger
2527from opentelemetry .sdk .environment_variables import OTEL_SDK_DISABLED
2628
2729
@@ -123,15 +125,9 @@ def test_event_logger_emit(self, logger_mock, log_record_mock):
123125 "name" , "version" , "schema_url" , {"key" : "value" }
124126 )
125127 now = Mock ()
126- trace_id = Mock ()
127- span_id = Mock ()
128- trace_flags = Mock ()
129128 event = Event (
130129 name = "test_event" ,
131130 timestamp = now ,
132- trace_id = trace_id ,
133- span_id = span_id ,
134- trace_flags = trace_flags ,
135131 body = "test body" ,
136132 severity_number = SeverityNumber .ERROR ,
137133 attributes = {
@@ -146,9 +142,7 @@ def test_event_logger_emit(self, logger_mock, log_record_mock):
146142 log_record_mock .assert_called_once_with (
147143 timestamp = now ,
148144 observed_timestamp = None ,
149- trace_id = trace_id ,
150- span_id = span_id ,
151- trace_flags = trace_flags ,
145+ context = get_current (),
152146 severity_text = None ,
153147 severity_number = SeverityNumber .ERROR ,
154148 body = "test body" ,
@@ -179,15 +173,9 @@ def test_event_logger_emit_sdk_disabled(
179173 "name" , "version" , "schema_url" , {"key" : "value" }
180174 )
181175 now = Mock ()
182- trace_id = Mock ()
183- span_id = Mock ()
184- trace_flags = Mock ()
185176 event = Event (
186177 name = "test_event" ,
187178 timestamp = now ,
188- trace_id = trace_id ,
189- span_id = span_id ,
190- trace_flags = trace_flags ,
191179 body = "test body" ,
192180 severity_number = SeverityNumber .ERROR ,
193181 attributes = {
@@ -200,3 +188,92 @@ def test_event_logger_emit_sdk_disabled(
200188 log_record_mock .return_value = log_record_mock_inst
201189 event_logger .emit (event )
202190 logger_mock_inst .emit .assert_not_called ()
191+
192+ @patch ("opentelemetry.sdk._events.LogRecord" )
193+ @patch ("opentelemetry.sdk._logs._internal.LoggerProvider.get_logger" )
194+ def test_event_logger_emit_with_context (
195+ self , logger_mock , log_record_mock
196+ ):
197+ logger_provider = LoggerProvider ()
198+ logger_mock_inst = Mock ()
199+ logger_mock .return_value = logger_mock_inst
200+ event_logger = EventLoggerProvider (logger_provider ).get_event_logger (
201+ "name" ,
202+ version = "version" ,
203+ schema_url = "schema_url" ,
204+ attributes = {"key" : "value" },
205+ )
206+ logger_mock .assert_called_once_with (
207+ "name" , "version" , "schema_url" , {"key" : "value" }
208+ )
209+
210+ span = trace_api .NonRecordingSpan (
211+ trace_api .SpanContext (
212+ 2604504634922341076776623263868986797 ,
213+ 5213367945872657620 ,
214+ False ,
215+ trace_api .TraceFlags (0x01 ),
216+ )
217+ )
218+ ctx = trace_api .set_span_in_context (span )
219+
220+ now = Mock ()
221+ event = Event (
222+ name = "test_event" ,
223+ timestamp = now ,
224+ body = "test body" ,
225+ severity_number = SeverityNumber .ERROR ,
226+ attributes = {
227+ "key" : "val" ,
228+ "foo" : "bar" ,
229+ "event.name" : "not this one" ,
230+ },
231+ )
232+ log_record_mock_inst = Mock ()
233+ log_record_mock .return_value = log_record_mock_inst
234+ with trace_api .use_span (span ):
235+ event_logger .emit (event )
236+ log_record_mock .assert_called_with (
237+ timestamp = now ,
238+ observed_timestamp = None ,
239+ context = ctx ,
240+ severity_text = None ,
241+ severity_number = SeverityNumber .ERROR ,
242+ body = "test body" ,
243+ resource = event_logger ._logger .resource ,
244+ attributes = {
245+ "key" : "val" ,
246+ "foo" : "bar" ,
247+ "event.name" : "test_event" ,
248+ },
249+ )
250+
251+ another_event = Event (
252+ name = "another_event" ,
253+ timestamp = now ,
254+ context = ctx ,
255+ body = "another body" ,
256+ severity_number = SeverityNumber .ERROR ,
257+ attributes = {
258+ "key" : "val" ,
259+ "foo" : "bar" ,
260+ "event.name" : "not this one" ,
261+ },
262+ )
263+ event_logger .emit (another_event )
264+ log_record_mock .assert_called_with (
265+ timestamp = now ,
266+ observed_timestamp = None ,
267+ context = ctx ,
268+ severity_text = None ,
269+ severity_number = SeverityNumber .ERROR ,
270+ body = "another body" ,
271+ resource = event_logger ._logger .resource ,
272+ attributes = {
273+ "key" : "val" ,
274+ "foo" : "bar" ,
275+ "event.name" : "another_event" ,
276+ },
277+ )
278+
279+ self .assertEqual (log_record_mock .call_count , 2 )
0 commit comments