mirror of
https://github.com/All-Hands-AI/OpenHands.git
synced 2026-04-29 03:00:45 -04:00
79 lines
3.4 KiB
Python
79 lines
3.4 KiB
Python
import pytest
|
|
|
|
from openhands.utils import environment
|
|
from openhands.utils.environment import StorageProvider, get_storage_provider
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def clear_docker_cache():
|
|
if hasattr(environment.is_running_in_docker, 'cache_clear'):
|
|
environment.is_running_in_docker.cache_clear()
|
|
yield
|
|
if hasattr(environment.is_running_in_docker, 'cache_clear'):
|
|
environment.is_running_in_docker.cache_clear()
|
|
|
|
|
|
def test_get_effective_base_url_lemonade_in_docker(monkeypatch):
|
|
monkeypatch.setattr(environment, 'is_running_in_docker', lambda: True)
|
|
result = environment.get_effective_llm_base_url('lemonade/example', None)
|
|
assert result == environment.LEMONADE_DOCKER_BASE_URL
|
|
|
|
|
|
def test_get_effective_base_url_lemonade_outside_docker(monkeypatch):
|
|
monkeypatch.setattr(environment, 'is_running_in_docker', lambda: False)
|
|
base_url = 'http://localhost:8000/api/v1/'
|
|
result = environment.get_effective_llm_base_url('lemonade/example', base_url)
|
|
assert result == base_url
|
|
|
|
|
|
def test_get_effective_base_url_non_lemonade(monkeypatch):
|
|
monkeypatch.setattr(environment, 'is_running_in_docker', lambda: True)
|
|
base_url = 'https://api.example.com'
|
|
result = environment.get_effective_llm_base_url('openai/gpt-4', base_url)
|
|
assert result == base_url
|
|
|
|
|
|
class TestGetStorageProvider:
|
|
"""Tests for get_storage_provider function."""
|
|
|
|
def test_aws_from_shared_event_storage_provider(self, monkeypatch):
|
|
monkeypatch.setenv('SHARED_EVENT_STORAGE_PROVIDER', 'aws')
|
|
monkeypatch.delenv('FILE_STORE', raising=False)
|
|
assert get_storage_provider() == StorageProvider.AWS
|
|
|
|
def test_gcp_from_shared_event_storage_provider(self, monkeypatch):
|
|
monkeypatch.setenv('SHARED_EVENT_STORAGE_PROVIDER', 'gcp')
|
|
monkeypatch.delenv('FILE_STORE', raising=False)
|
|
assert get_storage_provider() == StorageProvider.GCP
|
|
|
|
def test_google_cloud_from_shared_event_storage_provider(self, monkeypatch):
|
|
monkeypatch.setenv('SHARED_EVENT_STORAGE_PROVIDER', 'google_cloud')
|
|
monkeypatch.delenv('FILE_STORE', raising=False)
|
|
assert get_storage_provider() == StorageProvider.GCP
|
|
|
|
def test_fallback_to_file_store_google_cloud(self, monkeypatch):
|
|
monkeypatch.delenv('SHARED_EVENT_STORAGE_PROVIDER', raising=False)
|
|
monkeypatch.setenv('FILE_STORE', 'google_cloud')
|
|
assert get_storage_provider() == StorageProvider.GCP
|
|
|
|
def test_filesystem_when_no_provider_set(self, monkeypatch):
|
|
monkeypatch.delenv('SHARED_EVENT_STORAGE_PROVIDER', raising=False)
|
|
monkeypatch.delenv('FILE_STORE', raising=False)
|
|
assert get_storage_provider() == StorageProvider.FILESYSTEM
|
|
|
|
def test_filesystem_for_unknown_provider(self, monkeypatch):
|
|
monkeypatch.setenv('SHARED_EVENT_STORAGE_PROVIDER', 'unknown')
|
|
assert get_storage_provider() == StorageProvider.FILESYSTEM
|
|
|
|
def test_shared_event_storage_provider_takes_precedence(self, monkeypatch):
|
|
monkeypatch.setenv('SHARED_EVENT_STORAGE_PROVIDER', 'aws')
|
|
monkeypatch.setenv('FILE_STORE', 'google_cloud')
|
|
assert get_storage_provider() == StorageProvider.AWS
|
|
|
|
def test_case_insensitive(self, monkeypatch):
|
|
monkeypatch.setenv('SHARED_EVENT_STORAGE_PROVIDER', 'AWS')
|
|
assert get_storage_provider() == StorageProvider.AWS
|
|
|
|
monkeypatch.setenv('SHARED_EVENT_STORAGE_PROVIDER', 'GCP')
|
|
assert get_storage_provider() == StorageProvider.GCP
|