testHarness: adding support for CDash/CTest subprojects
This commit is contained in:
parent
094e842fc0
commit
f5816ce345
4 changed files with 133 additions and 10 deletions
|
@ -0,0 +1,104 @@
|
||||||
|
# /*-------------------------------------------------------------------------*\
|
||||||
|
# ========= |
|
||||||
|
# \\ / F ield | foam-extend: Open Source CFD
|
||||||
|
# \\ / O peration |
|
||||||
|
# \\ / A nd | For copyright notice see file Copyright
|
||||||
|
# \\/ M anipulation |
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# License
|
||||||
|
# This file is part of foam-extend.
|
||||||
|
#
|
||||||
|
# foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License as published by the
|
||||||
|
# Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
# option) any later version.
|
||||||
|
#
|
||||||
|
# foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# "ctest -S" script configured to drive the Experimental, Nightly and
|
||||||
|
# Continuous dashboards for the FOAM tutorials
|
||||||
|
#
|
||||||
|
# Author
|
||||||
|
# Martin Beaudoin, Hydro-Quebec, 2015. All rights reserved
|
||||||
|
#
|
||||||
|
# \*-------------------------------------------------------------------------*/
|
||||||
|
#
|
||||||
|
set(THIS_SUBPROJECT "Tutorials")
|
||||||
|
set(CTEST_SOURCE_DIRECTORY $ENV{WM_PROJECT_DIR})
|
||||||
|
set(CTEST_BINARY_DIRECTORY "@binary_dir@")
|
||||||
|
set(CTEST_BUILD_NAME "@BUILDNAME@")
|
||||||
|
set(CTEST_SITE "@SITE@")
|
||||||
|
set(PROCESSOR_COUNT $ENV{WM_NCOMPPROCS})
|
||||||
|
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
|
||||||
|
|
||||||
|
# We add the current script as a Build note.
|
||||||
|
set(CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
|
||||||
|
|
||||||
|
# Run in parallel
|
||||||
|
if(PROCESSOR_COUNT)
|
||||||
|
set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# We will be using a CDash subproject if the required subproject is defined
|
||||||
|
# on the remote CDash server.
|
||||||
|
# Otherwise, the results will still get submitted, but under the global
|
||||||
|
# "Project" Dashboard, not under the "SubProjects" section.
|
||||||
|
# This way, we keep on supporting CDash sites where subprojects are
|
||||||
|
# still not defined.
|
||||||
|
|
||||||
|
# Get the CTEST_PROJECT_SUBPROJECTS definition:
|
||||||
|
include(${CTEST_SOURCE_DIRECTORY}/CTestConfig.cmake)
|
||||||
|
|
||||||
|
list(FIND CTEST_PROJECT_SUBPROJECTS ${THIS_SUBPROJECT} subProjectIsSupported)
|
||||||
|
|
||||||
|
if (NOT subProjectIsSupported EQUAL -1)
|
||||||
|
message("Dashboard: Using SubProject: ${THIS_SUBPROJECT}")
|
||||||
|
set_property(GLOBAL PROPERTY SubProject ${THIS_SUBPROJECT})
|
||||||
|
set_property(GLOBAL PROPERTY Label ${THIS_SUBPROJECT})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Select the required model : Experimental, Nightly, Continuous
|
||||||
|
# Default model: Experimental
|
||||||
|
set(DASHBOARD_MODEL Experimental)
|
||||||
|
if(${CTEST_SCRIPT_ARG} MATCHES Nightly)
|
||||||
|
set(DASHBOARD_MODEL Nightly)
|
||||||
|
elseif(${CTEST_SCRIPT_ARG} MATCHES Continuous)
|
||||||
|
set(DASHBOARD_MODEL Continuous)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Starting the various tests for the specified dashboard model
|
||||||
|
ctest_start(${DASHBOARD_MODEL})
|
||||||
|
|
||||||
|
# No need to configure, cmake took care of it already
|
||||||
|
#ctest_configure()
|
||||||
|
|
||||||
|
|
||||||
|
# Intentionally no ctest_update() step in this script when running the
|
||||||
|
# Experimental dashboard.
|
||||||
|
# We do not want the source code to get updated since we actually want to test
|
||||||
|
# the current instance of this source code. So we can test without having to
|
||||||
|
# commit the source code
|
||||||
|
|
||||||
|
if(${DASHBOARD_MODEL} MATCHES Experimental)
|
||||||
|
message("Experimental dashboard: We skip the repository update.")
|
||||||
|
else()
|
||||||
|
# Updating the repository for the Nightly and Continuous dashboards
|
||||||
|
ctest_update()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# We compile the source code
|
||||||
|
ctest_build()
|
||||||
|
|
||||||
|
# We run the tests
|
||||||
|
ctest_test()
|
||||||
|
|
||||||
|
# We submit the results to the CDash service
|
||||||
|
ctest_submit()
|
|
@ -102,7 +102,7 @@ FOREACH(caseWithAllrun ${listofCasesWithAllrun})
|
||||||
|
|
||||||
# Add a dependency on the global clean-up target
|
# Add a dependency on the global clean-up target
|
||||||
# When running in parallel, you need to wait for the cleanup to finish first
|
# When running in parallel, you need to wait for the cleanup to finish first
|
||||||
SET_TESTS_PROPERTIES(${testId} PROPERTIES DEPENDS ${cleanCasesTestId})
|
SET_TESTS_PROPERTIES(${testId} PROPERTIES DEPENDS ${cleanCasesTestId} LABELS Tutorials)
|
||||||
|
|
||||||
# Use this following entry instead for testing purpose
|
# Use this following entry instead for testing purpose
|
||||||
#ADD_TEST(${testId} bash -c "cd ${thisCasePath}; true")
|
#ADD_TEST(${testId} bash -c "cd ${thisCasePath}; true")
|
||||||
|
@ -117,4 +117,13 @@ EXECUTE_PROCESS(
|
||||||
WORKING_DIRECTORY .
|
WORKING_DIRECTORY .
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Configure the various ctest -S Dashboard drivers
|
||||||
|
|
||||||
|
# Driver for the tutorials
|
||||||
|
configure_file(
|
||||||
|
"$ENV{FOAM_TEST_HARNESS_DIR}/CMakeFiles/Dashboard_Tutorials.cmake.in"
|
||||||
|
"$ENV{FOAM_TEST_HARNESS_DIR}/runDir/Dashboard_Tutorials.cmake"
|
||||||
|
@ONLY)
|
||||||
|
|
||||||
|
|
||||||
# That's it.
|
# That's it.
|
||||||
|
|
|
@ -86,11 +86,16 @@ cmake $WM_PROJECT_DIR
|
||||||
# Invoke make help for the complete list of available commands.
|
# Invoke make help for the complete list of available commands.
|
||||||
#
|
#
|
||||||
# User-demand testing.
|
# User-demand testing.
|
||||||
# Will do: ExperimentalConfigure + ExperimentalBuild + ExperimentalTest + ExperimentalSubmit
|
#
|
||||||
make Experimental
|
# The old way. Still valid, but not supporting subprojects
|
||||||
|
# Will do: ExperimentalBuild + ExperimentalTest + ExperimentalSubmit
|
||||||
|
#make Experimental
|
||||||
|
#
|
||||||
# Nightly testing
|
# Nightly testing
|
||||||
# Will do: NightlyUpdate + NightylConfigure + NightlyBuild + NightlyTest + NightlySubmit
|
# Will do: NightlyUpdate + NightlyBuild + NightlyTest + NightlySubmit
|
||||||
# make Nightly
|
# make Nightly
|
||||||
|
|
||||||
|
# The new way. With support for subprojects
|
||||||
|
ctest -V -S ./Dashboard_Tutorials.cmake,Experimental
|
||||||
|
|
||||||
# That's it
|
# That's it
|
||||||
|
|
|
@ -86,11 +86,16 @@ cmake $WM_PROJECT_DIR
|
||||||
# Invoke make help for the complete list of available commands.
|
# Invoke make help for the complete list of available commands.
|
||||||
#
|
#
|
||||||
# User-demand testing.
|
# User-demand testing.
|
||||||
# Will do: ExperimentalConfigure + ExperimentalBuild + ExperimentalTest + ExperimentalSubmit
|
#
|
||||||
|
# The old way. Still valid, but not supporting subprojects
|
||||||
|
# Will do: ExperimentalBuild + ExperimentalTest + ExperimentalSubmit
|
||||||
#make Experimental
|
#make Experimental
|
||||||
|
#
|
||||||
# Nightly testing
|
# Nightly testing
|
||||||
# Will do: NightlyUpdate + NightylConfigure + NightlyBuild + NightlyTest + NightlySubmit
|
# Will do: NightlyUpdate + NightlyBuild + NightlyTest + NightlySubmit
|
||||||
make Nightly
|
# make Nightly
|
||||||
|
|
||||||
|
# The new way. With support for subprojects
|
||||||
|
ctest -V -S ./Dashboard_Tutorials.cmake,Nightly
|
||||||
|
|
||||||
# That's it
|
# That's it
|
||||||
|
|
Reference in a new issue