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
158 lines
4.6 KiB
Markdown
158 lines
4.6 KiB
Markdown
# Utils Module
|
|
|
|
Utility modules organized into logical subdirectories for maintainability and scalability.
|
|
|
|
## Structure
|
|
|
|
```
|
|
extended_tests/utils/
|
|
├── __init__.py # Public exports
|
|
├── extended_test_base.py # ExtendedTestBase - shared base class for all tests
|
|
├── extended_test_client.py # ExtendedTestClient - system detection & result reporting
|
|
├── constants.py # Framework constants
|
|
├── exceptions.py # Custom exceptions
|
|
├── logger.py # Logging configuration
|
|
├── README.md # This file
|
|
│
|
|
├── config/ # Configuration management
|
|
│ ├── __init__.py
|
|
│ ├── config_helper.py # Config utilities
|
|
│ ├── config_parser.py # YAML parsing with env vars
|
|
│ └── config_validator.py # Schema validation
|
|
│
|
|
├── results/ # Results handling
|
|
│ ├── __init__.py
|
|
│ ├── results_handler.py # Formatting and saving
|
|
│ ├── results_api.py # API submission
|
|
│ └── schemas/
|
|
│ └── payload_schema.json # API payload validation schema
|
|
│
|
|
└── system/ # System detection
|
|
├── __init__.py
|
|
├── hardware.py # CPU/GPU detection
|
|
├── platform.py # OS/platform detection
|
|
├── rocm_detector.py # ROCm detection
|
|
└── system_detector.py # Main orchestrator
|
|
```
|
|
|
|
## Usage
|
|
|
|
### From Extended Test Base Classes
|
|
|
|
Both `BenchmarkBase` and `FunctionalBase` inherit from `ExtendedTestBase`, which provides
|
|
shared infrastructure (command execution, config loading, result creation, statistics, uploads):
|
|
|
|
```python
|
|
# In benchmark_base.py / functional_base.py
|
|
from utils.extended_test_base import ExtendedTestBase
|
|
|
|
|
|
class BenchmarkBase(ExtendedTestBase): ...
|
|
|
|
|
|
class FunctionalBase(ExtendedTestBase): ...
|
|
```
|
|
|
|
### From Test Scripts
|
|
|
|
Test scripts add `extended_tests/` to `sys.path`, then import:
|
|
|
|
```python
|
|
# Import path setup (already done in base classes)
|
|
sys.path.insert(
|
|
0, str(Path(__file__).resolve().parents[2])
|
|
) # Adds extended_tests/ to path
|
|
|
|
# Core utilities
|
|
from utils.logger import log
|
|
from utils.constants import Constants
|
|
from utils.exceptions import ConfigurationError
|
|
|
|
# Main API classes
|
|
from utils.extended_test_base import ExtendedTestBase
|
|
from utils.extended_test_client import ExtendedTestClient
|
|
from utils.system.system_detector import SystemDetector
|
|
from utils.config.config_helper import ConfigHelper
|
|
from utils.results.results_handler import ResultsHandler
|
|
```
|
|
|
|
### Subdirectory Imports
|
|
|
|
```python
|
|
# Configuration
|
|
from utils.config import ConfigHelper, ConfigParser, ConfigValidator
|
|
|
|
# System detection
|
|
from utils.system import (
|
|
SystemDetector,
|
|
HardwareDetector,
|
|
ROCmDetector,
|
|
PlatformDetector,
|
|
)
|
|
|
|
# Results handling
|
|
from utils.results import ResultsHandler, ResultsAPI
|
|
```
|
|
|
|
## Modules
|
|
|
|
### Root Level
|
|
|
|
- **extended_test_base.py** - `ExtendedTestBase` shared base class for benchmark and functional tests (config loading, command execution, ROCm env setup, test result creation, statistics, result uploads)
|
|
- **extended_test_client.py** - `ExtendedTestClient` API for system detection and result reporting
|
|
- **constants.py** - Framework constants and defaults
|
|
- **exceptions.py** - Custom exception classes
|
|
- **logger.py** - Logging configuration
|
|
|
|
### Config
|
|
|
|
Configuration loading, parsing, and validation.
|
|
|
|
- **config_helper.py** - High-level config utilities
|
|
- **config_parser.py** - YAML parser with environment variable expansion
|
|
- **config_validator.py** - JSON Schema validation
|
|
|
|
### System
|
|
|
|
Platform, hardware, and ROCm detection.
|
|
|
|
- **system_detector.py** - Main orchestrator
|
|
- **hardware.py** - CPU and GPU detection
|
|
- **platform.py** - OS, kernel, SBIOS detection
|
|
- **rocm_detector.py** - ROCm version and build info
|
|
|
|
### Results
|
|
|
|
Test results formatting, saving, and API submission.
|
|
|
|
- **results_handler.py** - Results formatting and local saving
|
|
- **results_api.py** - REST API client
|
|
|
|
## Adding New Modules
|
|
|
|
### To Existing Subdirectory
|
|
|
|
1. Create file in appropriate subdirectory
|
|
1. Add exports to subdirectory's `__init__.py`
|
|
1. Optionally add to `utils/__init__.py` for backward compatibility
|
|
|
|
### New Subdirectory
|
|
|
|
1. Create directory with `__init__.py`
|
|
1. Add modules
|
|
1. Update `utils/__init__.py` for commonly used classes
|
|
|
|
## Testing
|
|
|
|
```bash
|
|
# Run from project root
|
|
cd /path/to/TheRock
|
|
|
|
# Run a benchmark test (imports are handled internally)
|
|
python tests/extended_tests/benchmark/scripts/test_rocfft_benchmark.py
|
|
|
|
# Verify utils imports work
|
|
cd tests/extended_tests
|
|
python -c "from utils.logger import log; print('Utils imports working')"
|
|
```
|