From 030d918108e42cb43f9c22f294f54113ad2e97f3 Mon Sep 17 00:00:00 2001 From: George Gayno Date: Wed, 9 Feb 2022 22:18:34 +0000 Subject: [PATCH 1/9] Update build system to download all files required for unit tests. Fixes #619 --- tests/chgres_cube/CMakeLists.txt | 54 ++++++++++++++++++++++++++++-- tests/chgres_cube/data/files.txt | 5 --- tests/sfc_climo_gen/CMakeLists.txt | 46 +++++++++++++++++++++++-- tests/sfc_climo_gen/data/files.txt | 4 --- 4 files changed, 96 insertions(+), 13 deletions(-) delete mode 100644 tests/chgres_cube/data/files.txt delete mode 100644 tests/sfc_climo_gen/data/files.txt diff --git a/tests/chgres_cube/CMakeLists.txt b/tests/chgres_cube/CMakeLists.txt index adcf0621b..806648461 100644 --- a/tests/chgres_cube/CMakeLists.txt +++ b/tests/chgres_cube/CMakeLists.txt @@ -3,6 +3,58 @@ # # George Gayno, Lin Gan, Ed Hartnett, Larissa Reames +set(CHGRES_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/chgres_cube") + +set(V16SFC_FILE "gfs.v16.sfc.history.nc") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V16SFC_FILE}") + file(DOWNLOAD + ${CHGRES_URL}/${V16SFC_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${V16SFC_FILE} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + +set(V16SFC_FILE2 "gfs.v16.sfc2.history.nc") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V16SFC_FILE2}") + file(DOWNLOAD + ${CHGRES_URL}/${V16SFC_FILE2} + ${CMAKE_CURRENT_BINARY_DIR}/data/${V16SFC_FILE2} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + +set(V16ATM_FILE "gfs.v16.atm.history.nc") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V16ATM_FILE}") + file(DOWNLOAD + ${CHGRES_URL}/${V16ATM_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${V16ATM_FILE} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + +set(V14SFC_FILE "gfs.v14.sfc.history.nemsio") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V14SFC_FILE}") + file(DOWNLOAD + ${CHGRES_URL}/${V14SFC_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${V14SFC_FILE} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + +set(V15SFC_FILE "gfs.v15.sfc.history.nemsio") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V15SFC_FILE}") + file(DOWNLOAD + ${CHGRES_URL}/${V15SFC_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${V15SFC_FILE} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + # Include cmake to allow parallel I/O tests. include (LibMPI) @@ -16,8 +68,6 @@ include_directories(${PROJECT_SOURCE_DIR}) # Copy necessary test files from the source data directory to the # build data directory. -execute_process( COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/data/files.txt ${CMAKE_CURRENT_BINARY_DIR}/data/files.txt) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data/config_fv3_tiled.nml ${CMAKE_CURRENT_BINARY_DIR}/data/config_fv3_tiled.nml) execute_process( COMMAND ${CMAKE_COMMAND} -E copy diff --git a/tests/chgres_cube/data/files.txt b/tests/chgres_cube/data/files.txt deleted file mode 100644 index de82305d7..000000000 --- a/tests/chgres_cube/data/files.txt +++ /dev/null @@ -1,5 +0,0 @@ -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/chgres_cube/gfs.v16.sfc.history.nc -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/chgres_cube/gfs.v16.sfc2.history.nc -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/chgres_cube/gfs.v16.atm.history.nc -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/chgres_cube/gfs.v14.sfc.history.nemsio -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/chgres_cube/gfs.v15.sfc.history.nemsio diff --git a/tests/sfc_climo_gen/CMakeLists.txt b/tests/sfc_climo_gen/CMakeLists.txt index 734dd1f4d..663ce16a6 100644 --- a/tests/sfc_climo_gen/CMakeLists.txt +++ b/tests/sfc_climo_gen/CMakeLists.txt @@ -3,6 +3,50 @@ # # George Gayno, Lin Gan, Ed Hartnett, Larissa Reames +set(SFCGEN_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/sfc_climo_gen") + +set(MOSAIC_FILE "C450_mosaic.nc") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${MOSAIC_FILE}") + file(DOWNLOAD + ${SFCGEN_URL}/${MOSAIC_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${MOSAIC_FILE} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + +set(GRID_FILE "C450_grid.tile7.nc") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${GRID_FILE}") + file(DOWNLOAD + ${SFCGEN_URL}/${GRID_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${GRID_FILE} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + +set(ORO_FILE "C450_oro_data.tile7.nc") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${ORO_FILE}") + file(DOWNLOAD + ${SFCGEN_URL}/${ORO_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${ORO_FILE} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + +set(SFCGEN2_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/GFS/fix/fix_sfc_climo") + +set(VEG_FILE "vegetation_type.viirs.igbp.0.1.nc") +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${VEG_FILE}") + file(DOWNLOAD + ${SFCGEN2_URL}/${VEG_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${VEG_FILE} + SHOW_PROGRESS + INACTIVITY_TIMEOUT 30 + ) +endif() + # Include cmake to allow parallel I/O tests. include (LibMPI) @@ -16,8 +60,6 @@ include_directories(${PROJECT_SOURCE_DIR}) # Copy necessary test files from the source data directory to the # build data directory. -execute_process( COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/data/files.txt ${CMAKE_CURRENT_BINARY_DIR}/data/files.txt) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LSanSuppress.supp ${CMAKE_CURRENT_BINARY_DIR}/LSanSuppress.supp) diff --git a/tests/sfc_climo_gen/data/files.txt b/tests/sfc_climo_gen/data/files.txt deleted file mode 100644 index c5b8bd439..000000000 --- a/tests/sfc_climo_gen/data/files.txt +++ /dev/null @@ -1,4 +0,0 @@ -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/sfc_climo_gen/C450_mosaic.nc -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/sfc_climo_gen/C450_grid.tile7.nc -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/sfc_climo_gen/C450_oro_data.tile7.nc -https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/GFS/fix/fix_sfc_climo/vegetation_type.viirs.igbp.0.1.nc From 3fb54b411630acf8348424d88d0dfd4d84bd70f9 Mon Sep 17 00:00:00 2001 From: George Gayno Date: Wed, 9 Feb 2022 22:27:10 +0000 Subject: [PATCH 2/9] Removed file download from workflows. Fixes #619 --- .github/workflows/debug-docs-test_coverage.yml | 5 +---- .github/workflows/intel.yml | 5 +---- .github/workflows/linux-mac-nceplibs-mpi.yml | 5 +---- .github/workflows/netcdf-versions.yml | 5 +---- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/.github/workflows/debug-docs-test_coverage.yml b/.github/workflows/debug-docs-test_coverage.yml index 96face7b7..2ed7899ca 100644 --- a/.github/workflows/debug-docs-test_coverage.yml +++ b/.github/workflows/debug-docs-test_coverage.yml @@ -106,10 +106,7 @@ jobs: - name: test run: | - cd ufs_utils/build/tests - wget -i ./chgres_cube/data/files.txt -P ./chgres_cube/data - wget -i ./sfc_climo_gen/data/files.txt -P ./sfc_climo_gen/data - cd ../ + cd ufs_utils/build export LSAN_OPTIONS=suppressions=LSanSuppress.supp ctest --rerun-failed --output-on-failure export PATH="/home/runner/.local/bin:$PATH" diff --git a/.github/workflows/intel.yml b/.github/workflows/intel.yml index 5c747e3f9..805aba7c7 100644 --- a/.github/workflows/intel.yml +++ b/.github/workflows/intel.yml @@ -169,8 +169,5 @@ jobs: - name: test run: | - cd ufs_utils/build/tests - wget -i ./chgres_cube/data/files.txt -P ./chgres_cube/data - wget -i ./sfc_climo_gen/data/files.txt -P ./sfc_climo_gen/data - cd ../ + cd ufs_utils/build ctest --rerun-failed --output-on-failure diff --git a/.github/workflows/linux-mac-nceplibs-mpi.yml b/.github/workflows/linux-mac-nceplibs-mpi.yml index 870024a45..9e67d4740 100644 --- a/.github/workflows/linux-mac-nceplibs-mpi.yml +++ b/.github/workflows/linux-mac-nceplibs-mpi.yml @@ -224,10 +224,7 @@ jobs: - name: test run: | - cd ufs_utils/build/tests - wget -i ./chgres_cube/data/files.txt -P ./chgres_cube/data - wget -i ./sfc_climo_gen/data/files.txt -P ./sfc_climo_gen/data - cd ../ + cd ufs_utils/build # Oversubscribe for OpenMPI to run more processes than CPUs export OMPI_MCA_rmaps_base_oversubscribe=1 ctest --rerun-failed --output-on-failure diff --git a/.github/workflows/netcdf-versions.yml b/.github/workflows/netcdf-versions.yml index a4ec9a5e4..8f666128b 100644 --- a/.github/workflows/netcdf-versions.yml +++ b/.github/workflows/netcdf-versions.yml @@ -157,9 +157,6 @@ jobs: - name: test run: | - cd ufs_utils/build/tests - wget -i ./chgres_cube/data/files.txt -P ./chgres_cube/data - wget -i ./sfc_climo_gen/data/files.txt -P ./sfc_climo_gen/data - cd ../ + cd ufs_utils/build export LSAN_OPTIONS=suppressions=LSanSuppress.supp ctest --rerun-failed --output-on-failure From 8b80b1124e612193b9eec2dfe61c812648434ebb Mon Sep 17 00:00:00 2001 From: George Gayno Date: Thu, 10 Feb 2022 16:49:53 +0000 Subject: [PATCH 3/9] Improve file download logic and place in its own function so it may be used by multiple tests. Fixes #619. --- tests/CMakeLists.txt | 20 ++++++++++++ tests/chgres_cube/CMakeLists.txt | 49 +++--------------------------- tests/sfc_climo_gen/CMakeLists.txt | 42 ++++--------------------- 3 files changed, 30 insertions(+), 81 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 30fefaa32..31d55ec5c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -3,6 +3,26 @@ # # Ed Hartnett 2/11/21 +# This function is used to download unit test data. +# It takes two arguments, the URL and the file to +# be downloaded. + +function(PULL_DATA THE_URL THE_FILE) + if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${THE_FILE}") + file(DOWNLOAD + ${THE_URL}/${THE_FILE} + ${CMAKE_CURRENT_BINARY_DIR}/data/${THE_FILE} + SHOW_PROGRESS + STATUS status + INACTIVITY_TIMEOUT 30 + ) + list(GET status 0 status_num) + if(NOT status_num EQUAL 0 OR NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${THE_FILE}") + message(FATAL_ERROR "Could not download ${THE_FILE}") + endif() + endif() +endfunction() + # Add the test subdirecotries. add_subdirectory(filter_topo) add_subdirectory(chgres_cube) diff --git a/tests/chgres_cube/CMakeLists.txt b/tests/chgres_cube/CMakeLists.txt index 806648461..c495ab39f 100644 --- a/tests/chgres_cube/CMakeLists.txt +++ b/tests/chgres_cube/CMakeLists.txt @@ -6,56 +6,15 @@ set(CHGRES_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/chgres_cube") set(V16SFC_FILE "gfs.v16.sfc.history.nc") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V16SFC_FILE}") - file(DOWNLOAD - ${CHGRES_URL}/${V16SFC_FILE} - ${CMAKE_CURRENT_BINARY_DIR}/data/${V16SFC_FILE} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() - set(V16SFC_FILE2 "gfs.v16.sfc2.history.nc") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V16SFC_FILE2}") - file(DOWNLOAD - ${CHGRES_URL}/${V16SFC_FILE2} - ${CMAKE_CURRENT_BINARY_DIR}/data/${V16SFC_FILE2} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() - set(V16ATM_FILE "gfs.v16.atm.history.nc") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V16ATM_FILE}") - file(DOWNLOAD - ${CHGRES_URL}/${V16ATM_FILE} - ${CMAKE_CURRENT_BINARY_DIR}/data/${V16ATM_FILE} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() - set(V14SFC_FILE "gfs.v14.sfc.history.nemsio") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V14SFC_FILE}") - file(DOWNLOAD - ${CHGRES_URL}/${V14SFC_FILE} - ${CMAKE_CURRENT_BINARY_DIR}/data/${V14SFC_FILE} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() - set(V15SFC_FILE "gfs.v15.sfc.history.nemsio") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${V15SFC_FILE}") - file(DOWNLOAD - ${CHGRES_URL}/${V15SFC_FILE} - ${CMAKE_CURRENT_BINARY_DIR}/data/${V15SFC_FILE} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() -# Include cmake to allow parallel I/O tests. +foreach(THE_FILE IN LISTS V16SFC_FILE V16SFC_FILE2 V16ATM_FILE V14SFC_FILE V15SFC_FILE) + PULL_DATA(${CHGRES_URL} ${THE_FILE}) +endforeach() + include (LibMPI) if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") diff --git a/tests/sfc_climo_gen/CMakeLists.txt b/tests/sfc_climo_gen/CMakeLists.txt index 663ce16a6..82e90207f 100644 --- a/tests/sfc_climo_gen/CMakeLists.txt +++ b/tests/sfc_climo_gen/CMakeLists.txt @@ -4,48 +4,18 @@ # George Gayno, Lin Gan, Ed Hartnett, Larissa Reames set(SFCGEN_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/sfc_climo_gen") - set(MOSAIC_FILE "C450_mosaic.nc") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${MOSAIC_FILE}") - file(DOWNLOAD - ${SFCGEN_URL}/${MOSAIC_FILE} - ${CMAKE_CURRENT_BINARY_DIR}/data/${MOSAIC_FILE} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() - set(GRID_FILE "C450_grid.tile7.nc") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${GRID_FILE}") - file(DOWNLOAD - ${SFCGEN_URL}/${GRID_FILE} - ${CMAKE_CURRENT_BINARY_DIR}/data/${GRID_FILE} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() - set(ORO_FILE "C450_oro_data.tile7.nc") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${ORO_FILE}") - file(DOWNLOAD - ${SFCGEN_URL}/${ORO_FILE} - ${CMAKE_CURRENT_BINARY_DIR}/data/${ORO_FILE} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() -set(SFCGEN2_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/GFS/fix/fix_sfc_climo") +foreach(THE_FILE IN LISTS MOSAIC_FILE GRID_FILE ORO_FILE) + PULL_DATA(${SFCGEN_URL} ${THE_FILE}) +endforeach() +set(SFCGEN2_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/GFS/fix/fix_sfc_climo") set(VEG_FILE "vegetation_type.viirs.igbp.0.1.nc") -if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/data/${VEG_FILE}") - file(DOWNLOAD - ${SFCGEN2_URL}/${VEG_FILE} - ${CMAKE_CURRENT_BINARY_DIR}/data/${VEG_FILE} - SHOW_PROGRESS - INACTIVITY_TIMEOUT 30 - ) -endif() + +PULL_DATA(${SFCGEN2_URL} ${VEG_FILE}) # Include cmake to allow parallel I/O tests. include (LibMPI) From 45ed1d94554526356c9a999dc05c76671f90d740 Mon Sep 17 00:00:00 2001 From: George Gayno Date: Thu, 10 Feb 2022 21:12:45 +0000 Subject: [PATCH 4/9] Access to the emc ftp site is only available from wcoss, hera and orion. Turn off build of the unit tests on all other machines. Fixes #619. --- CMakeLists.txt | 4 +--- build_all.sh | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3657c8ade..72be26b35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,8 +23,6 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel)$") CACHE STRING "Choose the type of build." FORCE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") - message(STATUS "Set BUILD_TESTING to YES and build unit testing package under tests") - set(BUILD_TESTING "YES") endif() # Set compiler flags. @@ -87,6 +85,6 @@ add_subdirectory(sorc) # Run unit tests. include(CTest) if(BUILD_TESTING) + message(STATUS "Set BUILD_TESTING to YES and build unit testing package under tests") add_subdirectory(tests) endif() - diff --git a/build_all.sh b/build_all.sh index fe457c9ca..069db79d0 100755 --- a/build_all.sh +++ b/build_all.sh @@ -26,7 +26,11 @@ else set -x fi -CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON" +CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=OFF" +if [[ "$target" == "hera" || "$target" == "orion" || "$target" == "wcoss_cray" || "$target" == "wcoss_dell_p3" ]]; then + CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=ON" +fi + #CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DENABLE_DOCS=ON" rm -fr ./build From d605f513d20d5423e463c56b1fb6128ee8bffa81 Mon Sep 17 00:00:00 2001 From: George Gayno Date: Fri, 11 Feb 2022 15:07:51 +0000 Subject: [PATCH 5/9] Update logic in build_all.sh. Fixes #619. --- build_all.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/build_all.sh b/build_all.sh index 069db79d0..1ffca94d3 100755 --- a/build_all.sh +++ b/build_all.sh @@ -26,13 +26,17 @@ else set -x fi -CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=OFF" +# The unit test data download is part of the build system. Not all machines can +# access the emc ftp site, so turn off the build of the units tests accordingly. + if [[ "$target" == "hera" || "$target" == "orion" || "$target" == "wcoss_cray" || "$target" == "wcoss_dell_p3" ]]; then CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=ON" + #CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DENABLE_DOCS=ON -DBUILD_TESTING=ON" +else + CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=OFF" + #CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DENABLE_DOCS=ON -DBUILD_TESTING=OFF" fi -#CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DENABLE_DOCS=ON" - rm -fr ./build mkdir ./build && cd ./build From 98d62dcffa87729c984ff62f457eaf146d00c791 Mon Sep 17 00:00:00 2001 From: George Gayno Date: Thu, 17 Feb 2022 16:44:55 +0000 Subject: [PATCH 6/9] Updates for the fvcom unit test. Fixes #619. --- tests/CMakeLists.txt | 2 +- tests/fvcom_tools/CMakeLists.txt | 16 ++++++++++------ tests/fvcom_tools/ftst_readfvcomnetcdf.F90 | 4 ++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a211d2c65..e4e2525a5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -24,7 +24,7 @@ function(PULL_DATA THE_URL THE_FILE) endfunction() # Add the test subdirecotries. -#add_subdirectory(fvcom_tools) +add_subdirectory(fvcom_tools) add_subdirectory(filter_topo) add_subdirectory(chgres_cube) add_subdirectory(fre-nctools) diff --git a/tests/fvcom_tools/CMakeLists.txt b/tests/fvcom_tools/CMakeLists.txt index 50ac42441..125d2c956 100644 --- a/tests/fvcom_tools/CMakeLists.txt +++ b/tests/fvcom_tools/CMakeLists.txt @@ -1,8 +1,17 @@ -# This is the cmake build file for the tests directory of the +# This is the cmake build file for the fvcom_tools test directory of the # UFS_UTILS project. # # David Wright +set(FVCOM_URL "https://ftp.emc.ncep.noaa.gov/static_files/public/UFS/ufs_utils/unit_tests/fvcom_tools") + +set(FVCOM_FILE "fvcom_unittest.nc") +set(SFCDATA_FILE "sfcdata_unittest.nc") + +foreach(THE_FILE IN LISTS FVCOM_FILE SFCDATA_FILE) + PULL_DATA(${FVCOM_URL} ${THE_FILE}) +endforeach() + if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -assume byterecl") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") @@ -13,14 +22,9 @@ include_directories(${PROJECT_SOURCE_DIR}) # Copy necessary test files from the source data directory to the # build data directory. -execute_process( COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/data/sfcdata_unittest.nc ${CMAKE_CURRENT_BINARY_DIR}/sfcdata_unittest.nc) -execute_process( COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/data/fvcom_unittest.nc ${CMAKE_CURRENT_BINARY_DIR}/fvcom_unittest.nc) execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/LSanSuppress.supp ${CMAKE_CURRENT_BINARY_DIR}/LSanSuppress.supp) add_executable(ftst_readfvcomnetcdf ftst_readfvcomnetcdf.F90) add_test(NAME fvcom_tools-ftst_readfvcomnetcdf COMMAND ftst_readfvcomnetcdf) target_link_libraries(ftst_readfvcomnetcdf fvcom_tools_lib) - diff --git a/tests/fvcom_tools/ftst_readfvcomnetcdf.F90 b/tests/fvcom_tools/ftst_readfvcomnetcdf.F90 index d43fb1f7f..a472f660f 100644 --- a/tests/fvcom_tools/ftst_readfvcomnetcdf.F90 +++ b/tests/fvcom_tools/ftst_readfvcomnetcdf.F90 @@ -74,8 +74,8 @@ program readfvcomnetcdf print*,"Starting test of fvcom_tools." !Set default file names, cold start, and time str - fv3file = 'sfcdata_unittest.nc' - fvcomfile = 'fvcom_unittest.nc' + fv3file = './data/sfcdata_unittest.nc' + fvcomfile = './data/fvcom_unittest.nc' wcstart = 'cold' inputFVCOMselStr = '3333-44-55T66:77:88.000000' t1 = 1 From 4e3c5b3e4c7445b16d284be7f78950fbb798b07e Mon Sep 17 00:00:00 2001 From: George Gayno Date: Thu, 17 Feb 2022 16:55:47 +0000 Subject: [PATCH 7/9] Turn off FVCOM unit test for now as it does not run with the GNU compiler. Fixes #619. --- tests/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e4e2525a5..67f3e3e0b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -24,7 +24,8 @@ function(PULL_DATA THE_URL THE_FILE) endfunction() # Add the test subdirecotries. -add_subdirectory(fvcom_tools) +# fvcom test only works for Intel. Comment out for now. +#add_subdirectory(fvcom_tools) add_subdirectory(filter_topo) add_subdirectory(chgres_cube) add_subdirectory(fre-nctools) From 09fef5c768881395997524b82362bd466f1f359f Mon Sep 17 00:00:00 2001 From: George Gayno Date: Thu, 17 Feb 2022 18:23:49 +0000 Subject: [PATCH 8/9] Remove cmake/mpiexec.jet since unit tests can't be run on Jet. Fixes #619 --- cmake/mpiexec.jet | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100755 cmake/mpiexec.jet diff --git a/cmake/mpiexec.jet b/cmake/mpiexec.jet deleted file mode 100755 index 332b33e29..000000000 --- a/cmake/mpiexec.jet +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# -# Arguments: -# -# $1 - Number of MPI Tasks -# $2+ - Executable and its arguments -# - -ACCOUNT= -QOS=debug - -NP=$1 -shift - -srun -A $ACCOUNT -q $QOS -n $NP $@ From ca2d69430fe92ce8d2e760e11cee4d5dad1575e0 Mon Sep 17 00:00:00 2001 From: George Gayno Date: Thu, 28 Apr 2022 14:46:14 +0000 Subject: [PATCH 9/9] Minor updates to build script. Fixes #619. --- build_all.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/build_all.sh b/build_all.sh index 1ffca94d3..0a8de2d7c 100755 --- a/build_all.sh +++ b/build_all.sh @@ -27,14 +27,16 @@ else fi # The unit test data download is part of the build system. Not all machines can -# access the emc ftp site, so turn off the build of the units tests accordingly. +# access the EMC ftp site, so turn off the build (-DBUILD_TESTING=OFF) of the units tests accordingly. +# Those with access to the EMC ftp site are: Orion, Hera, WCOSS-Cray, WCOSS-Dell. if [[ "$target" == "hera" || "$target" == "orion" || "$target" == "wcoss_cray" || "$target" == "wcoss_dell_p3" ]]; then - CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=ON" - #CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DENABLE_DOCS=ON -DBUILD_TESTING=ON" + CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=OFF" + #CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=ON" + #CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DENABLE_DOCS=ON -DBUILD_TESTING=ON" else CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DBUILD_TESTING=OFF" - #CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DENABLE_DOCS=ON -DBUILD_TESTING=OFF" + #CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=../ -DEMC_EXEC_DIR=ON -DENABLE_DOCS=ON -DBUILD_TESTING=OFF" fi rm -fr ./build @@ -45,4 +47,7 @@ cmake .. ${CMAKE_FLAGS} make -j 8 VERBOSE=1 make install +#make test +#ctest -I 4,5 + exit