Files
TheRock/rocm-systems/projects/hipfile/tools/ais-check/tests/README.md
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

37 lines
1.7 KiB
Markdown

# ais-check tests
Unit tests for the `ais-check` tool. They are fully hermetic: every system
touchpoint (kernel config files, `/proc/kallsyms`, environment variables,
`glob` over `/opt/rocm`, and `ctypes.CDLL`) is faked with `monkeypatch`, so the
suite runs and produces identical results on any machine — no ROCm install,
GPU, or special privileges required.
## Running
From the repository root:
```
pip install pytest
cd projects/hipfile/tools/ais-check/tests
python3 -m pytest
```
## Layout
| File | Covers |
|------|--------|
| `conftest.py` | Loads the extensionless `ais-check` script as an importable `ais_check` module (via `SourceFileLoader`) and exposes it as a fixture. |
| `test_p2pdma.py` | `kernel_supports_p2pdma()` — each config source, missing/`=m`/commented options, and the "no configs found" warning. |
| `test_find_hip_runtimes.py` | `find_hip_runtimes()` — env-var search paths, symlink dedup, soname handling, and literal matching of glob metacharacters. |
| `test_hip_runtime_ais.py` | `hip_runtime_supports_ais()` — symbol probing via a fake HIP handle, old-runtime and load-failure paths, and the three-part symbol success check. |
| `test_amdgpu.py` | `amdgpu_supports_ais()` — symbol present/absent and the not-found/permission-denied branches. |
| `test_main.py` | `main()` — the exit-code contract and `-q`/`-v` output behavior. |
## Notes
- The `ais_check` fixture imports the script as a module, which means
`if __name__ == "__main__"` does not run `main()` at import time.
- Tests patch attributes on the loaded module (e.g. `ais_check.os.uname`,
`ais_check.ctypes.CDLL`), so the real environment never leaks in — capturing
the original `glob.glob` before patching avoids recursion.