Adding option to check example output
This commit is contained in:
parent
3177cec2cc
commit
e0ab2445bb
50
cmake/CompareOutput.cmake
Normal file
50
cmake/CompareOutput.cmake
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# This script compares the output of TEST against GOLD,
|
||||||
|
# ensuring that all lines within GOLD are int TEST.
|
||||||
|
# Note that TEST may have additional lines that are not checked
|
||||||
|
CMAKE_POLICY(SET CMP0007 OLD)
|
||||||
|
|
||||||
|
FILE(READ "${TEST}" output )
|
||||||
|
FILE(READ "${GOLD}" sol )
|
||||||
|
|
||||||
|
macro(LIST_REPLACE LIST INDEX NEWVALUE)
|
||||||
|
list(INSERT ${LIST} ${INDEX} ${NEWVALUE})
|
||||||
|
MATH(EXPR __INDEX "${INDEX} + 1")
|
||||||
|
list(REMOVE_AT ${LIST} ${__INDEX})
|
||||||
|
endmacro(LIST_REPLACE)
|
||||||
|
|
||||||
|
# Convert file contents into a CMake list (where each element in the list is one line of the file)
|
||||||
|
STRING(REGEX REPLACE ";" "\\\\;" data "${output}")
|
||||||
|
STRING(REGEX REPLACE ";" "\\\\;" sol "${sol}")
|
||||||
|
STRING(REGEX REPLACE "\n" ";" data "${data}")
|
||||||
|
STRING(REGEX REPLACE "\n" ";" sol "${sol}")
|
||||||
|
LIST( LENGTH data N_data )
|
||||||
|
LIST( LENGTH sol N_sol )
|
||||||
|
MATH( EXPR N_data "${N_data}-1" )
|
||||||
|
MATH( EXPR N_sol "${N_sol}-1" )
|
||||||
|
FOREACH( index RANGE ${N_data} )
|
||||||
|
LIST(GET data ${index} tmp )
|
||||||
|
STRING(REGEX REPLACE "(\n|\r)" "" tmp "${tmp}")
|
||||||
|
STRING(STRIP "${tmp}" tmp )
|
||||||
|
LIST_REPLACE( data ${index} "${tmp}")
|
||||||
|
ENDFOREACH()
|
||||||
|
FOREACH( index RANGE ${N_sol} )
|
||||||
|
LIST( GET sol ${index} tmp )
|
||||||
|
STRING(REGEX REPLACE "(\n|\r)" "" tmp "${tmp}")
|
||||||
|
STRING(STRIP "${tmp}" tmp )
|
||||||
|
LIST_REPLACE( sol ${index} "${tmp}")
|
||||||
|
ENDFOREACH()
|
||||||
|
|
||||||
|
# Check that each line of sol is present in data (and delete it)
|
||||||
|
FOREACH( tmp ${sol} )
|
||||||
|
LIST(FIND data "${tmp}" result )
|
||||||
|
IF ( ${result} EQUAL -1 )
|
||||||
|
MESSAGE("Test output:\n${output}\n\n")
|
||||||
|
MESSAGE(FATAL_ERROR "Did not find '${tmp}' in test output\n" )
|
||||||
|
ELSE()
|
||||||
|
LIST(REMOVE_AT data ${result} )
|
||||||
|
ENDIF()
|
||||||
|
ENDFOREACH()
|
||||||
|
|
||||||
|
# Finished
|
||||||
|
MESSAGE( "All lines in ${GOLD} were found in ${TEST}")
|
||||||
|
|
|
@ -10,7 +10,9 @@ ENDIF()
|
||||||
IF ( NOT ${PROJ}_INSTALL_DIR )
|
IF ( NOT ${PROJ}_INSTALL_DIR )
|
||||||
MESSAGE(FATAL_ERROR "${PROJ}_INSTALL_DIR must be set before including macros.cmake")
|
MESSAGE(FATAL_ERROR "${PROJ}_INSTALL_DIR must be set before including macros.cmake")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
IF ( NOT ${PROJ}_BUILD_DIR )
|
||||||
|
MESSAGE(FATAL_ERROR "${PROJ}_BUILD_DIR must be set before including macros.cmake")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
# Macro to print all variables
|
# Macro to print all variables
|
||||||
|
@ -445,21 +447,40 @@ MACRO( INSTALL_EXAMPLE EXAMPLE )
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
|
||||||
|
|
||||||
# Copy an example folder
|
# Create an example test
|
||||||
|
CONFIGURE_FILE( "${${PROJ}_SOURCE_DIR}/cmake/CompareOutput.cmake" "${${PROJ}_BUILD_DIR}/CompareOutput.cmake" COPYONLY )
|
||||||
MACRO( TEST_EXAMPLE EXAMPLE EXEFILE PROCS ${ARGN} )
|
MACRO( TEST_EXAMPLE EXAMPLE EXEFILE PROCS ${ARGN} )
|
||||||
|
SET( EXAMPLE_DIR "${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}" )
|
||||||
|
# Copy the example directory
|
||||||
ADD_CUSTOM_TARGET(
|
ADD_CUSTOM_TARGET(
|
||||||
${EXAMPLE} ALL
|
${EXAMPLE} ALL
|
||||||
${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${EXAMPLE}" "${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}"
|
${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${EXAMPLE}" "${EXAMPLE_DIR}"
|
||||||
DEPENDS ${EXEFILE}
|
DEPENDS ${EXEFILE}
|
||||||
)
|
)
|
||||||
|
# Create a wrapper script to run the test and copy the output to ${EXAMPLE}.out
|
||||||
|
SET( FILENAME "${EXAMPLE_DIR}/run-${EXAMPLE}" )
|
||||||
|
FILE(WRITE "${FILENAME}" "# This is a automatically generated file to run example--${EXAMPLE}\n" )
|
||||||
|
FILE(APPEND "${FILENAME}" "${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${PROCS} \"${LBPM_INSTALL_DIR}/bin/${EXEFILE}\" ${ARGN} 2>&1 | tee ${EXAMPLE}.out\n\n" )
|
||||||
|
# Create the test to run the example
|
||||||
SET( TESTNAME example--${EXAMPLE} )
|
SET( TESTNAME example--${EXAMPLE} )
|
||||||
|
EXECUTE_PROCESS(COMMAND chmod 755 "${FILENAME}")
|
||||||
ADD_TEST(
|
ADD_TEST(
|
||||||
NAME ${TESTNAME}
|
NAME ${TESTNAME}
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}"
|
WORKING_DIRECTORY "${EXAMPLE_DIR}"
|
||||||
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${PROCS} "${LBPM_INSTALL_DIR}/bin/${EXEFILE}" ${ARGN} )
|
COMMAND "${FILENAME}"
|
||||||
|
)
|
||||||
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES FAIL_REGULAR_EXPRESSION "${TEST_FAIL_REGULAR_EXPRESSION}" PROCESSORS ${PROCS} )
|
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES FAIL_REGULAR_EXPRESSION "${TEST_FAIL_REGULAR_EXPRESSION}" PROCESSORS ${PROCS} )
|
||||||
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES RESOURCE_LOCK ${EXEFILE} )
|
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES RESOURCE_LOCK ${EXEFILE} )
|
||||||
|
# Create a test that checks the output against the data in EXAMPLE/OutputAns.txt
|
||||||
|
IF ( EXISTS "${EXAMPLE_DIR}/ExampleOutput.txt" )
|
||||||
|
ADD_TEST(
|
||||||
|
NAME ${TESTNAME}-output
|
||||||
|
WORKING_DIRECTORY "${EXAMPLE_DIR}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -DTEST=${EXAMPLE}.out -DGOLD=ExampleOutput.txt -P "${${PROJ}_BUILD_DIR}/CompareOutput.cmake"
|
||||||
|
)
|
||||||
|
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES FAIL_REGULAR_EXPRESSION "${TEST_FAIL_REGULAR_EXPRESSION}" PROCESSORS 1 )
|
||||||
|
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES DEPENDS ${TESTNAME} )
|
||||||
|
ENDIF()
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,46 +1,5 @@
|
||||||
********************************************************
|
8 0.34914 0.33333 0.001388 0.25364 0.33333 0.33333 0.33333 -1.6662e-06 2.1469e-06 -2.3454e-06
|
||||||
Running Hybrid Implementation of Color LBM
|
10 0.34583 0.33333 0.0022065 0.20135 0.33333 0.33333 0.33333 -8.5941e-07 1.734e-06 -2.071e-06
|
||||||
********************************************************
|
12 0.34377 0.33332 0.0031884 0.1675 0.33333 0.33333 0.33333 -7.089e-07 1.4714e-06 -1.7527e-06
|
||||||
********************************************************
|
15 0.3417 0.33332 0.0050284 0.13345 0.33333 0.33333 0.33333 -7.8226e-07 1.4551e-06 -1.6459e-06
|
||||||
tau = 1.000000
|
|
||||||
alpha = 0.010000
|
|
||||||
beta = 0.950000
|
|
||||||
das = 0.100000
|
|
||||||
dbs = 0.900000
|
|
||||||
Value of phi at solid surface = 0.800000
|
|
||||||
Distance to phi = 0.0: 1.156434
|
|
||||||
gamma_{wn} = 0.057960
|
|
||||||
Force(x) = 0.000000
|
|
||||||
Force(y) = 0.000000
|
|
||||||
Force(z) = 0.000000
|
|
||||||
Sub-domain size = 80 x 80 x 80
|
|
||||||
Parallel domain size = 1 x 1 x 1
|
|
||||||
********************************************************
|
|
||||||
Number of blocks = 32
|
|
||||||
Threads per block = 128
|
|
||||||
Sweeps per thread = 135
|
|
||||||
Number of nodes per side = 82
|
|
||||||
Total Number of nodes = 551368
|
|
||||||
********************************************************
|
|
||||||
Read input media...
|
|
||||||
Setting up communication control structures
|
|
||||||
Preparing the sendlists
|
|
||||||
SendLists are ready on host
|
|
||||||
Prepare to copy send/recv Lists to device
|
|
||||||
Devices are ready to communicate.
|
|
||||||
Copying phase ID to device
|
|
||||||
Allocating distributions
|
|
||||||
********************************************************
|
|
||||||
No. of timesteps: 1000
|
|
||||||
--------------------------------------------------------------------------------------
|
|
||||||
radius sw pw pn awn Jwn Gwn [xx, yy, zz, xy, xz, yz] --------------------------------------------------------------------------------------
|
|
||||||
8 0.34906 0.33333 0.0013898 0.26946 0.33334 0.33333 0.33333 -5.3309e-06 1.1201e-05 -1.3209e-05
|
|
||||||
10 0.34568 0.33333 0.0022109 0.21364 0.33334 0.33333 0.33333 -4.1967e-06 1.0265e-05 -1.2941e-05
|
|
||||||
12 0.34355 0.33333 0.0031972 0.1779 0.33334 0.33333 0.33333 -5.6086e-06 1.1842e-05 -1.4445e-05
|
|
||||||
15 0.34143 0.33332 0.005043 0.14164 0.33334 0.33333 0.33333 -5.5737e-06 1.0229e-05 -1.2561e-05
|
|
||||||
-------------------------------------------------------------------
|
|
||||||
********************************************************
|
|
||||||
CPU time = inf
|
|
||||||
Lattice update rate (per core)= 0.000000 MLUPS
|
|
||||||
Lattice update rate (total)= 0.000000 MLUPS
|
|
||||||
********************************************************
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user