|
| 1 | +"""Test the LangfuseResourceManager and get_client() function.""" |
| 2 | + |
| 3 | +from langfuse import Langfuse |
| 4 | +from langfuse._client.get_client import get_client |
| 5 | +from langfuse._client.resource_manager import LangfuseResourceManager |
| 6 | + |
| 7 | + |
| 8 | +def test_get_client_preserves_all_settings(): |
| 9 | + """Test that get_client() preserves environment and all client settings.""" |
| 10 | + with LangfuseResourceManager._lock: |
| 11 | + LangfuseResourceManager._instances.clear() |
| 12 | + |
| 13 | + settings = { |
| 14 | + "environment": "test-env", |
| 15 | + "release": "v1.2.3", |
| 16 | + "timeout": 30, |
| 17 | + "flush_at": 100, |
| 18 | + "sample_rate": 0.8, |
| 19 | + "additional_headers": {"X-Custom": "value"}, |
| 20 | + } |
| 21 | + |
| 22 | + original_client = Langfuse(**settings) |
| 23 | + retrieved_client = get_client() |
| 24 | + |
| 25 | + assert retrieved_client._environment == settings["environment"] |
| 26 | + |
| 27 | + assert retrieved_client._resources is not None |
| 28 | + rm = retrieved_client._resources |
| 29 | + assert rm.environment == settings["environment"] |
| 30 | + assert rm.timeout == settings["timeout"] |
| 31 | + assert rm.sample_rate == settings["sample_rate"] |
| 32 | + assert rm.additional_headers == settings["additional_headers"] |
| 33 | + |
| 34 | + original_client.shutdown() |
| 35 | + |
| 36 | + |
| 37 | +def test_get_client_multiple_clients_preserve_different_settings(): |
| 38 | + """Test that get_client() preserves different settings for multiple clients.""" |
| 39 | + # Settings for client A |
| 40 | + settings_a = { |
| 41 | + "public_key": "pk-comprehensive-a", |
| 42 | + "secret_key": "sk-comprehensive-a", |
| 43 | + "environment": "env-a", |
| 44 | + "release": "release-a", |
| 45 | + "timeout": 10, |
| 46 | + "sample_rate": 0.5, |
| 47 | + } |
| 48 | + |
| 49 | + # Settings for client B |
| 50 | + settings_b = { |
| 51 | + "public_key": "pk-comprehensive-b", |
| 52 | + "secret_key": "sk-comprehensive-b", |
| 53 | + "environment": "env-b", |
| 54 | + "release": "release-b", |
| 55 | + "timeout": 20, |
| 56 | + "sample_rate": 0.9, |
| 57 | + } |
| 58 | + |
| 59 | + client_a = Langfuse(**settings_a) |
| 60 | + client_b = Langfuse(**settings_b) |
| 61 | + |
| 62 | + # Get clients via get_client() |
| 63 | + retrieved_a = get_client(public_key="pk-comprehensive-a") |
| 64 | + retrieved_b = get_client(public_key="pk-comprehensive-b") |
| 65 | + |
| 66 | + # Verify each client preserves its own settings |
| 67 | + assert retrieved_a._environment == settings_a["environment"] |
| 68 | + assert retrieved_b._environment == settings_b["environment"] |
| 69 | + |
| 70 | + if retrieved_a._resources and retrieved_b._resources: |
| 71 | + assert retrieved_a._resources.timeout == settings_a["timeout"] |
| 72 | + assert retrieved_b._resources.timeout == settings_b["timeout"] |
| 73 | + assert retrieved_a._resources.sample_rate == settings_a["sample_rate"] |
| 74 | + assert retrieved_b._resources.sample_rate == settings_b["sample_rate"] |
| 75 | + assert retrieved_a._resources.release == settings_a["release"] |
| 76 | + assert retrieved_b._resources.release == settings_b["release"] |
| 77 | + |
| 78 | + client_a.shutdown() |
| 79 | + client_b.shutdown() |
0 commit comments