SwarmAudit / tests /test_cuda_migration_agent.py
Pranoy Mukherjee
Update SwarmAudit Space demo
9237011
Raw
History Blame Contribute Delete
1.95 kB
import pytest
from app.agents.cuda_migration_agent import CudaMigrationAgent
from app.schemas import CodeChunk, Severity
def make_chunk(content: str, file_path: str = "model.py") -> CodeChunk:
return CodeChunk(
file_path=file_path,
language="Python",
line_start=1,
line_end=max(1, len(content.splitlines())),
content=content,
)
@pytest.mark.anyio
async def test_cuda_migration_agent_detects_torch_cuda():
output = await CudaMigrationAgent().analyze([make_chunk("device = torch.cuda.current_device()")])
assert output.findings[0].title == "PyTorch CUDA-specific API usage"
assert output.findings[0].severity == Severity.medium
assert output.findings[0].category == "cuda_migration"
@pytest.mark.anyio
async def test_cuda_migration_agent_detects_nvidia_monitoring():
output = await CudaMigrationAgent().analyze([make_chunk("import pynvml\nsubprocess.run(['nvidia-smi'])")])
assert output.findings[0].title == "NVIDIA-specific GPU monitoring"
assert "rocm-smi" in output.findings[0].suggested_fix
@pytest.mark.anyio
async def test_cuda_migration_agent_detects_cuda_runtime_calls():
output = await CudaMigrationAgent().analyze([make_chunk("cudaMemcpy(dst, src, size, cudaMemcpyDeviceToHost);", "kernel.cu")])
assert output.findings[0].title == "CUDA runtime API call"
assert output.findings[0].confidence is not None
@pytest.mark.anyio
async def test_cuda_migration_agent_detects_cuda_libraries():
output = await CudaMigrationAgent().analyze([make_chunk("handle = cublasCreate()", "linear_algebra.cpp")])
assert output.findings[0].title == "CUDA library dependency"
assert "rocBLAS" in output.findings[0].suggested_fix
@pytest.mark.anyio
async def test_cuda_migration_agent_returns_empty_for_cpu_code():
output = await CudaMigrationAgent().analyze([make_chunk("device = torch.device('cpu')")])
assert output.findings == []