Adding memory provider test fakes

Summary:
Part of
* https://github.com/meta-llama/llama-stack/issues/436

This change adds a minimalistic support to creating memory provider test fake. For more details about the approach, follow the issue link from above.

Test Plan:
Run tests using the "test_fake" mark:
```
pytest llama_stack/providers/tests/memory/test_memory.py -m "test_fake"
/opt/homebrew/Caskroom/miniconda/base/envs/llama-stack/lib/python3.11/site-packages/pytest_asyncio/plugin.py:208: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset.
The event loop scope for asynchronous fixtures will default to the fixture caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session"

  warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET))
====================================================================================================== test session starts ======================================================================================================
platform darwin -- Python 3.11.10, pytest-8.3.3, pluggy-1.5.0
rootdir: /llama-stack
configfile: pyproject.toml
plugins: asyncio-0.24.0, anyio-4.6.2.post1
asyncio: mode=Mode.STRICT, default_loop_scope=None
collected 18 items / 15 deselected / 3 selected

llama_stack/providers/tests/memory/test_memory.py ...                                                                                                                                                                     [100%]

========================================================================================= 3 passed, 15 deselected, 6 warnings in 0.03s ==========================================================================================
```
This commit is contained in:
Vladimir Ivic 2024-11-18 13:37:01 -08:00
parent 0784284ab5
commit c62187c4a2
6 changed files with 226 additions and 14 deletions

View file

@ -14,7 +14,7 @@ from pydantic import BaseModel
from termcolor import colored
from llama_stack.distribution.datatypes import Provider
from llama_stack.providers.datatypes import RemoteProviderConfig
from llama_stack.providers.datatypes import RemoteProviderConfig, TestFakeProviderConfig
from .env import get_env_or_fail
@ -24,6 +24,20 @@ class ProviderFixture(BaseModel):
provider_data: Optional[Dict[str, Any]] = None
# Generic test fake fixture. Use TestFakeProviderConfig to set test fakes
# that will be mapped to their corresponding APIs.
def test_fake_stack_fixture(config: TestFakeProviderConfig) -> ProviderFixture:
return ProviderFixture(
providers=[
Provider(
provider_id="test::test-fake",
provider_type="test::test-fake",
config=config.model_dump(),
)
],
)
def remote_stack_fixture() -> ProviderFixture:
if url := os.getenv("REMOTE_STACK_URL", None):
config = RemoteProviderConfig.from_url(url)