Skip to content

Commit 660591b

Browse files
committed
test(telemetry): fix clashing-provider test — remove dead setup, assert resource merge
1 parent db532be commit 660591b

1 file changed

Lines changed: 8 additions & 14 deletions

File tree

tests/core/unit/telemetry/test_log_provider_e2e.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -148,36 +148,29 @@ def test_no_trace_correlation_outside_span(self, log_exporter):
148148

149149

150150
class TestLogProviderClashingProvider:
151-
"""When another library claims the global LoggerProvider first, our processor
152-
must still be attached so logs reach the SAP OTLP endpoint."""
151+
"""When the platform pre-claims the global LoggerProvider, we merge our resource
152+
attributes into it and leave its processor chain intact."""
153153

154-
def test_logs_reach_our_exporter_when_provider_already_set(self, monkeypatch):
154+
def test_logs_flow_through_existing_provider_with_sdk_resource(self, monkeypatch):
155155
from opentelemetry._logs import _internal as _logs_internal
156156
from opentelemetry.sdk._logs.export import InMemoryLogRecordExporter, SimpleLogRecordProcessor
157157
import sap_cloud_sdk.core.telemetry._provider as provider_module
158158

159-
# Reset OTel singleton
160159
_logs_internal._LOGGER_PROVIDER_SET_ONCE._done = False
161160
_logs_internal._LOGGER_PROVIDER = None
162161
provider_module._log_provider = None
163162

164-
# Remove stale LoggingHandlers
165163
root = logging.getLogger()
166164
for h in list(root.handlers):
167165
if isinstance(h, LoggingHandler):
168166
root.removeHandler(h)
169167

170-
# Simulate another library claiming the provider first
171168
external_exporter = InMemoryLogRecordExporter()
172169
external_provider = LoggerProvider()
173170
external_provider.add_log_record_processor(SimpleLogRecordProcessor(external_exporter))
174171
from opentelemetry._logs import set_logger_provider
175172
set_logger_provider(external_provider)
176173

177-
# Now our SDK runs setup_log_provider
178-
our_exporter = InMemoryLogRecordExporter()
179-
monkeypatch.setattr("sap_cloud_sdk.core.telemetry._provider._create_log_exporter", lambda: our_exporter)
180-
monkeypatch.setattr("sap_cloud_sdk.core.telemetry._provider.BatchLogRecordProcessor", SimpleLogRecordProcessor)
181174
monkeypatch.setattr(
182175
"sap_cloud_sdk.core.telemetry._provider.get_config",
183176
lambda: __import__(
@@ -196,11 +189,12 @@ def test_logs_reach_our_exporter_when_provider_already_set(self, monkeypatch):
196189
root.setLevel(logging.DEBUG)
197190
logging.getLogger("test.clash").warning("hello from sdk")
198191

199-
our_records = external_exporter.get_finished_logs()
200-
assert len(our_records) == 1
201-
assert our_records[0].log_record.body == "hello from sdk"
192+
records = external_exporter.get_finished_logs()
193+
assert len(records) == 1
194+
assert records[0].log_record.body == "hello from sdk"
195+
# Resource merge must have happened — sap.cloud_sdk.* attrs prove it
196+
assert records[0].resource.attributes.get("sap.cloud_sdk.language") == "python"
202197

203-
# Cleanup
204198
for h in list(root.handlers):
205199
if isinstance(h, LoggingHandler):
206200
root.removeHandler(h)

0 commit comments

Comments
 (0)