mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-23 08:33:09 +00:00
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
67 lines
2.6 KiB
Python
67 lines
2.6 KiB
Python
# 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}"
|