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 )
|
||||
MESSAGE(FATAL_ERROR "${PROJ}_INSTALL_DIR must be set before including macros.cmake")
|
||||
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
|
||||
|
@ -445,21 +447,40 @@ MACRO( INSTALL_EXAMPLE EXAMPLE )
|
|||
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} )
|
||||
SET( EXAMPLE_DIR "${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}" )
|
||||
# Copy the example directory
|
||||
ADD_CUSTOM_TARGET(
|
||||
${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}
|
||||
)
|
||||
# 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} )
|
||||
EXECUTE_PROCESS(COMMAND chmod 755 "${FILENAME}")
|
||||
ADD_TEST(
|
||||
NAME ${TESTNAME}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}"
|
||||
COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${PROCS} "${LBPM_INSTALL_DIR}/bin/${EXEFILE}" ${ARGN} )
|
||||
WORKING_DIRECTORY "${EXAMPLE_DIR}"
|
||||
COMMAND "${FILENAME}"
|
||||
)
|
||||
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES FAIL_REGULAR_EXPRESSION "${TEST_FAIL_REGULAR_EXPRESSION}" PROCESSORS ${PROCS} )
|
||||
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()
|
||||
|
||||
|
||||
|
|
|
@ -1,46 +1,5 @@
|
|||
********************************************************
|
||||
Running Hybrid Implementation of Color LBM
|
||||
********************************************************
|
||||
********************************************************
|
||||
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
|
||||
********************************************************
|
||||
8 0.34914 0.33333 0.001388 0.25364 0.33333 0.33333 0.33333 -1.6662e-06 2.1469e-06 -2.3454e-06
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user