Files
2026-07-13 13:17:40 +08:00

88 lines
2.5 KiB
Python

# coding: utf-8
import os
import sys
import pytest # noqa
from ray.autoscaler.v2.instance_manager.storage import (
InMemoryStorage,
StoreStatus,
VersionedValue,
)
@pytest.mark.parametrize("storage", [InMemoryStorage()])
def test_storage(storage):
assert storage.get_version() == 0
assert storage.get_all(table="test_table") == ({}, 0)
assert storage.get(table="test_table", keys=[]) == ({}, 0)
assert storage.get(table="test_table", keys=["key1"]) == ({}, 0)
assert storage.batch_update(
table="test_table", mutation={"key1": "value1"}
) == StoreStatus(
True,
1,
)
assert storage.get_version() == 1
assert storage.get_all(table="test_table") == (
{"key1": VersionedValue("value1", 1)},
1,
)
assert storage.get(table="test_table", keys=[]) == (
{"key1": VersionedValue("value1", 1)},
1,
)
assert storage.batch_update(
table="test_table", mutation={"key1": "value2"}, expected_version=0
) == StoreStatus(False, 1)
assert storage.batch_update(
table="test_table", mutation={"key1": "value2"}, expected_version=1
) == StoreStatus(True, 2)
assert storage.get_all(table="test_table") == (
{"key1": VersionedValue("value2", 2)},
2,
)
assert storage.batch_update(
table="test_table",
mutation={"key2": "value3", "key3": "value4"},
deletion=["key1"],
expected_version=2,
) == StoreStatus(True, 3)
assert storage.get_all(table="test_table") == (
{"key2": VersionedValue("value3", 3), "key3": VersionedValue("value4", 3)},
3,
)
assert storage.get(table="test_table", keys=["key2", "key1"]) == (
{"key2": VersionedValue("value3", 3)},
3,
)
assert storage.update(
table="test_table", key="key2", value="value5"
) == StoreStatus(True, 4)
assert storage.update(
table="test_table", key="key2", value="value5", insert_only=True
) == StoreStatus(False, 4)
assert storage.update(
table="test_table", key="key2", value="value5", expected_entry_version=3
) == StoreStatus(False, 4)
assert storage.update(
table="test_table", key="key2", value="value6", expected_entry_version=4
) == StoreStatus(True, 5)
if __name__ == "__main__":
if os.environ.get("PARALLEL_CI"):
sys.exit(pytest.main(["-n", "auto", "--boxed", "-vs", __file__]))
else:
sys.exit(pytest.main(["-sv", __file__]))