Test cache management#

import lamindb_setup as ln_setup
from lamindb_setup.dev._settings_store import system_storage_settings_file

ln_setup.login("testuser2")
if system_storage_settings_file().exists():
    system_storage_settings_file().unlink()
ln_setup.init(storage="s3://lamindb-ci/test-cache", name="test-cache")

Check that setting the cache dir works.

assert not system_storage_settings_file().exists()
save_cache_dir = ln_setup.settings.storage.cache_dir
set_cache_dir = save_cache_dir.parent / "Cache1"
ln_setup.settings.storage.cache_dir = set_cache_dir
assert system_storage_settings_file().exists()
assert ln_setup.settings.storage.cache_dir != save_cache_dir
assert ln_setup.settings.storage.cache_dir == set_cache_dir
assert set_cache_dir.exists()
assert set_cache_dir in ln_setup.settings.instance._sqlite_file_local.parents

Check clearing the cache dir, also closes the cloud sqlite instance.

!lamin cache clear
assert not any(set_cache_dir.iterdir())

Check that the cache dir is preserved betweenclose and load.

ln_setup.load("test-cache")
assert ln_setup.settings.storage.cache_dir == set_cache_dir

Setting to "null" or None restores the default directory.

ln_setup.settings.storage.cache_dir = None
assert ln_setup.settings.storage.cache_dir == save_cache_dir
assert ln_setup.settings.storage.cache_dir != set_cache_dir

Setting the cache dir through CLI doesn’t affect the currently loaded settings because it is done in another process and the settings only check the cache dir in settings.env on init.

Check CLI.

!lamin cache
!lamin cache set "null"

Clean up.

system_storage_settings_file().unlink()
ln_setup.delete("test-cache", force=True)