mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-26 01:12:21 +00:00
* fix(redis): authenticate sync clusters with IAM credential providers Signed-off-by: Silu Panda <31051721+SiluPanda@users.noreply.github.com> * test(redis): exercise IAM cluster authentication over TCP Run Azure and GCP regressions against a real local cluster with only cloud token issuance stubbed. Build a checksum-verified Redis server in the compatibility workflow and report its coverage. Signed-off-by: Silu Panda <31051721+SiluPanda@users.noreply.github.com> * test(redis): separate unit and cluster integration coverage Keep the mapped test tree mock-only. Run the live cluster cases from the existing local caching integration file, selected by explicit node IDs in the Redis compatibility workflow. Signed-off-by: Silu Panda <31051721+SiluPanda@users.noreply.github.com> * test(ci): isolate workflow coverage audit fixtures Replace the stale unrun caching-file assumption with isolated workflow fixtures for file and node-ID selectors. Keep the unnamed-file negative check and clarify which live caching cases remain outside CI. Signed-off-by: Silu Panda <31051721+SiluPanda@users.noreply.github.com> --------- Signed-off-by: Silu Panda <31051721+SiluPanda@users.noreply.github.com> Co-authored-by: yassin <yassin@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
100 lines
3.8 KiB
YAML
100 lines
3.8 KiB
YAML
name: "Unit Tests: Redis Client Version Compatibility"
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
- "litellm_**"
|
|
paths:
|
|
- "litellm/_redis.py"
|
|
- "litellm/_redis_credential_provider.py"
|
|
- "tests/test_litellm/test_redis.py"
|
|
- "tests/local_testing/test_caching.py"
|
|
- "tests/test_litellm/caching/test_redis_connection_pool.py"
|
|
- ".github/workflows/test-redis-compat.yml"
|
|
- "pyproject.toml"
|
|
- "uv.lock"
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
redis-compat:
|
|
name: "redis-py ${{ matrix.redis-version }}"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# 5.3.1 is the version pinned in uv.lock (redisvl caps it below 6); the
|
|
# newer legs prove the inspect.signature introspection in litellm/_redis.py
|
|
# keeps extracting kwargs on the redis-py releases people actually run now.
|
|
# Only the exact release 6.0.0 is skipped: rq (pulled by the proxy extra)
|
|
# specifies `redis != 6`, which excludes 6.0.0 alone, so 6.4.0 stands in
|
|
# for the 6.x line.
|
|
redis-version: ["5.3.1", "6.4.0", "7.4.1", "8.0.1"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Set up uv
|
|
uses: ./.github/actions/setup-uv-with-retries
|
|
with:
|
|
version: "0.10.9"
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
.github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra extra_proxy --extra semantic-router
|
|
|
|
- name: Pin redis-py to the matrix version
|
|
env:
|
|
REDIS_VERSION: ${{ matrix.redis-version }}
|
|
run: |
|
|
uv pip install "redis==${REDIS_VERSION:?}"
|
|
uv run --no-sync python -c "import redis; assert redis.__version__ == '${REDIS_VERSION:?}', redis.__version__; print('redis-py', redis.__version__)"
|
|
|
|
- name: Build Redis for cluster authentication tests
|
|
run: |
|
|
curl --fail --location --retry 3 https://download.redis.io/releases/redis-7.2.16.tar.gz -o "$RUNNER_TEMP/redis-7.2.16.tar.gz"
|
|
echo "960a8ec15e34ff40e57ff16837b26b33bd81f2da6d24497bb63de532a323a18e $RUNNER_TEMP/redis-7.2.16.tar.gz" | sha256sum --check
|
|
tar -xzf "$RUNNER_TEMP/redis-7.2.16.tar.gz" -C "$RUNNER_TEMP"
|
|
make -C "$RUNNER_TEMP/redis-7.2.16" -j2 MALLOC=libc OPTIMIZATION=-O1 redis-server
|
|
echo "$RUNNER_TEMP/redis-7.2.16/src" >> "$GITHUB_PATH"
|
|
|
|
- name: Run redis unit tests
|
|
run: |
|
|
redis-server --version
|
|
uv run --no-sync pytest \
|
|
tests/test_litellm/test_redis.py \
|
|
tests/test_litellm/caching/test_redis_connection_pool.py \
|
|
tests/local_testing/test_caching.py::test_sync_cluster_authenticates_with_azure_credentials \
|
|
tests/local_testing/test_caching.py::test_sync_cluster_authenticates_with_gcp_credentials \
|
|
--tb=short -vv \
|
|
--reruns 2 \
|
|
--reruns-delay 1 \
|
|
--durations=20 \
|
|
--cov=./litellm --cov-report=xml:coverage-redis.xml
|
|
|
|
- name: Upload Redis coverage
|
|
if: matrix.redis-version == '5.3.1'
|
|
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5.5.4
|
|
with:
|
|
use_oidc: true
|
|
files: coverage-redis.xml
|
|
flags: redis-compat
|
|
fail_ci_if_error: false
|