llama-stack icon indicating copy to clipboard operation
llama-stack copied to clipboard

Testing - Memory provider fakes

Open vladimirivic opened this issue 11 months ago • 0 comments

Summary: Implementing Memory provider fakes as discussed in this draft https://github.com/meta-llama/llama-stack/pull/490#issuecomment-2492877393.

High level changes:

  • Fake provider is specified via the "fake" mark
  • Test config will setup a fake fixture for the run of the test
  • Test resolver checks fixtures and upon finding a fake provider it injects InlineProviderSpec for fake provider
  • Fake provider gets resolved through path/naming convention
  • Fake provider implementaion is contained to the tests/ directory and implements stubs and method fakes with minimal functionality to simulate real provider

Instructins to creating a fake

  • Create the "fakes" module inside the provider test directory
  • Inside the module implement get_provider_impl that will return fake implementation object
  • Name the fake implementation class to match the fake provider id (e.g. memory_fake -> MemoryFakeImpl)
    • Same rule for the config (e.g. memory_fake -> MemoryFakeConfig)
  • Add fake fixture (in the fixtures.py) and setup methods stubs there

Test Plan: Run memory tests

pytest llama_stack/providers/tests/memory/test_memory.py -m "fake" -v -s --tb=short

====================================================================================================== test session starts ======================================================================================================
platform darwin -- Python 3.11.10, pytest-8.3.3, pluggy-1.5.0 -- /opt/homebrew/Caskroom/miniconda/base/envs/llama-stack/bin/python
cachedir: .pytest_cache
rootdir: /Users/vivic/Code/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::TestMemory::test_banks_list[fake] PASSED
llama_stack/providers/tests/memory/test_memory.py::TestMemory::test_banks_register[fake] PASSED
llama_stack/providers/tests/memory/test_memory.py::TestMemory::test_query_documents[fake] The scores are: [0.5]
PASSED

========================================================================================= 3 passed, 15 deselected, 10 warnings in 0.46s =========================================================================================

vladimirivic avatar Nov 25 '24 18:11 vladimirivic