Skip to content
Snippets Groups Projects
Commit bec0b445 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Prepare MPI test infrastructure

parent b27836c9
Branches
Tags
1 merge request!11Feature/mpi
...@@ -33,7 +33,6 @@ SET("CMAKE_C_FLAGS_RELWITHDEBINFO" ...@@ -33,7 +33,6 @@ SET("CMAKE_C_FLAGS_RELWITHDEBINFO"
FORCE ) FORCE )
# Add new build types # Add new build types
message("* Adding build types...")
SET(CMAKE_CXX_FLAGS_COVERAGE SET(CMAKE_CXX_FLAGS_COVERAGE
"-g -O0 --coverage" "-g -O0 --coverage"
CACHE STRING "Flags used by the C++ compiler during coverage builds." CACHE STRING "Flags used by the C++ compiler during coverage builds."
...@@ -204,10 +203,14 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Coverage") ...@@ -204,10 +203,14 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Coverage")
set(GCOVR_OPTIONS --object-directory="${PASTIS_BINARY_DIR}" -r "${PASTIS_SOURCE_DIR}/src" ${GCOVR_EXCLUDE} ${GCOVR_EXTRA}) set(GCOVR_OPTIONS --object-directory="${PASTIS_BINARY_DIR}" -r "${PASTIS_SOURCE_DIR}/src" ${GCOVR_EXCLUDE} ${GCOVR_EXTRA})
if(${PASTIS_HAS_MPI})
set(MPI_UNIT_TESTS mpi_unit_tests)
endif()
add_custom_target(run_unit_tests add_custom_target(run_unit_tests
ALL ALL
COMMAND ${CMAKE_CTEST_COMMAND} -j ${PROCESSOR_COUNT} COMMAND ${CMAKE_CTEST_COMMAND} -j ${PROCESSOR_COUNT}
DEPENDS unit_tests pastis DEPENDS unit_tests ${MPI_UNIT_TESTS} pastis
COMMENT "Executing unit tests." COMMENT "Executing unit tests."
) )
......
...@@ -13,6 +13,13 @@ add_executable (unit_tests ...@@ -13,6 +13,13 @@ add_executable (unit_tests
test_TinyVector.cpp test_TinyVector.cpp
) )
if (${PASTIS_HAS_MPI})
add_executable (mpi_unit_tests
mpi_test_main.cpp
mpi_test_Messenger.cpp
)
endif()
target_include_directories(Catch2 INTERFACE ${CATCH_INCLUDE_DIR}) target_include_directories(Catch2 INTERFACE ${CATCH_INCLUDE_DIR})
target_link_libraries (unit_tests target_link_libraries (unit_tests
...@@ -21,7 +28,24 @@ target_link_libraries (unit_tests ...@@ -21,7 +28,24 @@ target_link_libraries (unit_tests
Catch2 Catch2
) )
if (${PASTIS_HAS_MPI})
target_link_libraries (mpi_unit_tests
PastisUtils
kokkos
${PARMETIS_LIBRARIES}
${MPI_CXX_LINK_FLAGS} ${MPI_CXX_LIBRARIES}
Catch2
)
endif()
enable_testing() enable_testing()
#parse catch tests #parse catch tests
ParseAndAddCatchTests(unit_tests) ParseAndAddCatchTests(unit_tests)
if (${PASTIS_HAS_MPI})
add_test(mpi_unit_tests ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 3 "--oversubscribe"
${MPIEXEC_PREFLAGS}
${PASTIS_BINARY_DIR}/mpi_unit_tests
${MPIEXEC_POSTFLAGS})
endif()
#include <catch.hpp>
#include <Messenger.hpp>
#include <mpi.h>
TEST_CASE("Messenger", "[mpi]") {
SECTION("check for parallel test") {
{
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
REQUIRE(rank == commRank());
int size;
MPI_Comm_size(MPI_COMM_WORLD, &size);
REQUIRE(size == commSize());
}
}
}
#define CATCH_CONFIG_RUNNER
#include <catch.hpp>
#include <Kokkos_Core.hpp>
#include <Messenger.hpp>
int main( int argc, char* argv[] )
{
Messenger::create(argc, argv);
Kokkos::initialize({4,-1,-1,true});
int result = Catch::Session().run( argc, argv );
Kokkos::finalize();
Messenger::destroy();
return result;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment