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
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):
# 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:
# 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
# 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 -
ExtendedTestBaseshared base class for benchmark and functional tests (config loading, command execution, ROCm env setup, test result creation, statistics, result uploads) - extended_test_client.py -
ExtendedTestClientAPI 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
- Create file in appropriate subdirectory
- Add exports to subdirectory's
__init__.py - Optionally add to
utils/__init__.pyfor backward compatibility
New Subdirectory
- Create directory with
__init__.py - Add modules
- Update
utils/__init__.pyfor commonly used classes
Testing
# 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')"