Tests avec CPPUNIT ================== L'appel a MPI_Init n'est fait qu'une seule fois pour chaque suite de test (voir TestMPIAccessDEC.cxx, TestMPIAccess.cxx, TestParaMEDMEM.cxx qui inclut tous MPIMainTest.hxx) Il est suivi par l'execution de toute la suite des tests regroupes dans les trois headers MPIAccess.hxx, MPIAccessDEC.hxx, ParaMEDMEMTest.hxx On a enfin un seul appel a MPI_Finalize. Si un des tests d'une suite de tests comporte une anomalie cela peut avoir des implications sur l'execution des tests suivants. [ABN-2015] Lancement des tests avec valgrind ============================================ Exemple avec MPICH : rm tmp_log* ; mpirun -np 3 valgrind --leak-check=full --show-reachable=yes --log-file=tmp_log%p src/ParaMEDMEMTest/TestParaMEDMEM && cat tmp_log* [ABN-2015] Lancement des tests avec gdb ======================================= Exemple avec MPICH : mpirun -np 2 xterm -e gdb src/ParaMEDMEMTest/TestMPIAccess ************************************************************************************************************* *********************** ce qui suit est obsolète ?? ************************************** ************************************************************************************************************* Lancement des tests de TestParaMEDMEM avec CPPUNIT et TotalView (option -tv) : ============================================================================== mpirun -np 5 -ssi rpi tcp C -tv -v -x PATH=${PATH},LD_LIBRARY_PATH=${LD_LIBRARY_PATH} TestParaMEDMEM Il arrive qu'on ne puisse pas utiliser totalview par manque de license. Lancement des tests de TestParaMEDMEM avec CPPUNIT et Valgrind avec "memory leaks" : ==================================================================================== mpirun -np 5 -ssi rpi tcp C -v -x PATH=${PATH},LD_LIBRARY_PATH=${LD_LIBRARY_PATH} valgrind --leak-check=full TestParaMEDMEM Lancement des tests fonctionnels de MPI_AccessDEC avec CPPUNIT : ================================================================ mpirun -np 11 -ssi rpi tcp C -v -x PATH=${PATH},LD_LIBRARY_PATH=${LD_LIBRARY_PATH} valgrind --leak-check=full TestMPIAccessDEC Lancement des tests unitaires de MPI_Access avec CPPUNIT : ========================================================== mpirun -np 3 -ssi rpi tcp C -v -x PATH=${PATH},LD_LIBRARY_PATH=${LD_LIBRARY_PATH} valgrind --leak-check=full TestMPIAccess TestMPIAccess/TestMPIAccessDEC/TestParaMEDMEM et gcov : ======================================================= Les resultats sont dans les repertoires suivants de $MED_BUILD_DIR/src/ParaMEDMEM/Test : ------------- TestParaMEDMEM-gcov/ TestMPIAccessDEC-gcov/ TestMPIAccess-gcov/ Je n'y ai pas trouve d'anomalies. compilation : -fprofile-arcs -ftest-coverage ------------- $MED_BUILD_DIR/src/ParaMEDMEM/makefile.in : LIB=libparamedar.a \ ------------------------------------------- libparamed.la $MED_BUILD_DIR/src/ParaMEDMEM/Test/makefile.in : LIB = libParaMEDMEMTestar.a \ ------------------------------------------------ libParaMEDMEMTest.la execution et gcov : ------------------- Pour pouvoir traiter les .cxx de ${MED_BUILD_DIR}/src/ParaMEDMEM et de ${MED_BUILD_DIR}/src/ParaMEDMEM/Test, on execute deux fois gcov. cd ${MED_BUILD_DIR}/src/ParaMEDMEM/Test mpirun -np 3 -ssi rpi tcp C -v -x PATH=${PATH},LD_LIBRARY_PATH=${LD_LIBRARY_PATH} TestMPIAccess gcov TestMPIAccess.cxx test_MPI_Access_Send_Recv.cxx \ test_MPI_Access_Cyclic_Send_Recv.cxx \ test_MPI_Access_SendRecv.cxx \ test_MPI_Access_ISend_IRecv.cxx \ test_MPI_Access_Cyclic_ISend_IRecv.cxx \ test_MPI_Access_ISendRecv.cxx \ test_MPI_Access_Probe.cxx \ test_MPI_Access_IProbe.cxx \ test_MPI_Access_Cancel.cxx \ test_MPI_Access_Send_Recv_Length.cxx \ test_MPI_Access_ISend_IRecv_Length.cxx \ test_MPI_Access_ISend_IRecv_Length_1.cxx \ test_MPI_Access_Time.cxx \ test_MPI_Access_Time_0.cxx \ test_MPI_Access_ISend_IRecv_BottleNeck.cxx \ ../MPI_Access.cxx gcov -o ../ TestMPIAccess.cxx test_MPI_Access_Send_Recv.cxx \ test_MPI_Access_Cyclic_Send_Recv.cxx \ test_MPI_Access_SendRecv.cxx \ test_MPI_Access_ISend_IRecv.cxx \ test_MPI_Access_Cyclic_ISend_IRecv.cxx \ test_MPI_Access_ISendRecv.cxx \ test_MPI_Access_Probe.cxx \ test_MPI_Access_IProbe.cxx \ test_MPI_Access_Cancel.cxx \ test_MPI_Access_Send_Recv_Length.cxx \ test_MPI_Access_ISend_IRecv_Length.cxx \ test_MPI_Access_ISend_IRecv_Length_1.cxx \ test_MPI_Access_Time.cxx \ test_MPI_Access_Time_0.cxx \ test_MPI_Access_ISend_IRecv_BottleNeck.cxx \ ../MPI_Access.cxx cd ${MED_BUILD_DIR}/src/ParaMEDMEM/Test mpirun -np 11 -ssi rpi tcp C -v -x PATH=${PATH},LD_LIBRARY_PATH=${LD_LIBRARY_PATH} TestMPIAccessDEC gcov TestMPIAccessDEC.cxx test_AllToAllDEC.cxx \ test_AllToAllvDEC.cxx \ test_AllToAllTimeDEC.cxx \ test_AllToAllvTimeDEC.cxx \ test_AllToAllvTimeDoubleDEC.cxx \ ../TimeInterpolator.cxx \ ../LinearTimeInterpolator.cxx \ ../MPI_Access.cxx \ ../MPI_AccessDEC.cxx gcov -o ../ TestMPIAccessDEC.cxx test_AllToAllDEC.cxx \ test_AllToAllvDEC.cxx \ test_AllToAllTimeDEC.cxx \ test_AllToAllvTimeDEC.cxx \ test_AllToAllvTimeDoubleDEC.cxx \ ../TimeInterpolator.cxx \ ../LinearTimeInterpolator.cxx \ ../MPI_Access.cxx \ ../MPI_AccessDEC.cxx cd ${MED_BUILD_DIR}/src/ParaMEDMEM/Test mpirun -np 5 -ssi rpi tcp C -v -x PATH=${PATH},LD_LIBRARY_PATH=${LD_LIBRARY_PATH} TestParaMEDMEM gcov TestParaMEDMEM.cxx ParaMEDMEMTest.cxx \ ParaMEDMEMTest_MPIProcessorGroup.cxx \ ParaMEDMEMTest_BlockTopology.cxx \ ParaMEDMEMTest_InterpKernelDEC.cxx \ ../BlockTopology.cxx \ ../ComponentTopology.cxx \ ../DEC.cxx \ ../ElementLocator.cxx \ ../InterpolationMatrix.cxx \ ../InterpKernelDEC.cxx \ ../MPIProcessorGroup.cxx \ ../MxN_Mapping.cxx \ ../ParaFIELD.cxx \ ../ParaMESH.cxx \ ../ParaSUPPORT.cxx \ ../ProcessorGroup.cxx \ ../TimeInterpolator.cxx \ ../LinearTimeInterpolator.cxx \ ../MPI_Access.cxx \ ../MPI_AccessDEC.cxx gcov -o ../ TestParaMEDMEM.cxx ParaMEDMEMTest.cxx \ ParaMEDMEMTest_MPIProcessorGroup.cxx \ ParaMEDMEMTest_BlockTopology.cxx \ ParaMEDMEMTest_InterpKernelDEC.cxx \ ../BlockTopology.cxx \ ../ComponentTopology.cxx \ ../DEC.cxx \ ../ElementLocator.cxx \ ../InterpolationMatrix.cxx \ ../InterpKernelDEC.cxx \ ../MPIProcessorGroup.cxx \ ../MxN_Mapping.cxx \ ../ParaFIELD.cxx \ ../ParaMESH.cxx \ ../ParaSUPPORT.cxx \ ../ProcessorGroup.cxx \ ../TimeInterpolator.cxx \ ../LinearTimeInterpolator.cxx \ ../MPI_Access.cxx \ ../MPI_AccessDEC.cxx