litellm/tests
Alexsander Hamir b02baf53a9
Fix: prevent memory blowout in LoggingWorker (#16559)
* fix: prevent memory blowout in LoggingWorker

Tasks were being executed sequentially with each task awaited before
processing the next one. When the queue had 10k+ tasks, only one could
execute at a time. Since the request rate exceeded execution speed,
objects accumulated in memory (50k+), holding references to heavy
objects and causing memory blowout.

The new implementation uses a semaphore to allow up to 1000 concurrent
tasks while properly tracking and cleaning up each task, significantly
improving throughput and preventing queue buildup.

* fix: require semaphor before removing task from queue

* fix: make worker concurrency configurable

* fix: clean comments

* fix: clarify new env purpose

* fix: add missing lib

* make constants configurable instead of hardcoded

* add more aggressive cleaning when queue is full

* add helpers function for the aggressive cleaning functionality

* use envs instead of static constants

* import and document constants

* add unit test for new functionality

* fix default value on config_settings

* fix: remove unused variables and imports to resolve linter errors

- Remove unused time_since_last_clear variable in logging_worker.py
  The variable was calculated but never used in _handle_queue_full()
  method, causing F841 linter error.

- Remove unused TYPE_CHECKING import in mcp_server/server.py
  The import was not used anywhere in the file, causing F401 linter error.

These changes improve code cleanliness and ensure the codebase passes
all linter checks without affecting functionality.

* add missing log expected by test_queue_full_handling

* fix: clean config_setting.md file

* fix: handle logging errors gracefully during shutdown in _flush_on_exit

During process shutdown, logging handlers may be closed while _flush_on_exit
tries to flush queued logging coroutines. This causes 'ValueError: I/O
operation on closed file' errors when coroutines attempt to log.

Changes:
- Add _safe_log helper method that wraps logging calls and suppresses
  errors when logging handlers are closed (ValueError, OSError, AttributeError)
- Replace all verbose_logger calls in _flush_on_exit with _safe_log
- Remove logging from exception handler in coroutine execution loop
  to prevent cascading errors during shutdown

This ensures graceful shutdown even when logging handlers are closed,
which is common during process termination.
2025-11-22 13:58:29 -08:00
..
audio_tests add runwayml/eleven_multilingual_v2 pricing 2025-11-13 16:45:35 -08:00
basic_proxy_startup_tests test_health_and_chat_completion 2025-10-31 19:28:59 -07:00
batches_tests [Feat] Bedrock Batches - Add support for custom KMS encryption keys in Bedrock Batch operations (#16662) 2025-11-14 16:00:43 -08:00
code_coverage_tests fix img URL for tests 2025-11-22 09:41:15 -08:00
documentation_tests Litellm docs readme fixes (#16107) 2025-10-30 17:05:32 -07:00
enterprise Add managed files support for responses API (#16733) 2025-11-17 18:41:26 -08:00
guardrails_tests Add Zscaler AI Guard hook (#15691) 2025-11-11 15:34:27 -08:00
image_gen_tests fix img gen 2025-11-21 17:18:48 -08:00
litellm/llms Fix image_config.aspect_ratio not working for gemini-2.5-flash-image (#15999) 2025-11-03 08:48:36 -08:00
litellm-proxy-extras Prisma Migrate - support setting custom migration dir (#10336) 2025-04-26 12:05:06 -07:00
litellm_utils_tests [Feat] Adds IAM role assumption support for AWS Secret Manager (#16887) 2025-11-20 12:38:48 -08:00
llm_responses_api_testing Litellm sameer nov 3 stable branch (#16963) 2025-11-22 09:35:05 -08:00
llm_translation (feat) Anthropic - support Structured Outputs output_format for Claude 4.5 sonnet and Opus 4.1 + Arize Phoenix - root span logging (#16949) 2025-11-22 12:08:26 -08:00
load_tests test: test_embedding_performance 2025-05-14 21:31:07 -07:00
local_testing test_package_dependencies 2025-11-22 11:20:40 -08:00
logging_callback_tests test logging tests + mcp server QA checks 2025-11-15 08:58:46 -08:00
mcp_tests test MCP server 2025-11-22 10:02:15 -08:00
multi_instance_e2e_tests fix: use fastuuid helper (#14903) 2025-09-25 15:47:01 -07:00
ocr_tests [Feat] Add Azure AI Doc Intelligence OCR (#16219) 2025-11-03 17:22:19 -08:00
old_proxy_tests/tests claude-sonnet-4-5-20250929 fix 2025-10-31 18:20:52 -07:00
openai_endpoints_tests Litellm sameer nov 3 stable branch (#16963) 2025-11-22 09:35:05 -08:00
otel_tests test_team_budget_metrics 2025-11-01 09:21:17 -07:00
pass_through_tests fix: use vllm passthrough config for hosted vllm provider instead of raising error (#16537) 2025-11-12 09:12:14 -08:00
pass_through_unit_tests fix test claude-sonnet-4-5-20250929 2025-10-31 18:13:29 -07:00
proxy_admin_ui_tests ui testing fixes 2025-11-22 13:44:58 -08:00
proxy_security_tests test fix 2025-10-04 10:57:02 -07:00
proxy_unit_tests fix: add missing mock attributes in websocket and realtime tests (#16974) 2025-11-22 10:44:23 -08:00
router_unit_tests [Fix] - Router's Cache: Fix routing for requests with same cacheable prefix but different user messages (#16951) 2025-11-21 19:13:40 -08:00
scim_tests [Feat SSO] Add LiteLLM SCIM Integration for Team and User management (#10072) 2025-04-16 19:21:47 -07:00
search_tests [Bug Fix]: Search APIs - error in firecrawl-search "Invalid request body" (#16943) 2025-11-21 14:56:19 -08:00
spend_tracking_tests fix ocr test 2025-10-31 20:32:03 -07:00
store_model_in_db_tests Feat/persist mcp credentials in db (#16308) 2025-11-07 19:22:49 -08:00
test_litellm Fix: prevent memory blowout in LoggingWorker (#16559) 2025-11-22 13:58:29 -08:00
unified_google_tests fix: gooogle GenAI route tests 2025-10-04 10:18:25 -07:00
vector_store_tests (feat) Milvus - search vector store support + (fix) Passthrough Endpoints - support multi-part form data on passthrough (#16035) 2025-11-01 12:00:29 -07:00
windows_tests [Bug Fix] UnicodeDecodeError: 'charmap' on Windows during litellm import (#10542) 2025-05-03 21:31:05 -07:00
__init__.py [Feat] Add github co-pilot as a new LLM API provider (#12325) 2025-07-04 13:12:16 -07:00
gettysburg.wav feat(main.py): support openai transcription endpoints 2024-03-08 10:25:19 -08:00
large_text.py fix(router.py): check for context window error when handling 400 status code errors 2024-03-26 08:08:15 -07:00
openai_batch_completions.jsonl feat(router.py): Support Loadbalancing batch azure api endpoints (#5469) 2024-09-02 21:32:55 -07:00
README.MD [Feat] MCP Gateway Fine-grained Tools Addition (#15153) 2025-10-03 10:16:29 -07:00
test_budget_management.py fix: use fastuuid helper (#14903) 2025-09-25 15:47:01 -07:00
test_callbacks_on_proxy.py fix: use fastuuid helper (#14903) 2025-09-25 15:47:01 -07:00
test_config.py fix: use fastuuid helper (#14903) 2025-09-25 15:47:01 -07:00
test_debug_warning.py fix(utils.py): fix togetherai streaming cost calculation 2024-08-01 15:03:08 -07:00
test_end_users.py fix: use fastuuid helper (#14903) 2025-09-25 15:47:01 -07:00
test_entrypoint.py (fix) clean up root repo - move entrypoint.sh and build_admin_ui to /docker (#6110) 2024-10-08 11:34:43 +05:30
test_fallbacks.py Ollama Chat - parse tool calls on streaming (#11171) 2025-05-27 16:14:49 -07:00
test_gpt5_azure_temperature_support.py Fix: Azure GPT-5 incorrectly routed to O-series config (temperature parameter unsupported) (#16246) 2025-11-07 10:24:27 -08:00
test_health.py (test) /health/readiness 2024-01-29 15:27:25 -08:00
test_keys.py test: temporarily skip test due to change testing model change - need to update test for new model 2025-05-09 09:02:08 -07:00
test_litellm_proxy_responses_config.py Add native Responses API support for litellm_proxy provider (#15347) 2025-10-08 18:31:26 -07:00
test_logging.conf feat(proxy_cli.py): add new 'log_config' cli param (#6352) 2024-10-21 21:25:58 -07:00
test_models.py test_add_model_run_health 2025-09-27 10:59:25 -07:00
test_openai_endpoints.py test fix claude-sonnet-4-5-20250929 2025-10-28 19:05:13 -07:00
test_organizations.py UI - fix adding vertex models with reusable credentials + fix pagination on keys table + fix showing org budgets on table (#10528) 2025-05-03 08:16:53 -07:00
test_passthrough_endpoints.py fix: update authorization header to use 'Bearer' instead of 'bearer' 2025-09-21 10:44:47 +00:00
test_ratelimit.py test_async_rate_limit 2025-11-15 10:34:24 -08:00
test_resource_cleanup.py Fix: Properly close aiohttp client sessions to prevent resource leaks (#12251) 2025-07-09 09:25:17 -07:00
test_spend_logs.py Revert "Allow configuration to on what threshold to try truncating request content in db" 2025-08-28 16:12:42 -06:00
test_team.py build: publish new litellm-proxy-extras file 2025-05-27 17:44:23 -07:00
test_team_logging.py fix: use fastuuid helper (#14903) 2025-09-25 15:47:01 -07:00
test_team_members.py fix: use fastuuid helper (#14903) 2025-09-25 15:47:01 -07:00
test_users.py fix: use fastuuid helper (#14903) 2025-09-25 15:47:01 -07:00

In total litellm runs 1000+ tests

[02/20/2025] Update:

To make it easier to contribute and map what behavior is tested,

we've started mapping the litellm directory in tests/test_litellm

This folder can only run mock tests.