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

@ -360,6 +360,19 @@ def check_protocol_compliance(obj: Any, protocol: Any) -> None:
)
# Here we simply want to apply mapping from the config.
# All test fakes before this point must be initialized
# and properly setup (stubs, mocks, etc).
async def resolve_test_fake_stack_impls(
config: TestFakeProviderConfig,
) -> Dict[Api, Any]:
impls = {}
for api, impl in config.impls.items():
impls[api] = impl
return impls
async def resolve_remote_stack_impls(
config: RemoteProviderConfig,
apis: List[str],