Spaces:
Paused
Paused
| # What this tests | |
| ## This tests the proxy server startup | |
| import sys, os, json | |
| import traceback | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| import os, io | |
| # this file is to test litellm/proxy | |
| sys.path.insert( | |
| 0, os.path.abspath("../..") | |
| ) # Adds the parent directory to the system path | |
| import pytest, logging, asyncio | |
| import litellm | |
| from litellm.proxy.proxy_server import ( | |
| router, | |
| save_worker_config, | |
| initialize, | |
| proxy_startup_event, | |
| llm_model_list, | |
| proxy_shutdown_event, | |
| ) | |
| async def test_proxy_gunicorn_startup_direct_config(): | |
| """ | |
| gunicorn startup requires the config to be passed in via environment variables | |
| We support saving either the config or the dict as an environment variable. | |
| Test both approaches | |
| """ | |
| try: | |
| from litellm._logging import verbose_proxy_logger, verbose_router_logger | |
| import logging | |
| # unset set DATABASE_URL in env for this test | |
| # set prisma client to None | |
| setattr(litellm.proxy.proxy_server, "prisma_client", None) | |
| database_url = os.environ.pop("DATABASE_URL", None) | |
| verbose_proxy_logger.setLevel(level=logging.DEBUG) | |
| verbose_router_logger.setLevel(level=logging.DEBUG) | |
| filepath = os.path.dirname(os.path.abspath(__file__)) | |
| # test with worker_config = config yaml | |
| config_fp = f"{filepath}/test_configs/test_config_no_auth.yaml" | |
| os.environ["WORKER_CONFIG"] = config_fp | |
| async with proxy_startup_event(app=None) as _: | |
| pass | |
| except Exception as e: | |
| if "Already connected to the query engine" in str(e): | |
| pass | |
| else: | |
| pytest.fail(f"An exception occurred - {str(e)}") | |
| finally: | |
| # restore DATABASE_URL after the test | |
| if database_url is not None: | |
| os.environ["DATABASE_URL"] = database_url | |
| async def test_proxy_gunicorn_startup_config_dict(): | |
| try: | |
| from litellm._logging import verbose_proxy_logger, verbose_router_logger | |
| import logging | |
| verbose_proxy_logger.setLevel(level=logging.DEBUG) | |
| verbose_router_logger.setLevel(level=logging.DEBUG) | |
| # unset set DATABASE_URL in env for this test | |
| # set prisma client to None | |
| setattr(litellm.proxy.proxy_server, "prisma_client", None) | |
| database_url = os.environ.pop("DATABASE_URL", None) | |
| filepath = os.path.dirname(os.path.abspath(__file__)) | |
| # test with worker_config = config yaml | |
| config_fp = f"{filepath}/test_configs/test_config_no_auth.yaml" | |
| # test with worker_config = dict | |
| worker_config = {"config": config_fp} | |
| os.environ["WORKER_CONFIG"] = json.dumps(worker_config) | |
| async with proxy_startup_event(app=None) as _: | |
| pass | |
| except Exception as e: | |
| if "Already connected to the query engine" in str(e): | |
| pass | |
| else: | |
| pytest.fail(f"An exception occurred - {str(e)}") | |
| finally: | |
| # restore DATABASE_URL after the test | |
| if database_url is not None: | |
| os.environ["DATABASE_URL"] = database_url | |
| # test_proxy_gunicorn_startup() | |