Orchestrator / test_compute_adapter.py
evgeniy778's picture
Update Compute Adapter Tests to Version 1.1
e8c21a7 verified
Raw
History Blame Contribute Delete
8.34 kB
# =====================================================
# Apckeyl Framework
# Version 1.1
# test_compute_adapter.py
# =====================================================
"""
Tests for Compute Adapter.
Version 1.1
"""
from compute_adapter import (
ComputeAdapter,
create_compute_adapter,
)
from compute_module import (
ExampleComputeModule,
)
# =====================================================
# Test 1 — Adapter Creation
# =====================================================
def test_adapter_creation():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
assert adapter is not None
# =====================================================
# Test 2 — Adapter Factory
# =====================================================
def test_adapter_factory():
module = ExampleComputeModule()
adapter = create_compute_adapter(
module
)
assert isinstance(
adapter,
ComputeAdapter,
)
# =====================================================
# Test 3 — Module Information
# =====================================================
def test_module_info():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
info = adapter.get_module_info()
assert info["module_id"] == (
"example"
)
assert info["module_name"] == (
"Example Compute Module"
)
assert info["module_version"] == (
"1.0"
)
assert "example_task" in (
info["supported_tasks"]
)
# =====================================================
# Test 4 — Health Check
# =====================================================
def test_health_check():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
health = adapter.health_check()
assert health["module_id"] == (
"example"
)
assert health["status"] == (
"healthy"
)
# =====================================================
# Test 5 — Supported Task
# =====================================================
def test_supported_task():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
assert adapter.supports_task(
"example_task"
)
# =====================================================
# Test 6 — Unsupported Task
# =====================================================
def test_unsupported_task():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
assert not adapter.supports_task(
"image_upscale"
)
# =====================================================
# Test 7 — Execute Task
# =====================================================
def test_execute_task():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
task = {
"task_id": "adapter_001",
"task_type": "example_task",
"payload": {
"message": "hello",
},
}
result = adapter.execute(
task
)
assert result["task_id"] == (
"adapter_001"
)
assert result["status"] == (
"completed"
)
assert "result" in result
# =====================================================
# Test 8 — None Task Rejected
# =====================================================
def test_none_task_rejected():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
try:
adapter.execute(None)
except ValueError:
return
raise AssertionError(
"None task was not rejected"
)
# =====================================================
# Test 9 — Invalid Task Rejected
# =====================================================
def test_invalid_task_rejected():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
try:
adapter.execute(
"invalid_task"
)
except TypeError:
return
raise AssertionError(
"Invalid task was not rejected"
)
# =====================================================
# Test 10 — Missing Task ID
# =====================================================
def test_missing_task_id():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
task = {
"task_type": "example_task",
}
try:
adapter.execute(
task
)
except ValueError:
return
raise AssertionError(
"Task without task_id "
"was not rejected"
)
# =====================================================
# Test 11 — Missing Task Type
# =====================================================
def test_missing_task_type():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
task = {
"task_id": "adapter_002",
}
try:
adapter.execute(
task
)
except ValueError:
return
raise AssertionError(
"Task without task_type "
"was not rejected"
)
# =====================================================
# Test 12 — Unsupported Task Rejected
# =====================================================
def test_unsupported_task_rejected():
module = ExampleComputeModule()
adapter = ComputeAdapter(
module
)
task = {
"task_id": "adapter_003",
"task_type": (
"unsupported_task"
),
}
try:
adapter.execute(
task
)
except ValueError:
return
raise AssertionError(
"Unsupported task "
"was not rejected"
)
# =====================================================
# Test 13 — Adapter Requires Module
# =====================================================
def test_adapter_requires_module():
try:
ComputeAdapter(
None
)
except ValueError:
return
raise AssertionError(
"Adapter accepted None module"
)
# =====================================================
# Test 14 — Adapter Requires Correct Module Type
# =====================================================
def test_adapter_requires_correct_module_type():
try:
ComputeAdapter(
"invalid_module"
)
except TypeError:
return
raise AssertionError(
"Adapter accepted invalid "
"module type"
)
# =====================================================
# Test Runner
# =====================================================
def main():
tests = [
test_adapter_creation,
test_adapter_factory,
test_module_info,
test_health_check,
test_supported_task,
test_unsupported_task,
test_execute_task,
test_none_task_rejected,
test_invalid_task_rejected,
test_missing_task_id,
test_missing_task_type,
test_unsupported_task_rejected,
test_adapter_requires_module,
test_adapter_requires_correct_module_type,
]
passed = 0
failed = 0
print(
"===================================="
)
print(
"Apckeyl Compute Adapter Test"
)
print(
"Version 1.1"
)
print(
"===================================="
)
for test in tests:
try:
test()
print(
f"PASS: {test.__name__}"
)
passed += 1
except Exception as error:
print(
f"FAIL: {test.__name__}"
)
print(
f"ERROR: {error}"
)
failed += 1
print(
"===================================="
)
print(
f"PASSED: {passed}"
)
print(
f"FAILED: {failed}"
)
print(
"===================================="
)
if failed > 0:
raise RuntimeError(
"Compute Adapter Test FAILED"
)
print(
"COMPUTE ADAPTER TEST: PASSED"
)
# =====================================================
# Entry Point
# =====================================================
if __name__ == "__main__":
main()