mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 00:28:31 +00:00
Enhance tests and refine OpenTelemetry version constraints
Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
@@ -17,9 +17,9 @@ dependencies = [
|
|||||||
"pdfplumber>=0.11.4",
|
"pdfplumber>=0.11.4",
|
||||||
"regex>=2024.9.11",
|
"regex>=2024.9.11",
|
||||||
# Telemetry and Monitoring
|
# Telemetry and Monitoring
|
||||||
"opentelemetry-api>=1.22.0,<2.0.0",
|
"opentelemetry-api>=1.22.0,<1.32.0",
|
||||||
"opentelemetry-sdk>=1.22.0,<2.0.0",
|
"opentelemetry-sdk>=1.22.0,<1.32.0",
|
||||||
"opentelemetry-exporter-otlp-proto-http>=1.22.0,<2.0.0",
|
"opentelemetry-exporter-otlp-proto-http>=1.22.0,<1.32.0",
|
||||||
# Data Handling
|
# Data Handling
|
||||||
"chromadb>=0.5.23",
|
"chromadb>=0.5.23",
|
||||||
"openpyxl>=3.1.5",
|
"openpyxl>=3.1.5",
|
||||||
|
|||||||
@@ -4,35 +4,75 @@ import pytest
|
|||||||
|
|
||||||
|
|
||||||
def test_opentelemetry_imports():
|
def test_opentelemetry_imports():
|
||||||
"""Test that all required OpenTelemetry modules can be imported."""
|
"""Test that all required OpenTelemetry modules can be imported.
|
||||||
# Test basic imports
|
|
||||||
from opentelemetry import trace
|
This test verifies that all necessary OpenTelemetry modules can be imported
|
||||||
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
|
correctly with the current version constraints, ensuring compatibility
|
||||||
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
|
between different OpenTelemetry packages.
|
||||||
from opentelemetry.sdk.trace import TracerProvider
|
"""
|
||||||
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
try:
|
||||||
from opentelemetry.trace import Span, Status, StatusCode
|
# 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}")
|
||||||
|
|
||||||
# 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'
|
|
||||||
|
|
||||||
def test_telemetry_class_initialization():
|
def test_telemetry_class_initialization():
|
||||||
"""Test that the Telemetry class can be initialized with current OpenTelemetry versions."""
|
"""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
|
from src.crewai.telemetry.telemetry import Telemetry
|
||||||
|
|
||||||
# Create an instance of the Telemetry class
|
# Test with telemetry disabled via environment variable
|
||||||
|
os.environ["OTEL_SDK_DISABLED"] = "true"
|
||||||
telemetry = Telemetry()
|
telemetry = Telemetry()
|
||||||
|
assert telemetry.ready is False
|
||||||
|
|
||||||
# Check if the telemetry instance is initialized correctly
|
# Reset environment variable
|
||||||
assert hasattr(telemetry, 'ready')
|
os.environ.pop("OTEL_SDK_DISABLED", None)
|
||||||
assert hasattr(telemetry, 'trace_set')
|
|
||||||
|
|
||||||
# Try to set the tracer
|
|
||||||
telemetry.set_tracer()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user