From d87220ab85549c98366bdef21eec98a5c7d18f65 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.r.kempf@gmail.com> Date: Fri, 16 Oct 2015 13:36:24 +0200 Subject: [PATCH] Introduce dune_add_test in dune-istl There are some tests, which are hard to port in the paamg directory. They want to explicitly test _without_ direct solver. Previously, you simply did not add the flags for the direct solver packages. add_dune_test relies on all flags, so we need a way to disable components again. That will be implemented as part of dune_add_executable. For now, we build the targets ourselves and hand them to dune_add_test. --- dune/istl/CMakeLists.txt | 2 +- dune/istl/eigenvalue/CMakeLists.txt | 2 +- dune/istl/eigenvalue/test/CMakeLists.txt | 62 +++------ dune/istl/paamg/test/CMakeLists.txt | 164 ++++++++++------------- dune/istl/test/CMakeLists.txt | 157 +++++++--------------- 5 files changed, 140 insertions(+), 247 deletions(-) diff --git a/dune/istl/CMakeLists.txt b/dune/istl/CMakeLists.txt index c42e156a..a2fc22d9 100644 --- a/dune/istl/CMakeLists.txt +++ b/dune/istl/CMakeLists.txt @@ -1,7 +1,7 @@ add_subdirectory("eigenvalue") add_subdirectory("paamg") add_subdirectory("tutorial") -add_subdirectory("test" EXCLUDE_FROM_ALL) +add_subdirectory(test) #install headers install(FILES diff --git a/dune/istl/eigenvalue/CMakeLists.txt b/dune/istl/eigenvalue/CMakeLists.txt index 9f4da437..f6b863c3 100644 --- a/dune/istl/eigenvalue/CMakeLists.txt +++ b/dune/istl/eigenvalue/CMakeLists.txt @@ -1,4 +1,4 @@ -add_subdirectory("test" EXCLUDE_FROM_ALL) +add_subdirectory(test) #install headers install(FILES diff --git a/dune/istl/eigenvalue/test/CMakeLists.txt b/dune/istl/eigenvalue/test/CMakeLists.txt index 22be22a9..05421b0c 100644 --- a/dune/istl/eigenvalue/test/CMakeLists.txt +++ b/dune/istl/eigenvalue/test/CMakeLists.txt @@ -1,54 +1,22 @@ -set(NORMALTESTS - poweriterationtest -) +add_executable(poweriterationtest cond2test.cc) +target_link_libraries(poweriterationtest dunecommon) +dune_add_test(TARGET poweriterationtest) if(SUPERLU_FOUND) - set(SUPERLUTESTS - poweriterationsuperlutest - ) + add_executable(poweriterationsuperlutest cond2test.cc) + add_dune_superlu_flags(poweriterationsuperlutest) + dune_add_test(TARGET poweriterationsuperlutest) + target_link_libraries(poweriterationsuperlutest dunecommon) endif(SUPERLU_FOUND) if(ARPACKPP_FOUND) - set(ARPACKPPTESTS - arpackpptest - ) + add_executable(arpackpptest cond2test.cc) + add_dune_arpackpp_flags(arpackpptest) + target_link_libraries(arpackpptest dunecommon) + dune_add_test(TARGET arpackpptest) endif(ARPACKPP_FOUND) -if((ARPACKPP_FOUND) AND (SUPERLU_FOUND)) - set(ARPACKPPSUPERLUTESTS - arpackppsuperlutest - ) -endif((ARPACKPP_FOUND) AND (SUPERLU_FOUND)) - -set(ALLTESTS ${NORMALTESTS} ${SUPERLUTESTS} ${ARPACKPPTESTS} ${ARPACKPPSUPERLUTESTS}) - - -# We do not want want to build the tests during make all, -# but just build them on demand -add_directory_test_target(_test_target) -add_dependencies(${_test_target} ${ALLTESTS}) - - -# Provide source files -add_executable(poweriterationtest "cond2test.cc") - -if(SUPERLU_FOUND) - add_executable(poweriterationsuperlutest "cond2test.cc") - add_dune_superlu_flags("${SUPERLUTESTS}") -endif(SUPERLU_FOUND) - -if(ARPACKPP_FOUND) - add_executable(arpackpptest "cond2test.cc") - add_dune_arpackpp_flags("${ARPACKPPTESTS}") -endif(ARPACKPP_FOUND) - -if((ARPACKPP_FOUND) AND (SUPERLU_FOUND)) - add_executable(arpackppsuperlutest "cond2test.cc") - add_dune_arpackpp_flags("${ARPACKPPSUPERLUTESTS}") - add_dune_superlu_flags("${ARPACKPPSUPERLUTESTS}") -endif((ARPACKPP_FOUND) AND (SUPERLU_FOUND)) - -foreach(_exe ${ALLTESTS}) - target_link_libraries(${_exe} "dunecommon") - add_test(${_exe} ${_exe}) -endforeach(_exe ${ALLTESTS}) +if(ARPACKPP_FOUND AND SUPERLU_FOUND) + dune_add_test(NAME arpackppsuperlutest + SOURCES cond2test.cc) +endif() diff --git a/dune/istl/paamg/test/CMakeLists.txt b/dune/istl/paamg/test/CMakeLists.txt index 119f0518..49a414dd 100644 --- a/dune/istl/paamg/test/CMakeLists.txt +++ b/dune/istl/paamg/test/CMakeLists.txt @@ -1,103 +1,83 @@ -if(MPI_FOUND) - set(MPITESTS galerkintest hierarchytest transfertest pamgtest) -endif(MPI_FOUND) - -if(UMFPACK_FOUND) - set(UMFPACKTESTS umfpackfastamg umfpackamgtest) -endif(UMFPACK_FOUND) -if(SUPERLU_FOUND) - set(SUPERLUTESTS superlufastamg superluamgtest) -endif(SUPERLU_FOUND) -if(PARMETIS_FOUND) - set(PARMETISTESTS pamgtest pamg_comm_repart_test) -endif(PARMETIS_FOUND) -if(CMAKE_USE_PTHREADS_INIT) - set(PTHREADTESTS pthreadamgtest pthreadfastamgtest pthreadtwoleveltest) - if(SUPERLU_FOUND OR UMFPACK_FOUND) - set(PTHREADTESTS ${PTHREADTESTS} pthreaddirectamgtest pthreaddirectfastamgtest pthreaddirecttwoleveltest) - endif(SUPERLU_FOUND OR UMFPACK_FOUND) -endif(CMAKE_USE_PTHREADS_INIT) -set(NORMALTESTS amgtest fastamg graphtest kamgtest twolevelmethodschwarztest twolevelmethodtest ${PTHREADTESTS}) -set(ALLTESTS ${MPITESTS} ${PARMETISTESTS} ${NORMALTESTS} ${UMFPACKTESTS} ${SUPERLUTESTS}) - -# We do not want want to build the tests during make all, -# but just build them on demand -add_directory_test_target(_test_target) -add_dependencies(${_test_target} ${ALLTESTS}) - find_package(Threads) if(CMAKE_USE_PTHREADS_INIT) - # test: pthreadamgtest add_executable(pthreadamgtest pthreadamgtest.cc) - set_property(TARGET pthreadamgtest APPEND PROPERTY - COMPILE_DEFINITIONS "MYAMG=Dune::Amg::AMG<Operator,Vector,Smoother>") - target_link_libraries(pthreadamgtest "${CMAKE_THREAD_LIBS_INIT}") - # test: pthreadfastamgtest + target_compile_definitions(pthreadamgtest PUBLIC MYAMG=Dune::Amg::AMG<Operator,Vector,Smoother>) + target_link_libraries(pthreadamgtest ${CMAKE_THREAD_LIBS_INIT} ${DUNE_LIBS}) + dune_add_test(TARGET pthreadamgtest) + add_executable(pthreadfastamgtest pthreadamgtest.cc) - set_property(TARGET pthreadfastamgtest APPEND PROPERTY - COMPILE_DEFINITIONS "MYAMG=Dune::Amg::FastAMG<Operator,Vector>") - target_link_libraries(pthreadfastamgtest "${CMAKE_THREAD_LIBS_INIT}") - # test: pthreadtwoleveltest + target_compile_definitions(pthreadfastamgtest PUBLIC MYAMG=Dune::Amg::FastAMG<Operator,Vector>) + add_dune_mpi_flags(pthreadfastamgtest) + target_link_libraries(pthreadfastamgtest ${CMAKE_THREAD_LIBS_INIT} ${DUNE_LIBS}) + dune_add_test(TARGET pthreadfastamgtest) + add_executable(pthreadtwoleveltest pthreadtwoleveltest.cc) - target_link_libraries(pthreadtwoleveltest "${CMAKE_THREAD_LIBS_INIT}") + target_link_libraries(pthreadtwoleveltest ${CMAKE_THREAD_LIBS_INIT} ${DUNE_LIBS}) + dune_add_test(TARGET pthreadtwoleveltest) + if(SUPERLU_FOUND OR UMFPACK_FOUND) - # test: pthreaddirectamgtest - add_executable(pthreaddirectamgtest pthreadamgtest.cc) - set_property(TARGET pthreaddirectamgtest APPEND PROPERTY - COMPILE_DEFINITIONS "MYAMG=Dune::Amg::AMG<Operator,Vector,Smoother>") - target_link_libraries(pthreaddirectamgtest "${CMAKE_THREAD_LIBS_INIT}") - # test: pthreaddirectfastamgtest - add_executable(pthreaddirectfastamgtest pthreadamgtest.cc) - set_property(TARGET pthreaddirectfastamgtest APPEND PROPERTY - COMPILE_DEFINITIONS "MYAMG=Dune::Amg::FastAMG<Operator,Vector>") - target_link_libraries(pthreaddirectfastamgtest "${CMAKE_THREAD_LIBS_INIT}") - #test: pthreaddirecttwoleveltest - add_executable(pthreaddirecttwoleveltest pthreadtwoleveltest.cc) - target_link_libraries(pthreaddirecttwoleveltest "${CMAKE_THREAD_LIBS_INIT}") - # add direct solver flags - if(HAVE_SUPERLU) - add_dune_superlu_flags(pthreaddirectamgtest pthreadfastamgtest pthreaddirecttwoleveltest) - endif(HAVE_SUPERLU) - if(HAVE_UMFPACK) - add_dune_umfpack_flags(pthreaddirectamgtest pthreadfastamgtest pthreaddirecttwoleveltest) - endif(HAVE_UMFPACK) - endif(SUPERLU_FOUND OR UMFPACK_FOUND) -endif(CMAKE_USE_PTHREADS_INIT) - -add_executable(amgtest "amgtest.cc") -add_executable(fastamg "fastamg.cc") + dune_add_test(NAME pthreaddirectamgtest + SOURCES pthreadamgtest.cc + COMPILE_DEFINITIONS MYAMG=Dune::Amg::AMG<Operator,Vector,Smoother> + LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + + dune_add_test(NAME pthreaddirectfastamgtest + SOURCES pthreadamgtest.cc + COMPILE_DEFINITIONS MYAMG=Dune::Amg::FastAMG<Operator,Vector> + LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + + dune_add_test(NAME pthreaddirecttwoleveltest + SOURCES pthreadtwoleveltest.cc + LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + endif() +endif() + +# add an executable without SuperLU/UMFPack +add_executable(amgtest amgtest.cc) +target_link_libraries(amgtest ${DUNE_LIBS}) +dune_add_test(TARGET amgtest) + +add_executable(fastamg fastamg.cc) +target_link_libraries(fastamg ${DUNE_LIBS}) +dune_add_test(TARGET fastamg) + if(SUPERLU_FOUND) - add_executable(superluamgtest "amgtest.cc") + add_executable(superluamgtest amgtest.cc) add_dune_superlu_flags(superluamgtest) - add_executable(superlufastamg "fastamg.cc") - add_dune_superlu_flags(superlufastamg) + target_link_libraries(superluamgtest ${DUNE_LIBS}) + dune_add_test(TARGET superluamgtest) + + add_executable(superlufastamgtest fastamg.cc) + add_dune_superlu_flags(superlufastamgtest) + target_link_libraries(superlufastamgtest ${DUNE_LIBS}) + dune_add_test(TARGET superlufastamgtest) endif(SUPERLU_FOUND) + if(UMFPACK_FOUND) - add_executable(umfpackamgtest "amgtest.cc") - add_dune_umfpack_flags(umfpackamgtest) - add_executable(umfpackfastamg "fastamg.cc") - add_dune_umfpack_flags(umfpackfastamg) + dune_add_test(NAME umfpackamgtest + SOURCES amgtest.cc) + + dune_add_test(NAME umfpackfastamgtest + SOURCES fastamg.cc) endif(UMFPACK_FOUND) -add_executable(twolevelmethodtest "twolevelmethodtest.cc") -add_dune_superlu_flags(twolevelmethodtest) -add_executable(galerkintest "galerkintest.cc") -add_executable(graphtest "graphtest.cc") -add_executable(hierarchytest "hierarchytest.cc") -add_executable(kamgtest "kamgtest.cc") -add_dune_superlu_flags(kamgtest) -add_executable(pamg_comm_repart_test "parallelamgtest.cc") -set_target_properties(pamg_comm_repart_test PROPERTIES COMPILE_FLAGS "-DAMG_REPART_ON_COMM_GRAPH") -add_executable(pamgtest "parallelamgtest.cc") -add_dune_superlu_flags(pamgtest) -add_executable(transfertest "transfertest.cc") -add_executable(twolevelmethodschwarztest "twolevelmethodtest.cc") -set_target_properties(twolevelmethodschwarztest PROPERTIES COMPILE_FLAGS "-DUSE_OVERLAPPINGSCHWARZ") -add_dune_superlu_flags(twolevelmethodschwarztest) - -foreach(_exe ${ALLTESTS}) - target_link_libraries(${_exe} "dunecommon") - add_test(${_exe} ${_exe}) -endforeach(_exe ${ALLTESTS}) - -add_dune_mpi_flags("${MPITESTS}") -add_dune_parmetis_flags("${PARMETISTESTS}") + + +dune_add_test(SOURCES twolevelmethodtest.cc) + +dune_add_test(SOURCES galerkintest.cc) +dune_add_test(SOURCES graphtest.cc) +dune_add_test(SOURCES hierarchytest.cc) +dune_add_test(SOURCES kamgtest.cc) + +dune_add_test(NAME pamg_comm_repart_test + SOURCES parallelamgtest.cc + COMPILE_DEFINITIONS -DAMG_REPART_ON_COMM_GRAPH) + +dune_add_test(NAME pamgtest + SOURCES parallelamgtest.cc) + +dune_add_test(SOURCES transfertest.cc) + +dune_add_test(NAME twolevelmethodschwarztest + SOURCES twolevelmethodtest.cc + COMPILE_DEFINITIONS USE_OVERLAPPINGSCHWARZ) diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt index 81b910b8..00c68540 100644 --- a/dune/istl/test/CMakeLists.txt +++ b/dune/istl/test/CMakeLists.txt @@ -1,133 +1,78 @@ -set(NORMALTEST - basearraytest - bcrsassigntest - bvectortest - bcrsbuildtest - bcrsimplicitbuildtest - complexmatrixtest - dotproducttest - iotest - inverseoperator2prectest - matrixiteratortest - matrixtest - matrixutilstest - mmtest - multitypeblockmatrixtest - multitypeblockvectortest - mv - scaledidmatrixtest - seqmatrixmarkettest - vbvectortest) +dune_add_test(SOURCES basearraytest.cc) -if(HAVE_PARDISO) - set(PARDISOTEST test_pardiso) -endif(HAVE_PARDISO) +dune_add_test(SOURCES bcrsassigntest.cc) -if(SUPERLU_FOUND) - set(SUPERLUTESTS - complexrhstest superlutest superluztest superluctest superlustest - ) -endif(SUPERLU_FOUND) +dune_add_test(SOURCES dotproducttest.cc) -if(UMFPACK_FOUND) - set(UMFPACKTESTS umfpacktest) -endif() +dune_add_test(SOURCES complexmatrixtest.cc) -if ((SUPERLU_FOUND) OR (UMFPACK_FOUND)) - set(OVLPSCHWARZTESTS overlappingschwarztest) -endif() +dune_add_test(SOURCES matrixutilstest.cc) -if(HAVE_MPI) - set(MPITESTS vectorcommtest matrixmarkettest matrixredisttest) -endif(HAVE_MPI) +dune_add_test(SOURCES matrixtest.cc) -set(ALLTESTS ${MPITESTS} ${NORMALTEST} ${PARDISOTEST} ${SUPERLUTESTS} ${UMFPACKTESTS} ${OVLPSCHWARZTESTS}) - - -# We do not want want to build the tests during make all, -# but just build them on demand -add_directory_test_target(_test_target) -add_dependencies(${_test_target} ${ALLTESTS}) - - -include(DuneMPI) - -# Provide source files -add_executable(basearraytest "basearraytest.cc") -add_executable(bcrsassigntest "bcrsassigntest.cc") -add_executable(dotproducttest "dotproducttest.cc") -add_executable(complexmatrixtest "complexmatrixtest.cc") -add_executable(matrixutilstest "matrixutilstest.cc") -add_executable(matrixtest "matrixtest.cc") -add_executable(bvectortest "bvectortest.cc") -add_executable(vbvectortest "vbvectortest.cc") -add_executable(bcrsbuildtest "bcrsbuild.cc") -add_executable(bcrsimplicitbuildtest "bcrsimplicitbuild.cc") -set_property(TARGET bcrsimplicitbuildtest APPEND PROPERTY COMPILE_DEFINITIONS "DUNE_ISTL_WITH_CHECKING=1") -add_executable(matrixiteratortest "matrixiteratortest.cc") -add_executable(mmtest mmtest.cc) -add_executable(multitypeblockmatrixtest "multitypeblockmatrixtest.cc") -add_executable(multitypeblockvectortest "multitypeblockvectortest.cc") -add_executable(mv "mv.cc") -add_executable(iotest "iotest.cc") -add_executable(inverseoperator2prectest "inverseoperator2prectest.cc") -add_executable(scaledidmatrixtest "scaledidmatrixtest.cc") -add_executable(seqmatrixmarkettest "matrixmarkettest.cc") -#set_target_properties(seqmatrixmarkettest PROPERTIES COMPILE_FLAGS -# "-DMMSEQUENTIAL ${MPI_DUNE_COMPILE_FLAGS} -DENABLE_MPI=1 -DMPICH_SKIP_MPICXX -DMPIPP_H") +dune_add_test(SOURCES bvectortest.cc) -if(HAVE_PARDISO) - add_executable(pardiso_test test_pardiso.cc) +dune_add_test(SOURCES vbvectortest.cc) + +dune_add_test(SOURCES bcrsbuild.cc) + +dune_add_test(SOURCES bcrsimplicitbuild.cc + COMPILE_DEFINITIONS DUNE_ISTL_WITH_CHECKING=1) - # TODO add pardiso flags +dune_add_test(SOURCES matrixiteratortest.cc) + +dune_add_test(SOURCES mmtest.cc) + +dune_add_test(SOURCES multitypeblockmatrixtest.cc) + +dune_add_test(SOURCES multitypeblockvectortest.cc) + +dune_add_test(SOURCES mv.cc) + +dune_add_test(SOURCES iotest.cc) + +dune_add_test(SOURCES inverseoperator2prectest.cc) + +dune_add_test(SOURCES scaledidmatrixtest.cc) + +if(HAVE_PARDISO) + dune_add_test(SOURCES test_pardiso.cc) endif(HAVE_PARDISO) if(SUPERLU_FOUND) - add_executable(complexrhstest complexrhstest.cc) - set_property(TARGET complexrhstest APPEND PROPERTY COMPILE_DEFINITIONS "SUPERLU_NTYPE=3") - - add_executable(superlutest "superlutest.cc") + dune_add_test(NAME superlustest + SOURCES superlutest.cc + COMPILE_DEFINITIONS SUPERLU_NTYPE=0) - add_executable(superlustest "superlutest.cc") - set_property(TARGET superlustest APPEND PROPERTY COMPILE_DEFINITIONS "SUPERLU_NTYPE=0") + dune_add_test(SOURCES superlutest.cc) - add_executable(superluctest "superlutest.cc") - set_property(TARGET superluctest APPEND PROPERTY COMPILE_DEFINITIONS "SUPERLU_NTYPE=2") + dune_add_test(NAME superluctest + SOURCES superlutest.cc + COMPILE_DEFINITIONS SUPERLU_NTYPE=2) - add_executable(superluztest "superlutest.cc") - set_property(TARGET superluztest APPEND PROPERTY COMPILE_DEFINITIONS "SUPERLU_NTYPE=3") + dune_add_test(NAME superluztest + SOURCES superlutest.cc + COMPILE_DEFINITIONS SUPERLU_NTYPE=3) - add_dune_superlu_flags("${SUPERLUTESTS}") + dune_add_test(SOURCES complexrhstest.cc + COMPILE_DEFINITIONS SUPERLU_NTYPE=3) endif(SUPERLU_FOUND) if(UMFPACK_FOUND) - add_executable(umfpacktest umfpacktest.cc) - add_dune_umfpack_flags(umfpacktest) + dune_add_test(SOURCES umfpacktest.cc) set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "umfpack_decomp") endif() if ((SUPERLU_FOUND) OR (UMFPACK_FOUND)) - add_executable(overlappingschwarztest "overlappingschwarztest.cc") - if (SUPERLU_FOUND) - add_dune_superlu_flags(overlappingschwarztest) - endif() - if (UMFPACK_FOUND) - add_dune_umfpack_flags(overlappingschwarztest) - endif() + dune_add_test(SOURCES overlappingschwarztest.cc) endif() if(HAVE_MPI) - add_executable(matrixredisttest "matrixredisttest.cc") - add_executable(vectorcommtest "vectorcommtest.cc") - add_executable(matrixmarkettest "matrixmarkettest.cc") - add_dune_mpi_flags("${MPITESTS}") - add_dune_parmetis_flags(matrixredisttest) -endif(HAVE_MPI) + dune_add_test(SOURCES matrixredisttest.cc) + + dune_add_test(SOURCES vectorcommtest.cc) -foreach(_exe ${ALLTESTS}) - target_link_libraries(${_exe} "dunecommon") - add_test(${_exe} ${_exe}) -endforeach(_exe ${ALLTESTS}) + dune_add_test(SOURCES matrixmarkettest.cc) +endif(HAVE_MPI) -exclude_from_headercheck( - complexdata.hh) +exclude_from_headercheck(complexdata.hh) -- GitLab