-
Notifications
You must be signed in to change notification settings - Fork 21
Ci: Add basic smoke test workflow for self-hosted runners #407
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- Add hello-world-test job with basic system checks - Test environment variables, file system access, and basic commands - Provide foundation for validating runner setup before complex builds - Set 15-minute timeout for quick validation cycles
Signed-off-by: KarolinaPomian <[email protected]>
ecdf867 to
b06df55
Compare
…prove directory structure for logs for multiple rx instances
…eport and updating job conditions for report summary execution
…terization in audio test files
…code check in mtlManager.py
… runs including PRs
…e redundant comments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This pull request introduces a comprehensive validation test infrastructure that includes new workflows for bare-metal smoke testing, enhanced logging and configuration capabilities, and improved test execution. The changes add smoke test markers to key tests and provide better validation, cleanup, and reporting mechanisms.
- Introduces a new bare-metal smoke test workflow with parameterization support and proper cleanup
- Enhances logging and validation infrastructure with new common utilities and FFmpeg test framework improvements
- Adds smoke test markers and configuration files for streamlined CI test execution
Reviewed Changes
Copilot reviewed 51 out of 55 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/validation/pytest.ini | Adds smoke test markers for test categorization |
| tests/validation/functional/test_demo.py | Adds smoke markers and log_path parameter to demo tests |
| tests/validation/functional/st2110/st30/*.py | Updates audio tests with log_path parameters and smoke markers |
| tests/validation/functional/st2110/st20/*.py | Updates video tests with log_path parameters and smoke markers |
| tests/validation/functional/local/video/*.py | Enhances video tests with validation and smoke markers |
| tests/validation/functional/local/audio/*.py | Improves audio tests with validation and smoke markers |
| tests/validation/functional/local/blob/*.py | Updates blob tests with validation and smoke markers |
| tests/validation/functional/cluster/*.py | Adds log_path parameters to cluster tests |
| tests/validation/conftest.py | Major refactoring of logging, validation, and fixture management |
| tests/validation/configs/ | New configuration files for workflow-based testing |
| tests/validation/common/ | New validation utilities and log constants |
| tests/validation/Engine/ | Enhanced engine components with better validation and logging |
| .github/workflows/ | New smoke test workflow and updated existing workflows |
Comments suppressed due to low confidence (1)
tests/validation/common/log_validation_utils.py:1
- The regex pattern on line 239 includes '_{2,}' which matches multiple underscores, but then line 240 applies the same pattern again. The first regex should not include the underscore pattern since it's handled separately on the next line, making this redundant.
# SPDX-License-Identifier: BSD-3-Clause
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| pytest.param("PCM16_48000_Mono", marks=pytest.mark.smoke), | ||
| *[f for f in audio_files_25_03.keys() if f != "PCM16_48000_Stereo"], |
Copilot
AI
Sep 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The parametrization excludes 'PCM16_48000_Stereo' but marks 'PCM16_48000_Mono' as smoke. This creates inconsistent test coverage where one audio format is marked as smoke and excluded from non-smoke runs, while another similar format is completely excluded from the test.
| pytest.param("PCM16_48000_Mono", marks=pytest.mark.smoke), | |
| *[f for f in audio_files_25_03.keys() if f != "PCM16_48000_Stereo"], | |
| pytest.param("PCM16_48000_Stereo", marks=pytest.mark.smoke), | |
| *[f for f in audio_files_25_03.keys() if f not in ("PCM16_48000_Mono", "PCM16_48000_Stereo")], |
| if not timeout: | ||
| timeout = ( | ||
| 60 # Default timeout or use a constant like MCM_RXTXAPP_RUN_TIMEOUT | ||
| ) |
Copilot
AI
Sep 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment suggests using MCM_RXTXAPP_RUN_TIMEOUT constant but a magic number 60 is used instead. Either use the suggested constant from the imports or document why a different timeout value is appropriate for FFmpeg processes.
|
|
||
| @pytest.fixture(scope="function") | ||
| def log_path(log_path_dir: str, request) -> str: | ||
| def log_path(log_path_dir: str, request) -> Path: |
Copilot
AI
Sep 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The return type annotation indicates Path but the function docstring and parameter description suggest it returns a string. The actual implementation returns Path(test_log_path), so the docstring should be updated to reflect the correct return type.
This pull request introduces several improvements and new workflows to the CI/CD pipeline, focusing on better build management, artifact reporting, and configuration consistency. The main highlights include the addition of new reusable workflows for base builds and report summaries, enhancements to workflow triggers and job configuration, and improved linter and runner setup.
New Workflows and Build Improvements:
bare-metal-build.ymlto support parameterized base builds on self-hosted runners, with detailed steps for dependency installation, version management, and artifact upload.report-summary.ymlworkflow to automatically summarize test reports from artifacts and add results to the GitHub Actions summary.Workflow Configuration and Consistency:
base_build.yml,coverity.yml,scorecard.yml, andbuild_docker_tpl.ymlto use consistent YAML syntax (double quotes), improved job step naming, and standardized runner configuration. [1] [2] [3] [4] [5] [6] [7]base_build.ymlto ignore documentation, test, and config file changes for triggering builds, reducing unnecessary workflow runs.Runner and Linter Configuration:
.github/configs/actionlint.ymlto specify labels for runners supporting DPDK builds.Artifact Handling:
These changes collectively make the CI/CD process more modular, maintainable, and efficient, especially when working with self-hosted runners and large dependency trees.This pull request primarily standardizes and improves the GitHub Actions CI/CD workflows by updating formatting, adding path-based triggers, and introducing a new workflow for bare-metal builds. The changes enhance maintainability, consistency, and efficiency in the build process.
Workflow improvements and standardization:
.github/workflows/bare-metal-build.ymlworkflow to support base builds on self-hosted Linux runners, including logic for dependency caching, version checks, and artifact uploads. This workflow is tailored for environments where some dependencies (like DPDK and MTL) are pre-installed, and includes steps to update version files as needed.Trigger and filtering enhancements:
base_build.ymlto ignore changes in documentation, tests, and other non-build files by addingpaths-ignorefor push and pull request events, reducing unnecessary workflow runs.Minor workflow adjustments:
base_build.ymlandcoverity.yml. [1] [2]base_build.yml(possibly a copy-paste error, asffmpeg-6-1/ffmpegandffmpeg-7-0/ffmpegappear multiple times).This pull request introduces a new bare-metal smoke test workflow, improves configuration and logging for validation tests, and refines the build process for better flexibility and maintainability. The most important changes are grouped below.CI Workflow Enhancements
smoke_tests.ymlthat orchestrates a multi-stage bare-metal smoke test pipeline, including build, environment setup, and test execution, with artifact upload and summary reporting.base_build.ymlto supportworkflow_callwith a branch input, allowing other workflows to trigger builds on specific branches. The build job now checks out the branch specified by the caller. [1] [2]Test Configuration and Topology
test_config_workflow.yamlfor test parameters andtopology_config_workflow.yamlfor host and network setup, supporting flexible test environments and parameterization. [1] [2]Validation Test Improvements
conftest.pyby sanitizing test names for filesystem safety and documenting log path creation. Enhanced cleanup logic to robustly kill test processes and handle errors more gracefully. [1] [2] [3] [4]Audio Test Parametrization and Cleanup