# See http://formalverification.cs.utah.edu/ISP_Tests/ set(umpire_tests_passing change-send-buffer comm-dup-no-error comm-dup-no-free comm-dup-no-free2 comm-simple comm-split-no-free comm-translate-ranks hello no-error no-error2 no-error3 no-error3-any_src no-error-any_src no-error-interleaved-isend no-error-test no-error-testall no-error-testany no-error-vector-isend no-error-wait no-error-waitany-any_src2 no-error-waitany-any_src3 no-error-waitany no-error-wait-any_src no-error-wait-any_src2 no-error-wait-any_src3 no-error-wait-any_src4 no-error-waitany-any_src sendrecv-deadlock send-recv-ok irecv-isend-ok lost-request-waitall ) # Passing (no deadlock) tests set(umpire_tests_passing_broken irecv-isend-ok2 partial-recv ) # These are supposed to deadlock but ISP does not find deadlock # and we don't either. What should be test here? set(umpire_tests_missed_deadlock any_src-deadlock any_src-can-deadlock any_src-can-deadlock2 any_src-can-deadlock3 ) set(umpire_tests_deadlock any_src-can-deadlock10 any_src-can-deadlock4 any_src-can-deadlock5 any_src-can-deadlock6 any_src-waitall-deadlock any_src-waitall-deadlock2 any_src-waitall-deadlock3 any_src-waitany-deadlock2 any_src-waitany-deadlock any_src-wait-deadlock any_src-wait-deadlock2 basic-deadlock basic-deadlock-comm_create basic-deadlock-comm_dup basic-deadlock-comm_split bcast-deadlock collective-misorder collective-misorder-allreduce complex-deadlock finalize-deadlock irecv-deadlock waitall-deadlock waitany-deadlock wait-deadlock ) # failing (deadlocking) tests # Compile but run those tests: set(umpire_tests_deadlock_broken any_src-can-deadlock10_mod any_src-can-deadlock4_mod any_src-can-deadlock5_mod any_src-can-deadlock6_mod any_src-can-deadlock7 any_src-can-deadlock8 any_src-can-deadlock9 any_src-can-deadlock11 collective-misorder2 comm-bcast-deadlock dropped-req comm-deadlock ) set(umpire_tests_problematic deadlock-config # No deadlock detected by ISP unless MPI_Send blocking activated ) # problematic tests # These files are not listed on http://formalverification.cs.utah.edu/ISP_Tests/ set(umpire_src_other abort1.c abort2.c abort3.c abort.c basic-deadlock-cart_create.c basic-deadlock-cart_sub.c basic-deadlock-graph_create.c basic-deadlock-intercomm_create.c basic-deadlock-intercomm_merge.c change-send-buffer-exhaustive.c change-send-buffer-type-exhaustive.c collective-exhaustive-byte-int-mismatch.c collective-exhaustive-no-error.c collective-misorder.c collective-misorder2.c deadlock-config_blocking.c errhandler-no-error.c errhandler-no-free.c group-no-error2.c group-no-error3.c group-no-error.c group-no-error-exhaustive.c group-no-free2.c group-no-free3.c group-no-free.c group-no-free-exhaustive.c intercomm_create-deadlock2.c intercomm_create-deadlock3.c intercomm_create-deadlock4.c intercomm_create-deadlock.c intercomm_create-no-error.c intercomm_merge-deadlock.c lost-request2.c lost-request3.c lost-request.c no-error4-any_src.c no-error4.c no-error-derived-comms.c no-error-persistent-all-completions.c no-error-persistent.c no-error-persistent-test.c no-error-persistent-testpartial.c no-error-persistent-waitpartial.c no-error-probe-any_src.c no-error-probe-any_tag.c no-error-probe.c no-error-wait2.c # Does not compile. no-error-waitall-any_src2.c no-error-waitall-any_src3.c no-error-waitall-any_src.c no-error-waitall.c no-error-waitany2.c op-no-error.c op-no-free.c partial-recv-exhaustive.c partial-recv-persistent2.c partial-recv-persistent3.c partial-recv-persistent4.c partial-recv-persistent.c persistent2.c persistent3.c persistent4.c persistent.c probe-any_src-types-can-mismatch.c probe-any_tag-types-can-mismatch.c probe-deadlock.c pt2pt-byte-int-mismatch.c remote_group-no-error.c type-commit-twice.c type-no-error.c type-no-error-exhaustive.c type-no-error-exhaustive-with-isends.c type-no-free2.c type-no-free3.c type-no-free.c type-no-free-exhaustive.c ) # Add these files to the archive ################# set(sources "${CMAKE_CURRENT_SOURCE_DIR}/README") foreach(file ${umpire_src_other}) set(sources ${sources} ${CMAKE_CURRENT_SOURCE_DIR}/${file}) endforeach() foreach(file ${umpire_tests_passing} ${umpire_tests_passing_broken} ${umpire_tests_deadlock} ${umpire_tests_deadlock_broken} ${umpire_tests_missed_deadlock} ${umpire_tests_problematic} ${umpire_tests_ignored} ) set(sources ${sources} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.c) endforeach() set(txt_files ${txt_files} ${sources} PARENT_SCOPE) # Build the tests ################# if(enable_smpi AND enable_model-checking AND enable_smpi_ISP_testsuite) set(CMAKE_C_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpicc") set(CMAKE_Fortran_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpiff") include_directories(BEFORE "${CMAKE_HOME_DIRECTORY}/include/smpi") foreach (test ${umpire_tests_passing} ${umpire_tests_deadlock} ${umpire_tests_problematic} ) add_executable(${test} ${test}.c) target_link_libraries(${test} simgrid) set_source_files_properties(${test}.c PROPERTIES COMPILE_FLAGS "-Dlint -Wno-error -Wno-return-type") set(umpire_tesh ${umpire_tesh} ${test}) set(files_to_clean ${files_to_clean} ${CMAKE_CURRENT_BINARY_DIR}/${test}.tesh) endforeach(test) # TODO, what should we do about ${umpire_tests_missed_deadlock}? foreach (test ${umpire_tests_passing}) write_file(${CMAKE_CURRENT_BINARY_DIR}/${test}.tesh "! timeout 30") write_file(${CMAKE_CURRENT_BINARY_DIR}/${test}.tesh "! output display" APPEND) write_file(${CMAKE_CURRENT_BINARY_DIR}/${test}.tesh "\$ \${bindir:=.}/../../../../smpi_script/bin/smpirun -wrapper \"\${bindir:=.}/../../../../bin/simgrid-mc\" -hostfile ../../hostfile -platform ../../../../examples/platforms/small_platform.xml --log=xbt_cfg.thresh:warning -np 3 --cfg=smpi/host-speed:1e9 --cfg=smpi/coll-selector:mpich \${bindir:=.}/${test} --log=smpi_coll.thresh:error" APPEND) endforeach() foreach (test ${umpire_tests_deadlock} ${umpire_tests_problematic} ) write_file(${CMAKE_CURRENT_BINARY_DIR}/${test}.tesh "! timeout 30" ) write_file(${CMAKE_CURRENT_BINARY_DIR}/${test}.tesh "! expect return 3" APPEND) write_file(${CMAKE_CURRENT_BINARY_DIR}/${test}.tesh "! output display" APPEND) write_file(${CMAKE_CURRENT_BINARY_DIR}/${test}.tesh "\$ \${bindir:=.}/../../../../smpi_script/bin/smpirun -wrapper \"\${bindir:=.}/../../../../bin/simgrid-mc\" -hostfile ../../hostfile -platform ../../../../examples/platforms/small_platform.xml --log=xbt_cfg.thresh:warning -np 3 --cfg=smpi/host-speed:1e9 --cfg=smpi/coll-selector:mpich \${bindir:=.}/${test} --log=smpi_coll.thresh:error" APPEND) endforeach() endif() # Erase all tesh files on cleanup: they are generated anyway set_directory_properties ( PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${files_to_clean}" ) if(enable_smpi AND enable_model-checking AND enable_smpi_ISP_testsuite) foreach (tesh ${umpire_tesh}) ADD_TESH(mc-umpire-${tesh} --setenv srcdir=${CMAKE_CURRENT_SOURCE_DIR} --setenv bindir=${CMAKE_CURRENT_BINARY_DIR} --cd ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${tesh}.tesh) endforeach() endif()