mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-03 01:48:05 +00:00
fix: tests should not use BuildConfig
test_distribution and test_conversations were using BuildConfig and improper StackConfig semantics Signed-off-by: Charlie Doern <cdoern@redhat.com>
This commit is contained in:
parent
39ad54696c
commit
94506126ae
3 changed files with 48 additions and 56 deletions
6
.github/workflows/providers-build.yml
vendored
6
.github/workflows/providers-build.yml
vendored
|
|
@ -113,7 +113,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build container image
|
- name: Build container image
|
||||||
run: |
|
run: |
|
||||||
BASE_IMAGE=$(yq -r '.distribution_spec.container_image // "python:3.12-slim"' src/llama_stack/distributions/ci-tests/build.yaml)
|
BASE_IMAGE=$(yq -r '.distribution_spec.container_image // "python:3.12-slim"' src/llama_stack/distributions/ci-tests/config.yaml)
|
||||||
BUILD_ARGS="--build-arg INSTALL_MODE=editable --build-arg DISTRO_NAME=ci-tests"
|
BUILD_ARGS="--build-arg INSTALL_MODE=editable --build-arg DISTRO_NAME=ci-tests"
|
||||||
BUILD_ARGS="$BUILD_ARGS --build-arg BASE_IMAGE=$BASE_IMAGE"
|
BUILD_ARGS="$BUILD_ARGS --build-arg BASE_IMAGE=$BASE_IMAGE"
|
||||||
BUILD_ARGS="$BUILD_ARGS --build-arg RUN_CONFIG_PATH=/workspace/src/llama_stack/distributions/ci-tests/config.yaml"
|
BUILD_ARGS="$BUILD_ARGS --build-arg RUN_CONFIG_PATH=/workspace/src/llama_stack/distributions/ci-tests/config.yaml"
|
||||||
|
|
@ -155,11 +155,11 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
yq -i '
|
yq -i '
|
||||||
.distribution_spec.container_image = "registry.access.redhat.com/ubi9:latest"
|
.distribution_spec.container_image = "registry.access.redhat.com/ubi9:latest"
|
||||||
' src/llama_stack/distributions/ci-tests/build.yaml
|
' src/llama_stack/distributions/ci-tests/config.yaml
|
||||||
|
|
||||||
- name: Build UBI9 container image
|
- name: Build UBI9 container image
|
||||||
run: |
|
run: |
|
||||||
BASE_IMAGE=$(yq -r '.distribution_spec.container_image // "registry.access.redhat.com/ubi9:latest"' src/llama_stack/distributions/ci-tests/build.yaml)
|
BASE_IMAGE=$(yq -r '.distribution_spec.container_image // "registry.access.redhat.com/ubi9:latest"' src/llama_stack/distributions/ci-tests/config.yaml)
|
||||||
BUILD_ARGS="--build-arg INSTALL_MODE=editable --build-arg DISTRO_NAME=ci-tests"
|
BUILD_ARGS="--build-arg INSTALL_MODE=editable --build-arg DISTRO_NAME=ci-tests"
|
||||||
BUILD_ARGS="$BUILD_ARGS --build-arg BASE_IMAGE=$BASE_IMAGE"
|
BUILD_ARGS="$BUILD_ARGS --build-arg BASE_IMAGE=$BASE_IMAGE"
|
||||||
BUILD_ARGS="$BUILD_ARGS --build-arg RUN_CONFIG_PATH=/workspace/src/llama_stack/distributions/ci-tests/config.yaml"
|
BUILD_ARGS="$BUILD_ARGS --build-arg RUN_CONFIG_PATH=/workspace/src/llama_stack/distributions/ci-tests/config.yaml"
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,9 @@ async def service():
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
register_sqlstore_backends({"sql_test": storage.backends["sql_test"]})
|
register_sqlstore_backends({"sql_test": storage.backends["sql_test"]})
|
||||||
run_config = StackConfig(image_name="test", apis=[], providers={}, storage=storage)
|
stack_config = StackConfig(image_name="test", apis=[], providers={}, storage=storage)
|
||||||
|
|
||||||
config = ConversationServiceConfig(run_config=run_config, policy=[])
|
config = ConversationServiceConfig(config=stack_config, policy=[])
|
||||||
service = ConversationServiceImpl(config, {})
|
service = ConversationServiceImpl(config, {})
|
||||||
await service.initialize()
|
await service.initialize()
|
||||||
yield service
|
yield service
|
||||||
|
|
@ -151,9 +151,9 @@ async def test_policy_configuration():
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
register_sqlstore_backends({"sql_test": storage.backends["sql_test"]})
|
register_sqlstore_backends({"sql_test": storage.backends["sql_test"]})
|
||||||
run_config = StackConfig(image_name="test", apis=[], providers={}, storage=storage)
|
stack_config = StackConfig(image_name="test", apis=[], providers={}, storage=storage)
|
||||||
|
|
||||||
config = ConversationServiceConfig(run_config=run_config, policy=restrictive_policy)
|
config = ConversationServiceConfig(config=stack_config, policy=restrictive_policy)
|
||||||
service = ConversationServiceImpl(config, {})
|
service = ConversationServiceImpl(config, {})
|
||||||
await service.initialize()
|
await service.initialize()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -395,27 +395,25 @@ pip_packages:
|
||||||
|
|
||||||
def test_external_provider_from_module_building(self, mock_providers):
|
def test_external_provider_from_module_building(self, mock_providers):
|
||||||
"""Test loading an external provider from a module during build (building=True, partial spec)."""
|
"""Test loading an external provider from a module during build (building=True, partial spec)."""
|
||||||
from llama_stack.core.datatypes import BuildConfig, BuildProvider, DistributionSpec
|
from llama_stack.core.datatypes import StackConfig
|
||||||
from llama_stack_api import Api
|
from llama_stack_api import Api
|
||||||
|
|
||||||
# No importlib patch needed, should not import module when type of `config` is BuildConfig or DistributionSpec
|
# No importlib patch needed, should not import module when building
|
||||||
build_config = BuildConfig(
|
config = StackConfig(
|
||||||
version=2,
|
|
||||||
image_type="container",
|
|
||||||
image_name="test_image",
|
image_name="test_image",
|
||||||
distribution_spec=DistributionSpec(
|
apis=[],
|
||||||
description="test",
|
|
||||||
providers={
|
providers={
|
||||||
"inference": [
|
"inference": [
|
||||||
BuildProvider(
|
Provider(
|
||||||
|
provider_id="external_test",
|
||||||
provider_type="external_test",
|
provider_type="external_test",
|
||||||
|
config={},
|
||||||
module="external_test",
|
module="external_test",
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
),
|
|
||||||
)
|
)
|
||||||
registry = get_provider_registry(build_config)
|
registry = get_provider_registry(config, building=True)
|
||||||
assert Api.inference in registry
|
assert Api.inference in registry
|
||||||
assert "external_test" in registry[Api.inference]
|
assert "external_test" in registry[Api.inference]
|
||||||
provider = registry[Api.inference]["external_test"]
|
provider = registry[Api.inference]["external_test"]
|
||||||
|
|
@ -492,31 +490,29 @@ class TestGetExternalProvidersFromModule:
|
||||||
assert result[Api.inference]["versioned_test"].module == "versioned_test==1.0.0"
|
assert result[Api.inference]["versioned_test"].module == "versioned_test==1.0.0"
|
||||||
|
|
||||||
def test_buildconfig_does_not_import_module(self, mock_providers):
|
def test_buildconfig_does_not_import_module(self, mock_providers):
|
||||||
"""Test that BuildConfig does not import the module (building=True)."""
|
"""Test that StackConfig does not import the module when building (building=True)."""
|
||||||
from llama_stack.core.datatypes import BuildConfig, BuildProvider, DistributionSpec
|
from llama_stack.core.datatypes import StackConfig
|
||||||
from llama_stack.core.distribution import get_external_providers_from_module
|
from llama_stack.core.distribution import get_external_providers_from_module
|
||||||
|
|
||||||
build_config = BuildConfig(
|
config = StackConfig(
|
||||||
version=2,
|
|
||||||
image_type="container",
|
|
||||||
image_name="test_image",
|
image_name="test_image",
|
||||||
distribution_spec=DistributionSpec(
|
apis=[],
|
||||||
description="test",
|
|
||||||
providers={
|
providers={
|
||||||
"inference": [
|
"inference": [
|
||||||
BuildProvider(
|
Provider(
|
||||||
|
provider_id="build_test",
|
||||||
provider_type="build_test",
|
provider_type="build_test",
|
||||||
|
config={},
|
||||||
module="build_test==1.0.0",
|
module="build_test==1.0.0",
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Should not call import_module at all when building
|
# Should not call import_module at all when building
|
||||||
with patch("importlib.import_module") as mock_import:
|
with patch("importlib.import_module") as mock_import:
|
||||||
registry = {Api.inference: {}}
|
registry = {Api.inference: {}}
|
||||||
result = get_external_providers_from_module(registry, build_config, building=True)
|
result = get_external_providers_from_module(registry, config, building=True)
|
||||||
|
|
||||||
# Verify module was NOT imported
|
# Verify module was NOT imported
|
||||||
mock_import.assert_not_called()
|
mock_import.assert_not_called()
|
||||||
|
|
@ -530,28 +526,24 @@ class TestGetExternalProvidersFromModule:
|
||||||
assert provider.api == Api.inference
|
assert provider.api == Api.inference
|
||||||
|
|
||||||
def test_buildconfig_multiple_providers(self, mock_providers):
|
def test_buildconfig_multiple_providers(self, mock_providers):
|
||||||
"""Test BuildConfig with multiple providers for the same API."""
|
"""Test StackConfig with multiple providers for the same API."""
|
||||||
from llama_stack.core.datatypes import BuildConfig, BuildProvider, DistributionSpec
|
from llama_stack.core.datatypes import StackConfig
|
||||||
from llama_stack.core.distribution import get_external_providers_from_module
|
from llama_stack.core.distribution import get_external_providers_from_module
|
||||||
|
|
||||||
build_config = BuildConfig(
|
config = StackConfig(
|
||||||
version=2,
|
|
||||||
image_type="container",
|
|
||||||
image_name="test_image",
|
image_name="test_image",
|
||||||
distribution_spec=DistributionSpec(
|
apis=[],
|
||||||
description="test",
|
|
||||||
providers={
|
providers={
|
||||||
"inference": [
|
"inference": [
|
||||||
BuildProvider(provider_type="provider1", module="provider1"),
|
Provider(provider_id="provider1", provider_type="provider1", config={}, module="provider1"),
|
||||||
BuildProvider(provider_type="provider2", module="provider2"),
|
Provider(provider_id="provider2", provider_type="provider2", config={}, module="provider2"),
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
with patch("importlib.import_module") as mock_import:
|
with patch("importlib.import_module") as mock_import:
|
||||||
registry = {Api.inference: {}}
|
registry = {Api.inference: {}}
|
||||||
result = get_external_providers_from_module(registry, build_config, building=True)
|
result = get_external_providers_from_module(registry, config, building=True)
|
||||||
|
|
||||||
mock_import.assert_not_called()
|
mock_import.assert_not_called()
|
||||||
assert "provider1" in result[Api.inference]
|
assert "provider1" in result[Api.inference]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue