Merge branch 'adjust-ctest-labels' into 'develop'

[CMake] Adjust ctest labels

See merge request QEF/q-e!1459
This commit is contained in:
Ye Luo 2021-06-28 04:33:58 +00:00
commit 98901cc0d6
3 changed files with 36 additions and 31 deletions

View File

@ -535,6 +535,7 @@ endif()
# Tests
###########################################################
if(QE_ENABLE_TEST)
message(STATUS "Enabling tests in test-suite")
add_subdirectory(test-suite)
endif()

View File

@ -39,5 +39,8 @@ subroutine print_gpu_mem(out_unit)
usedMB = (totalMem-freeMem)/(1024*1024);
write(out_unit,'(5X, "GPU memory used/free/total (MiB): ", I0, A3, I0,A3, I0)') &
& usedMB, " / ", freeMB, " / ", totalMB
#else
implicit none
integer, intent(in) :: out_unit
#endif
end subroutine

View File

@ -14,16 +14,41 @@ if(NOT BASH_PROGRAM)
return()
endif()
if(QE_ENABLE_MPI)
set(actual_test_num_procs ${TESTCODE_NPROCS})
else()
set(actual_test_num_procs 1)
endif()
if(QE_ENABLE_OPENMP)
set(actual_test_num_threads ${TESTCODE_NTHREADS})
else()
set(actual_test_num_threads 1)
endif()
math(EXPR TOT_PROCS "${actual_test_num_procs} * ${actual_test_num_threads}")
message(VERBOSE "Each test runs on ${TOT_PROCS} processes_x_threads")
function(qe_runner test_name label test_binary test_input test_output)
if(QE_ENABLE_MPI)
add_test(NAME ${test_name}
COMMAND ${BASH_PROGRAM} ${CMAKE_CURRENT_SOURCE_DIR}/ctest_runner.sh ${label} ${test_output} ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${TESTCODE_NPROCS} ${MPIEXEC_PREFLAGS} ${test_binary} -inp ${test_input})
COMMAND ${BASH_PROGRAM} ${qe_SOURCE_DIR}/test-suite/ctest_runner.sh ${label} ${test_output} ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${TESTCODE_NPROCS} ${MPIEXEC_PREFLAGS} ${test_binary} -inp ${test_input})
else()
add_test(NAME ${test_name}
COMMAND ${BASH_PROGRAM} ${CMAKE_CURRENT_SOURCE_DIR}/ctest_runner.sh ${label} ${test_output} ${test_binary} -inp ${test_input})
COMMAND ${BASH_PROGRAM} ${qe_SOURCE_DIR}/test-suite/ctest_runner.sh ${label} ${test_output} ${test_binary} -inp ${test_input})
endif()
endfunction()
function(download_pseudo test_name input_file_dir_prefix work_dir labels)
add_test(NAME ${test_name}
COMMAND "${qe_SOURCE_DIR}/test-suite/check_pseudo.sh" "${input_file_dir_prefix}"
WORKING_DIRECTORY "${work_dir}")
set_tests_properties(${test_name} PROPERTIES
ENVIRONMENT "ESPRESSO_PSEUDO=${ESPRESSO_PSEUDO};NETWORK_PSEUDO=${NETWORK_PSEUDO}"
RESOURCE_LOCK shared_pseudo_folder_lock
LABELS "${labels};pseudo")
endfunction()
# skip checks for disabled features
if(NOT QE_ENABLE_LIBXC)
list(APPEND CHECK_SKIP_MESSAGE "libxc needed for this functional")
@ -39,17 +64,8 @@ execute_process(COMMAND sed -i "s/XXXXXX/${qe_SOURCE_DIR_FOR_SED}/" ${CMAKE_CURR
foreach(test_category IN LISTS qe_test_categories)
message(STATUS "generating tests in ${test_category} category")
#EXECUTE_PROCESS( COMMAND pwd ECHO_OUTPUT_VARIABLE)
#EXECUTE_PROCESS( COMMAND "./check_pseudo.sh" "${test_category}_"
# WORKING_DIRECTORY "${qe_SOURCE_DIR}/test-suite" ECHO_OUTPUT_VARIABLE)
set(check_pseudo_test_name "test-suite_pseudo_${test_category}")
add_test(NAME ${check_pseudo_test_name}
COMMAND "./check_pseudo.sh" "${test_category}_"
WORKING_DIRECTORY "${qe_SOURCE_DIR}/test-suite")
set_tests_properties(${check_pseudo_test_name} PROPERTIES
ENVIRONMENT "ESPRESSO_PSEUDO=${ESPRESSO_PSEUDO};NETWORK_PSEUDO=${NETWORK_PSEUDO}"
RESOURCE_LOCK shared_pseudo_folder_lock
LABELS "system;${test_category}")
set(check_pseudo_test_name "system--${test_category}-pseudo")
download_pseudo(${check_pseudo_test_name} "${test_category}_" ${CMAKE_CURRENT_SOURCE_DIR} "system--${test_category}")
file(GLOB category_subfolder_names
LIST_DIRECTORIES TRUE
@ -71,7 +87,7 @@ foreach(test_category IN LISTS qe_test_categories)
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/testcode/bin/testcode.py -v -c ${subfolder_name} compare)
set_tests_properties(${test_name_prefix}-correctness PROPERTIES
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
LABELS "system;${subfolder_name}")
LABELS "system--${test_category};${subfolder_name}")
# an adhoc fix for matdyn input missing error from testcode.py
file(GLOB matdyn_input_file_names
@ -142,29 +158,14 @@ foreach(test_category IN LISTS qe_test_categories)
qe_runner(${test_name} ${test_category} ${test_binary} ${test_input_relative} ${test_output_file})
if(QE_ENABLE_MPI)
set(actual_test_num_procs ${TESTCODE_NPROCS})
else()
set(actual_test_num_procs 1)
endif()
if(QE_ENABLE_OPENMP)
set(actual_test_num_threads ${TESTCODE_NTHREADS})
else()
set(actual_test_num_threads 1)
endif()
set(expected_exit_msg_file "${CMAKE_CURRENT_SOURCE_DIR}/${subfolder_name}/${test_input_file_name_no_extension}.expected_exit_msg")
if(EXISTS "${expected_exit_msg_file}")
file(STRINGS "${expected_exit_msg_file}" expected_exit_msg)
endif()
math(EXPR TOT_PROCS "${actual_test_num_procs} * ${actual_test_num_threads}")
#message("${subfolder_name} on ${TOT_PROCS} processes_x_threads")
set_tests_properties(${test_name} PROPERTIES
WORKING_DIRECTORY ${test_work_dir_prefix}/${test_work_dir}
ENVIRONMENT "ESPRESSO_PSEUDO=${ESPRESSO_PSEUDO};OMP_NUM_THREADS=${TESTCODE_NTHREADS}"
ENVIRONMENT "ESPRESSO_PSEUDO=${ESPRESSO_PSEUDO};OMP_NUM_THREADS=${actual_test_num_threads}"
PROCESSORS ${TOT_PROCS} PROCESSOR_AFFINITY TRUE
REQUIRED_FILES ${test_input_relative}
RESOURCE_LOCK shared_workdir_${test_work_dir}
@ -182,7 +183,7 @@ foreach(test_category IN LISTS qe_test_categories)
endif()
set_property(TEST ${test_name} APPEND PROPERTY PASS_REGULAR_EXPRESSION "${CHECK_SKIP_MESSAGE}")
set_property(TEST ${test_name} APPEND PROPERTY LABELS "system;${subfolder_name}")
set_property(TEST ${test_name} APPEND PROPERTY LABELS "system--${test_category};${subfolder_name}")
# add dependency between workflow steps
if(in_test_series)