forked from clan/clan-core
API: add performance constraints
This commit is contained in:
parent
1448e593e9
commit
16c9aa99a9
|
@ -104,21 +104,24 @@ def get_modules(base_path: str) -> dict[str, str]:
|
|||
|
||||
|
||||
@API.register
|
||||
def list_modules(base_path: str) -> list[str]:
|
||||
def list_modules(base_path: str) -> dict[str, ModuleInfo]:
|
||||
"""
|
||||
Show information about a module
|
||||
"""
|
||||
modules = get_modules(base_path)
|
||||
return [m for m in modules.keys()]
|
||||
return {
|
||||
module_name: get_module_info(module_name, module_path)
|
||||
for module_name, module_path in modules.items()
|
||||
}
|
||||
|
||||
|
||||
@API.register
|
||||
def show_module_info(base_path: str, module_name: str) -> ModuleInfo:
|
||||
def get_module_info(
|
||||
module_name: str,
|
||||
module_path: str,
|
||||
) -> ModuleInfo:
|
||||
"""
|
||||
Show information about a module
|
||||
Retrieves information about a module
|
||||
"""
|
||||
modules = get_modules(base_path)
|
||||
module_path = modules.get(module_name, None)
|
||||
if not module_path:
|
||||
raise ClanError(
|
||||
"Module not found",
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import time
|
||||
|
||||
import pytest
|
||||
from fixtures_flakes import FlakeForTest
|
||||
|
||||
|
@ -21,6 +23,7 @@ def test_schema_for_machine(test_flake_with_core: FlakeForTest) -> None:
|
|||
@pytest.mark.with_core
|
||||
def test_create_machine_on_minimal_clan(test_flake_minimal: FlakeForTest) -> None:
|
||||
assert list_machines(test_flake_minimal.path) == {}
|
||||
|
||||
create_machine(
|
||||
test_flake_minimal.path,
|
||||
Machine(
|
||||
|
@ -31,7 +34,15 @@ def test_create_machine_on_minimal_clan(test_flake_minimal: FlakeForTest) -> Non
|
|||
icon=None,
|
||||
),
|
||||
)
|
||||
assert list(list_machines(test_flake_minimal.path).keys()) == ["foo"]
|
||||
|
||||
st = time.time()
|
||||
result = list_machines(test_flake_minimal.path)
|
||||
et = time.time()
|
||||
elapsed = et - st
|
||||
# Listing should always take less than a second
|
||||
assert elapsed < 1
|
||||
|
||||
assert list(result.keys()) == ["foo"]
|
||||
|
||||
# Writes into settings.json
|
||||
set_config_for_machine(
|
||||
|
|
|
@ -1,27 +1,23 @@
|
|||
import time
|
||||
|
||||
import pytest
|
||||
from fixtures_flakes import FlakeForTest
|
||||
|
||||
from clan_cli.api.modules import list_modules, show_module_info
|
||||
from clan_cli.api.modules import list_modules
|
||||
|
||||
|
||||
@pytest.mark.with_core
|
||||
def test_list_modules(test_flake_with_core: FlakeForTest) -> None:
|
||||
base_path = test_flake_with_core.path
|
||||
module_list = list_modules(base_path)
|
||||
assert isinstance(module_list, list)
|
||||
assert len(module_list) > 1
|
||||
st = time.time()
|
||||
modules_info = list_modules(base_path)
|
||||
et = time.time()
|
||||
elapsed = et - st
|
||||
|
||||
# Listing should take less than a second
|
||||
assert elapsed < 1
|
||||
|
||||
assert len(modules_info.items()) > 1
|
||||
# Random test for those two modules
|
||||
assert "borgbackup" in module_list
|
||||
assert "syncthing" in module_list
|
||||
|
||||
|
||||
@pytest.mark.with_core
|
||||
def test_modules_details(test_flake_with_core: FlakeForTest) -> None:
|
||||
base_path = test_flake_with_core.path
|
||||
test_module = "borgbackup"
|
||||
module_info = show_module_info(base_path, test_module)
|
||||
assert module_info.description is not None and module_info.description != ""
|
||||
assert module_info.categories and "backup" in module_info.categories
|
||||
assert module_info.roles
|
||||
assert set(module_info.roles) == {"server", "client"}
|
||||
assert module_info.readme is not None and module_info.readme != ""
|
||||
assert "borgbackup" in modules_info.keys()
|
||||
assert "syncthing" in modules_info.keys()
|
||||
|
|
Loading…
Reference in New Issue
Block a user