Add focused tests for persistence config and resolver

Tests cover critical failure modes:
- Backend reference validation catches config errors
- Namespace overlay logic for KVStore isolation
- Type safety: inference requires SqlStore
- Queue parameter preservation
- Integration with real distribution configs
This commit is contained in:
Ashwin Bharambe 2025-10-05 13:25:27 -07:00
parent 14c23dd5de
commit 6a9b2cd61a
3 changed files with 258 additions and 0 deletions

View file

@ -0,0 +1,67 @@
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the terms described in the LICENSE file in
# the root directory of this source tree.
import yaml
from llama_stack.core.datatypes import StackRunConfig
from llama_stack.core.persistence_resolver import (
resolve_inference_store_config,
resolve_metadata_store_config,
)
from llama_stack.providers.utils.kvstore.config import SqliteKVStoreConfig
from llama_stack.providers.utils.sqlstore.sqlstore import (
PostgresSqlStoreConfig,
SqliteSqlStoreConfig,
)
def test_starter_distribution_config_loads_and_resolves():
"""Integration: Actual starter config should parse and resolve all stores."""
with open("llama_stack/distributions/starter/run.yaml") as f:
config_dict = yaml.safe_load(f)
config = StackRunConfig(**config_dict)
# Config should have persistence with default backend
assert config.persistence is not None
assert "default" in config.persistence.backends
assert isinstance(config.persistence.backends["default"], SqliteSqlStoreConfig)
# Stores should reference the default backend
assert config.persistence.stores is not None
assert config.persistence.stores.metadata.backend == "default"
assert config.persistence.stores.inference.backend == "default"
# Resolution should work
metadata_store = resolve_metadata_store_config(config.persistence, "starter")
assert isinstance(metadata_store, SqliteKVStoreConfig)
sql_config, max_queue, num_writers = resolve_inference_store_config(config.persistence)
assert isinstance(sql_config, SqliteSqlStoreConfig)
assert max_queue > 0
assert num_writers > 0
def test_postgres_demo_distribution_config_loads():
"""Integration: Postgres demo should use Postgres backend for all stores."""
with open("llama_stack/distributions/postgres-demo/run.yaml") as f:
config_dict = yaml.safe_load(f)
config = StackRunConfig(**config_dict)
# Should have postgres backend
assert config.persistence is not None
assert "default" in config.persistence.backends
assert isinstance(config.persistence.backends["default"], PostgresSqlStoreConfig)
# Both stores use same postgres backend
assert config.persistence.stores.metadata.backend == "default"
assert config.persistence.stores.inference.backend == "default"
# Resolution returns postgres config
sql_config, _, _ = resolve_inference_store_config(config.persistence)
assert isinstance(sql_config, PostgresSqlStoreConfig)
assert sql_config.host == "${env.POSTGRES_HOST:=localhost}"