-
Notifications
You must be signed in to change notification settings - Fork 84
/
CTestNightlyScript.cmake
107 lines (92 loc) · 3.63 KB
/
CTestNightlyScript.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
if(NOT "${TESTING_ROOT_DIR}" STREQUAL "")
message("Testing root directory is ${TESTING_ROOT_DIR}")
else()
message(FATAL_ERROR "You need to set the TESTING_ROOT_DIR variable. CMake will exit." )
endif()
if(NOT "${HOST_NAME}" STREQUAL "")
message("Hostname is ${HOST_NAME}")
else()
message(FATAL_ERROR "You need to set the HOST_NAME variable. CMake will exit." )
endif()
if(NOT "${NALU_DIR}" STREQUAL "")
message("NALU_DIR is ${NALU_DIR}")
else()
message(FATAL_ERROR "You need to set the NALU_DIR variable. CMake will exit." )
endif()
if("${BUILD_DIR}" STREQUAL "" )
set(BUILD_DIR "${NALU_DIR}/build")
endif()
# -----------------------------------------------------------
# -- Configure CTest
# -----------------------------------------------------------
# Set important configuration variables
set(CTEST_SITE "${HOST_NAME}")
set(CTEST_BUILD_NAME "Nalu-Wind-${CMAKE_SYSTEM_NAME}${EXTRA_BUILD_NAME}")
set(CTEST_SOURCE_DIRECTORY "${NALU_DIR}")
set(CTEST_BINARY_DIRECTORY "${BUILD_DIR}")
set(CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE)
find_program(CTEST_GIT_COMMAND NAMES git)
find_program(MAKE NAMES make)
# Add parallelism capability to testing
if("${NP}" STREQUAL "")
include(ProcessorCount)
ProcessorCount(NP)
endif()
message(STATUS "\nNumber of processors detected: ${NP}")
set(CTEST_BUILD_FLAGS "-j${NP}")
if(CTEST_DISABLE_OVERLAPPING_TESTS)
set(CTEST_PARALLEL_LEVEL 1)
else()
set(CTEST_PARALLEL_LEVEL ${NP})
endif()
# Update Command
set(CTEST_UPDATE_COMMAND "${CTEST_GIT_COMMAND}")
set(CTEST_GIT_INIT_SUBMODULES TRUE)
# Configure Command
set(CTEST_CONFIGURE_COMMAND "cmake ${CMAKE_CONFIGURE_ARGS} -DENABLE_TESTS:BOOL=ON ${CTEST_SOURCE_DIRECTORY}")
# Build Command
set(CTEST_BUILD_COMMAND "${MAKE} ${CTEST_BUILD_FLAGS}")
# -----------------------------------------------------------
# -- Run CTest
# -----------------------------------------------------------
#ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
message("\n -- Start dashboard - ${CTEST_BUILD_NAME} --")
ctest_start("Nightly" TRACK "Nightly")
message("\n -- Update - ${CTEST_BUILD_NAME} --")
ctest_update(SOURCE "${CTEST_SOURCE_DIRECTORY}" RETURN_VALUE result)
message(" -- Update exit code = ${result} --")
if(result GREATER -1)
message("\n -- Configure - ${CTEST_BUILD_NAME} --")
ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE result)
message(" -- Configure exit code = ${result} --")
if(result EQUAL 0)
message("\n -- Build - ${CTEST_BUILD_NAME} --")
ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE result)
message(" -- Build exit code = ${result} --")
if(result EQUAL 0)
# Need to have TMPDIR set to disk on certain NREL machines for building so builds
# do not run out of space but unset when running to stop OpenMPI from complaining
if(UNSET_TMPDIR_VAR)
message("Clearing TMPDIR variable...")
unset(ENV{TMPDIR})
endif()
message("\n -- Test - ${CTEST_BUILD_NAME} --")
ctest_test(BUILD "${CTEST_BINARY_DIRECTORY}"
PARALLEL_LEVEL ${CTEST_PARALLEL_LEVEL}
RETURN_VALUE result)
message(" -- Test exit code = ${result} --")
endif()
endif()
endif()
message("\n -- Submit - ${CTEST_BUILD_NAME} --")
set(CTEST_NOTES_FILES "${TEST_LOG}")
set(CTEST_NOTES_FILES ${CTEST_NOTES_FILES} "${TEST_NORMS_FILE}")
if(HAVE_STATIC_ANALYSIS_OUTPUT)
set(CTEST_NOTES_FILES ${CTEST_NOTES_FILES} "${STATIC_ANALYSIS_LOG}")
endif()
ctest_submit(RETRY_COUNT 20
RETRY_DELAY 20
RETURN_VALUE result)
message(" -- Submit exit code = ${result} --")
message("\n -- Finished - ${CTEST_BUILD_NAME} --")