mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 16:48:30 +00:00
79 lines
3.2 KiB
Python
79 lines
3.2 KiB
Python
from importlib import import_module
|
|
|
|
import pytest
|
|
|
|
|
|
def test_opentelemetry_imports():
|
|
"""Test that all required OpenTelemetry modules can be imported.
|
|
|
|
This test verifies that all necessary OpenTelemetry modules can be imported
|
|
correctly with the current version constraints, ensuring compatibility
|
|
between different OpenTelemetry packages.
|
|
"""
|
|
try:
|
|
# Test basic imports
|
|
from opentelemetry import trace
|
|
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
|
|
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
|
|
from opentelemetry.sdk.trace import TracerProvider
|
|
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
|
from opentelemetry.trace import Span, Status, StatusCode
|
|
|
|
# Verify that the imports are from the expected modules
|
|
assert trace.__name__ == 'opentelemetry.trace'
|
|
assert OTLPSpanExporter.__module__ == 'opentelemetry.exporter.otlp.proto.http.trace_exporter'
|
|
assert Resource.__module__ == 'opentelemetry.sdk.resources'
|
|
assert TracerProvider.__module__ == 'opentelemetry.sdk.trace'
|
|
assert BatchSpanProcessor.__module__ == 'opentelemetry.sdk.trace.export'
|
|
assert Span.__module__ == 'opentelemetry.trace.span'
|
|
assert Status.__module__ == 'opentelemetry.trace.status'
|
|
assert StatusCode.__module__ == 'opentelemetry.trace.status'
|
|
except ImportError as e:
|
|
pytest.fail(f"Failed to import OpenTelemetry modules: {e}")
|
|
|
|
|
|
def test_telemetry_class_initialization():
|
|
"""Test that the Telemetry class can be initialized with current OpenTelemetry versions.
|
|
|
|
This test verifies that the Telemetry class can be properly initialized and
|
|
that its core attributes are set correctly. It also tests the set_tracer method
|
|
to ensure it works as expected with the current OpenTelemetry versions.
|
|
"""
|
|
try:
|
|
from src.crewai.telemetry.telemetry import Telemetry
|
|
|
|
# Create an instance of the Telemetry class
|
|
telemetry = Telemetry()
|
|
|
|
# Check if the telemetry instance is initialized correctly
|
|
assert hasattr(telemetry, 'ready')
|
|
assert hasattr(telemetry, 'trace_set')
|
|
assert telemetry.trace_set is False # Should be False initially
|
|
|
|
# Try to set the tracer
|
|
telemetry.set_tracer()
|
|
|
|
# After setting the tracer, trace_set should be True if ready is True
|
|
if telemetry.ready:
|
|
assert telemetry.trace_set is True
|
|
except ImportError as e:
|
|
pytest.fail(f"Failed to import Telemetry class: {e}")
|
|
|
|
|
|
def test_telemetry_configuration():
|
|
"""Test that the Telemetry class can be configured with different options.
|
|
|
|
This test verifies that the Telemetry class respects environment variables
|
|
for disabling telemetry collection.
|
|
"""
|
|
import os
|
|
from src.crewai.telemetry.telemetry import Telemetry
|
|
|
|
# Test with telemetry disabled via environment variable
|
|
os.environ["OTEL_SDK_DISABLED"] = "true"
|
|
telemetry = Telemetry()
|
|
assert telemetry.ready is False
|
|
|
|
# Reset environment variable
|
|
os.environ.pop("OTEL_SDK_DISABLED", None)
|