169 lines
5.7 KiB
Python
169 lines
5.7 KiB
Python
#!/usr/bin/env python3
|
|
"""Tests for the test inventory helper."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT_DIR = Path(__file__).resolve().parents[1]
|
|
TOOL_PATH = ROOT_DIR / "tools" / "test_inventory.py"
|
|
|
|
|
|
def _load_tool():
|
|
spec = importlib.util.spec_from_file_location("test_inventory", TOOL_PATH)
|
|
assert spec is not None
|
|
assert spec.loader is not None
|
|
module = importlib.util.module_from_spec(spec)
|
|
sys.modules[spec.name] = module
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def test_test_inventory_parses_default_and_named_groups() -> None:
|
|
tool = _load_tool()
|
|
list_text = "\n".join(
|
|
[
|
|
(
|
|
"app/config_defaults function=test_app_config_defaults resources=cpu "
|
|
"isolation=serial fixture= fixture_scope=none"
|
|
),
|
|
(
|
|
"drp2/vklite-runtime/draws_render_pass "
|
|
"function=test_drp2_runtime_vklite_draws_render_pass "
|
|
"resources=cpu,gpu,vulkan isolation=serial "
|
|
"fixture=drp2-vklite-runtime fixture_scope=process"
|
|
),
|
|
]
|
|
)
|
|
groups_text = "\n".join(["app/default", "drp2/vklite-runtime"])
|
|
|
|
cases = tool.parse_list_output(list_text, groups_text)
|
|
|
|
assert [(case.module, case.group, case.name) for case in cases] == [
|
|
("app", "default", "config_defaults"),
|
|
("drp2", "vklite-runtime", "draws_render_pass"),
|
|
]
|
|
assert cases[0].lane == "fast-cpu"
|
|
assert cases[1].lane == "runtime-vklite"
|
|
assert cases[1].case_id == "drp2/vklite-runtime/test_drp2_runtime_vklite_draws_render_pass"
|
|
assert cases[1].resources == ["cpu", "gpu", "vulkan"]
|
|
assert cases[1].fixture == "drp2-vklite-runtime"
|
|
|
|
|
|
def test_test_inventory_classifies_scene_semantic_and_render_cases() -> None:
|
|
tool = _load_tool()
|
|
list_text = "\n".join(
|
|
[
|
|
(
|
|
"scene/scene-graph/point_emit function=test_scene_point_emit "
|
|
"resources=cpu isolation=serial fixture= fixture_scope=none"
|
|
),
|
|
(
|
|
"scene/app-offscreen/clear function=test_scene_app_clear "
|
|
"resources=cpu,gpu,vulkan isolation=serial "
|
|
"fixture=scene-app-gpu fixture_scope=process"
|
|
),
|
|
(
|
|
"scene/query/item_pick function=test_scene_query_item_pick "
|
|
"resources=cpu,gpu,vulkan isolation=serial "
|
|
"fixture=scene-app-gpu fixture_scope=process"
|
|
),
|
|
]
|
|
)
|
|
groups_text = "\n".join(["scene/scene-graph", "scene/app-offscreen", "scene/query"])
|
|
|
|
cases = tool.parse_list_output(list_text, groups_text)
|
|
|
|
assert [case.lane for case in cases] == [
|
|
"scene-semantic",
|
|
"render-smoke",
|
|
"render-conformance",
|
|
]
|
|
|
|
|
|
def test_test_inventory_keeps_cpu_resize_cases_semantic() -> None:
|
|
tool = _load_tool()
|
|
list_text = "\n".join(
|
|
[
|
|
(
|
|
"scene/axis/panzoom_resize_visual_smoke "
|
|
"function=test_axis_panzoom_resize_visual_smoke "
|
|
"resources=cpu isolation=serial fixture= fixture_scope=none"
|
|
),
|
|
(
|
|
"canvas/resize_recreate_refreshes_state "
|
|
"function=test_canvas_resize_recreate_refreshes_state "
|
|
"resources=cpu,gpu,vulkan,glfw isolation=process "
|
|
"fixture= fixture_scope=none"
|
|
),
|
|
]
|
|
)
|
|
groups_text = "\n".join(["scene/axis", "canvas/default"])
|
|
|
|
cases = tool.parse_list_output(list_text, groups_text)
|
|
|
|
assert [case.lane for case in cases] == ["scene-semantic", "slow-churn"]
|
|
|
|
|
|
def test_test_inventory_keeps_video_only_cases_out_of_render_smoke() -> None:
|
|
tool = _load_tool()
|
|
list_text = (
|
|
"video/offline_headless_encode function=test_video_offline_headless_encode "
|
|
"resources=filesystem,video isolation=process fixture= fixture_scope=none"
|
|
)
|
|
groups_text = "video/default"
|
|
|
|
cases = tool.parse_list_output(list_text, groups_text)
|
|
|
|
assert cases[0].lane == "fast-cpu"
|
|
|
|
|
|
def test_test_inventory_routes_gpu_metadata_out_of_cpu_lanes() -> None:
|
|
tool = _load_tool()
|
|
list_text = "\n".join(
|
|
[
|
|
(
|
|
"app/resources_owned_defaults function=test_app_resources_owned_defaults "
|
|
"resources=cpu,gpu,vulkan isolation=process fixture= fixture_scope=none"
|
|
),
|
|
(
|
|
"drp2/runtime-lifecycle/download_buffer_rejects_out_of_range "
|
|
"function=test_drp2_runtime_download_buffer_rejects_out_of_range "
|
|
"resources=cpu,gpu,vulkan isolation=process fixture= fixture_scope=none"
|
|
),
|
|
]
|
|
)
|
|
groups_text = "\n".join(["app/default", "drp2/runtime-lifecycle"])
|
|
|
|
cases = tool.parse_list_output(list_text, groups_text)
|
|
|
|
assert [case.lane for case in cases] == ["render-smoke", "runtime-vklite"]
|
|
|
|
|
|
def test_test_inventory_filters_lanes() -> None:
|
|
tool = _load_tool()
|
|
list_text = "\n".join(
|
|
[
|
|
(
|
|
"common/alloc/basic function=test_alloc_basic resources=cpu "
|
|
"isolation=serial fixture= fixture_scope=none"
|
|
),
|
|
(
|
|
"scene/query/resolves_sample function=test_scene_query_resolves_sample "
|
|
"resources=cpu,gpu,vulkan isolation=serial fixture=scene-app-gpu "
|
|
"fixture_scope=process"
|
|
),
|
|
]
|
|
)
|
|
groups_text = "\n".join(["common/alloc", "scene/query"])
|
|
|
|
cases = tool.parse_list_output(list_text, groups_text)
|
|
filtered = tool._filter_cases(cases, "render-conformance")
|
|
|
|
assert [case.case_id for case in filtered] == [
|
|
"scene/query/test_scene_query_resolves_sample"
|
|
]
|