mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-12 13:57:57 +00:00
Merge 873a400544
into bcdbb53be3
This commit is contained in:
commit
e113964f6a
3 changed files with 183 additions and 48 deletions
116
tests/unit/utils/kvstore/test_sqlite_memory.py
Normal file
116
tests/unit/utils/kvstore/test_sqlite_memory.py
Normal file
|
@ -0,0 +1,116 @@
|
|||
# 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.
|
||||
|
||||
|
||||
from llama_stack.providers.utils.kvstore.config import SqliteKVStoreConfig
|
||||
from llama_stack.providers.utils.kvstore.sqlite import SqliteKVStoreImpl
|
||||
|
||||
|
||||
async def test_memory_kvstore_basic_operations():
|
||||
"""Test basic CRUD operations with :memory: database."""
|
||||
config = SqliteKVStoreConfig(db_path=":memory:")
|
||||
kvstore = SqliteKVStoreImpl(config)
|
||||
await kvstore.initialize()
|
||||
|
||||
try:
|
||||
# Test set and get
|
||||
await kvstore.set("test_key", "test_value")
|
||||
value = await kvstore.get("test_key")
|
||||
assert value == "test_value"
|
||||
|
||||
# Test get non-existent key
|
||||
value = await kvstore.get("non_existent")
|
||||
assert value is None
|
||||
|
||||
# Test delete
|
||||
await kvstore.delete("test_key")
|
||||
value = await kvstore.get("test_key")
|
||||
assert value is None
|
||||
finally:
|
||||
await kvstore.close()
|
||||
|
||||
|
||||
async def test_memory_kvstore_range_operations():
|
||||
"""Test range operations with :memory: database."""
|
||||
config = SqliteKVStoreConfig(db_path=":memory:")
|
||||
kvstore = SqliteKVStoreImpl(config)
|
||||
await kvstore.initialize()
|
||||
|
||||
try:
|
||||
# Set multiple keys
|
||||
await kvstore.set("key_1", "value_1")
|
||||
await kvstore.set("key_2", "value_2")
|
||||
await kvstore.set("key_3", "value_3")
|
||||
await kvstore.set("key_4", "value_4")
|
||||
|
||||
# Test values_in_range
|
||||
values = await kvstore.values_in_range("key_1", "key_3")
|
||||
assert len(values) == 3
|
||||
assert "value_1" in values
|
||||
assert "value_2" in values
|
||||
assert "value_3" in values
|
||||
|
||||
# Test keys_in_range
|
||||
keys = await kvstore.keys_in_range("key_2", "key_4")
|
||||
assert len(keys) == 3
|
||||
assert "key_2" in keys
|
||||
assert "key_3" in keys
|
||||
assert "key_4" in keys
|
||||
finally:
|
||||
await kvstore.close()
|
||||
|
||||
|
||||
async def test_memory_kvstore_multiple_instances():
|
||||
"""Test that multiple :memory: instances are independent."""
|
||||
config1 = SqliteKVStoreConfig(db_path=":memory:")
|
||||
kvstore1 = SqliteKVStoreImpl(config1)
|
||||
await kvstore1.initialize()
|
||||
|
||||
config2 = SqliteKVStoreConfig(db_path=":memory:")
|
||||
kvstore2 = SqliteKVStoreImpl(config2)
|
||||
await kvstore2.initialize()
|
||||
|
||||
try:
|
||||
# Set value in first instance
|
||||
await kvstore1.set("shared_key", "value_1")
|
||||
|
||||
# Verify second instance doesn't have the value
|
||||
value = await kvstore2.get("shared_key")
|
||||
assert value is None
|
||||
|
||||
# Set different value in second instance
|
||||
await kvstore2.set("shared_key", "value_2")
|
||||
|
||||
# Verify instances remain independent
|
||||
value1 = await kvstore1.get("shared_key")
|
||||
value2 = await kvstore2.get("shared_key")
|
||||
assert value1 == "value_1"
|
||||
assert value2 == "value_2"
|
||||
finally:
|
||||
await kvstore1.close()
|
||||
await kvstore2.close()
|
||||
|
||||
|
||||
async def test_memory_kvstore_persistence_behavior():
|
||||
"""Test that :memory: database doesn't persist across instances."""
|
||||
config = SqliteKVStoreConfig(db_path=":memory:")
|
||||
|
||||
# First instance
|
||||
kvstore1 = SqliteKVStoreImpl(config)
|
||||
await kvstore1.initialize()
|
||||
await kvstore1.set("test_key", "test_value")
|
||||
await kvstore1.close()
|
||||
|
||||
# Create new instance with same config
|
||||
kvstore2 = SqliteKVStoreImpl(config)
|
||||
await kvstore2.initialize()
|
||||
|
||||
try:
|
||||
# Data should not persist
|
||||
value = await kvstore2.get("test_key")
|
||||
assert value is None
|
||||
finally:
|
||||
await kvstore2.close()
|
Loading…
Add table
Add a link
Reference in a new issue