litellm/tests/unit/caching
Yujong Lee 68fa7e5aaa feat(redis): move the auth cache keyspace onto the Rust store
With enable_redis_auth_cache on, everything user_api_key_cache keeps (user-key
objects under bare hashed tokens, team/user/alias/org/end-user/project and the
other management objects, the global proxy spend scalar) now lives in
litellm-redis-store's auth_cache module: both memory partitions plus Redis,
behind litellm/redis/stores/auth_cache.py. redis-py never reads or writes the
keyspace and UserApiKeyCache.redis_cache stays None; features that only borrow
the connection (MCP refresh lock, user provider credential cache) get it from
redis_connection. With the flag off the cache stays Python memory as before.

Values cross pyo3 as plain data and are written as main's json.dumps (str() for
the sync set_cache path), read back with json.loads then literal_eval, with
main's TTL rules, pinned by matching inline cases in the Rust and Python tests.

The identity and owner prefetches read on the request's native pre-call batch
and arm the cooldown read right before, so both leave in one pipeline;
write-backs and pre-call SET/DEL ride the same batch. The invalidation
publisher and subscriber stay in Python and forward evictions to the native
memory tier.

The auth cache sends the commands UserApiKeyCache does. Prefetch reads are one
MGET, set_many writes the key-object partition and then the rest as two
pipelines, delete runs both partitions as concurrent multi-key DELs in chunks
of 1000, and increment_if_present is a plain EVAL with the amount written the
way redis-py encodes it.
2026-11-05 13:26:41 +09:00
..
__init__.py ci: move caching, proxy-extras, gateway and enterprise tests into tests/unit and run them from litellm-tests (#42902) 2026-09-24 15:49:59 -07:00
_event_loop_reuse.py fix(caching): key cached async clients by a per-loop token instead of id(loop) (#48877) 2026-10-29 13:14:48 -07:00
test_azure_blob_cache.py test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit (#43199) 2026-09-25 17:10:13 -07:00
test_cache_preset_key.py ci: move caching, proxy-extras, gateway and enterprise tests into tests/unit and run them from litellm-tests (#42902) 2026-09-24 15:49:59 -07:00
test_caching.py feat(hosted_vllm)!: keep vLLM's stop_reason and token_ids on chat choices and stream chunks (#48393) 2026-11-02 13:26:29 -08:00
test_caching_handler.py test(caching): assert sync cache-hit logging without depending on thread order (#47093) 2026-10-17 14:00:03 -07:00
test_check_and_fix_namespace_none_guard.py test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit (#43199) 2026-09-25 17:10:13 -07:00
test_dual_cache.py fix(caching): make Redis Cluster commands wait for a pool slot instead of tripping the circuit breaker (#46488) 2026-10-14 15:27:00 -07:00
test_embedding_router.py refactor(router): move router callers onto the entry points and invert the proxy imports (#48847) 2026-10-29 17:26:33 +00:00
test_evicted_client_closer.py fix(caching): key cached async clients by a per-loop token instead of id(loop) (#48877) 2026-10-29 13:14:48 -07:00
test_gcs_cache.py test: migrate legacy unit dirs and unrun folders into tests/unit, tests/integration and tests/e2e (#45940) 2026-10-11 06:24:57 -07:00
test_in_memory_cache.py feat(router): add deployment rpd and tpd daily limits to enforce_model_rate_limits (#48875) 2026-10-28 15:52:44 -07:00
test_llm_caching_handler.py fix(caching): key cached async clients by a per-loop token instead of id(loop) (#48877) 2026-10-29 13:14:48 -07:00
test_llm_client_cache_e2e.py test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit (#43199) 2026-09-25 17:10:13 -07:00
test_qdrant_semantic_cache.py refactor(router): move router callers onto the entry points and invert the proxy imports (#48847) 2026-10-29 17:26:33 +00:00
test_redis_batch.py feat(redis): run router cooldowns and usage on the Rust store 2026-11-05 13:26:07 +09:00
test_redis_cache.py test(caching): baseline breaker metrics from live state after gc (#46652) 2026-10-15 05:53:30 -07:00
test_redis_cluster_cache.py fix(caching): make Redis Cluster commands wait for a pool slot instead of tripping the circuit breaker (#46488) 2026-10-14 15:27:00 -07:00
test_redis_cluster_node_isolation.py test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit (#43199) 2026-09-25 17:10:13 -07:00
test_redis_connection_pool.py test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit (#43199) 2026-09-25 17:10:13 -07:00
test_redis_semantic_cache.py refactor(router): move router callers onto the entry points and invert the proxy imports (#48847) 2026-10-29 17:26:33 +00:00
test_request_redis_batch_post_call.py feat(redis): move the spend counter keyspace onto the Rust store 2026-11-05 13:26:28 +09:00
test_request_redis_batch_pre_call.py feat(redis): move the auth cache keyspace onto the Rust store 2026-11-05 13:26:41 +09:00
test_responses_stream_cache_keys.py refactor: expose core private helpers under public names (#44871) 2026-10-07 00:05:27 +00:00
test_s3_cache.py test: move routing, caching and callback tests out of local_testing (#45761) 2026-10-10 09:33:09 -07:00
test_unit_test_caching.py fix(caching): read the cache key's model group from the router's metadata for the call (#48917) 2026-10-29 05:35:23 -07:00
test_valkey_semantic_cache.py test: move tests/test_litellm core utils, routing, responses, caching and rust_bridge into tests/unit (#43199) 2026-09-25 17:10:13 -07:00