-
Notifications
You must be signed in to change notification settings - Fork 202
Ctest case updates #4118
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: develop
Are you sure you want to change the base?
Ctest case updates #4118
Conversation
…AA/global-workflow into ctest_case_updates
…delementer to job name
Split C48_S2SW-gfs_oceanice_prod.yaml into two separate test cases: - C48_S2SW-gfs_ocean_prod_f006.yaml (ocean component, 7 files) - C48_S2SW-gfs_ice_prod_f006.yaml (ice component, 7 files) This matches the actual Rocoto workflow structure where ocean and ice products are generated by separate parallel metatasks (gfs_ocean_prod and gfs_ice_prod) with different COMPONENT environment variables. Each test now validates its respective component independently: - Ocean: Tests gfs_ocean_prod_f006 task with COMPONENT=ocean - Ice: Tests gfs_ice_prod_f006 task with COMPONENT=ice Both tests use the same job script (oceanice_products.sh) but with component-specific inputs (ocean/ice history files) and outputs (products/ocean vs products/ice directories). Updated CTEST_UPDATES_CHANGELOG.md with Part 5 documenting the split.
…ice for C48_S2SW and their corresponding md files, also update pipeline matrix for these tests
…_S2SWA_gefs job fcst_mem001_seg0
… (3 files) - no atmosphere ICs in the stable run for ensemble members
…s_fcst_mem001_seg0 case
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 PR adds comprehensive CTest case updates to the NOAA Global Workflow framework, introducing six new test cases for validating different system configurations and operational workflows. The changes enhance the testing infrastructure to cover atmosphere-only forecasts, coupled forecasts, ensemble member execution, and post-processing product generation across different model configurations.
Key Changes:
- Added 6 new CTest cases covering C48_ATM, C48_S2SW, and C48_S2SWA_gefs configurations
- Enhanced test case documentation with comprehensive markdown files explaining each test's purpose and operational significance
- Updated CI/CD pipeline configuration to include all new test cases
Reviewed Changes
Copilot reviewed 13 out of 15 changed files in this pull request and generated 1 comment.
Show a summary per file
:
File | Description |
---|---|
C48_S2SWA_gefs-gefs_fcst_mem001_seg0.yaml | GEFS ensemble member 001 forecast test with coupled atmosphere-ocean-ice-wave system |
C48_S2SWA_gefs-gefs_fcst_mem001_seg0.md | Comprehensive documentation for GEFS ensemble test including operational context and file breakdown |
C48_S2SW-gfs_ocean_prod_f006.yaml | Ocean products generation test for coupled S2SW system at forecast hour f006 |
C48_S2SW-gfs_ocean_prod_f006.md | Documentation explaining ocean product generation pipeline and multi-resolution strategy |
C48_S2SW-gfs_ice_prod_f006.yaml | Ice products generation test for coupled S2SW system at forecast hour f006 |
C48_S2SW-gfs_ice_prod_f006.md | Documentation for sea ice product generation including ice characteristics and operational significance |
C48_S2SW-gfs_fcst_seg0.md | Enhanced documentation for coupled forecast test explaining 4-component system interactions |
C48_ATM-gfs_fcst_seg0.md | Documentation for atmosphere-only forecast test covering baseline forecast validation |
C48_ATM-gfs_atmos_prod_f000-f002.yaml | Atmospheric products generation test covering multiple forecast hours and resolutions |
C48_ATM-gfs_atmos_prod_f000-f002.md | Documentation explaining atmospheric product generation pipeline and FHOUT_PGBS logic |
README.md | Comprehensive overhaul explaining input file sourcing, test naming conventions, and self-contained test philosophy |
CMakeLists.txt | Updated test naming convention from underscore to hyphen format and added new test definitions |
gitlab-ci-hosts.yml | Updated CI/CD configuration to match new test naming convention and include all test cases |
dev/ctests/README.md
Outdated
- **validate.sh.in**: Validates the results of the JJOB. | ||
|
||
**NOTE:** So far only test C48_ATM *gfs_fcst_set0* has `output_files` for the validation step using a basic chksum for testing. Further development using grib and NETCDF comparison tools is pending. | ||
**NOTE:** Further development using advanced grib and NETCDF comparison tools is pending. |
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.
Is there an issue open to do this?
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.
Not really, I refer you to Rahul on that.
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.
Also a massive document. I don't think we can expect developers to write something like this every time they want to author a new test.
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.
Me neither.
Nice catch Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com>
Moved this into draft until I figure a good place to duck out self documentation of cases and simplify the main README.md and complete setting up .. and testing the pipeline in a dev space. |
…plyfy the README.md
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.
Looks great. Thanks for adding these tests.
A few changes that I don't think will impact the tests
# Input atmosphere restart files for forecast | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_ctrl.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_ctrl.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile1.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile1.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile2.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile2.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile3.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile3.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile4.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile4.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile5.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile5.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile6.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/gfs_data.tile6.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile1.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile1.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile2.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile2.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile3.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile3.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile4.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile4.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile5.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile5.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile6.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/input/sfc_data.tile6.nc] | ||
|
||
# Atmosphere history files needed for post-processing (from forecast job) | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/history/gfs.t{{ cyc }}z.atmf000.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/history/gfs.t{{ cyc }}z.atmf000.nc] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/history/gfs.t{{ cyc }}z.sfcf000.nc, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/model/atmos/history/gfs.t{{ cyc }}z.sfcf000.nc] |
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.
These are not used in this job
# Output atmospheric GRIB2 products for f002 (0p25 only - supplemental grids not at FHOUT_PGBS intervals) | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/products/atmos/grib2/0p25/gfs.t{{ cyc }}z.pgrb2.0p25.f002, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/products/atmos/grib2/0p25/gfs.t{{ cyc }}z.pgrb2.0p25.f002] | ||
- [{{ SRC_DIR }}/gfs.{{ PDY }}/{{ cyc }}/products/atmos/grib2/0p25/gfs.t{{ cyc }}z.pgrb2.0p25.f002.idx, {{ DST_DIR }}/gfs.{{ PDY }}/{{ cyc }}/products/atmos/grib2/0p25/gfs.t{{ cyc }}z.pgrb2.0p25.f002.idx] |
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.
Not sure if the test is creating this 0p25
resolution output -- do check.
# Ice restart files needed for initialization | ||
- [{{ SRC_DIR }}/gdas.{{ PDY }}/06/model/ice/restart/{{ PDY }}.{{ cyc }}0000.cice_model.res.nc, {{ DST_DIR }}/gdas.{{ PDY }}/06/model/ice/restart/{{ PDY }}.{{ cyc }}0000.cice_model.res.nc] |
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.
restarts are not used in this job.
# Ocean restart files needed for initialization | ||
- [{{ SRC_DIR }}/gdas.{{ PDY }}/06/model/ocean/restart/{{ PDY }}.{{ cyc }}0000.MOM.res.nc, {{ DST_DIR }}/gdas.{{ PDY }}/06/model/ocean/restart/{{ PDY }}.{{ cyc }}0000.MOM.res.nc] |
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.
Restarts are not used in this job.
Description
This PR adds a few new cases to the CTest framework for the NOAA Global Workflow.
Resolves #3871
Summary of Changes
Added C48 Test Cases
Detailed Changes (follow links for more details)
C48 Fixed Atmosphere-Only Tests (ATM)
C48 Coupled System Tests (S2SW)
H_offset = '-6H'
for staging restart files from previous cycleC48 Ensemble Tests (S2SW_gfs)
mem001/
subdirectory structureREADME Overhaul
File:
dev/ctests/README.md
Benefits:
Tested on command line (ran in parallel for all C48_S2W cases)
Runtime Performance
Backward Compatibility
✅ No Breaking Changes
Review Checklist
Testing in progress by the GitLab pipeline
Checklist