]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
src/test: Using gtest-parallel to speedup unittests
authorErwan Velu <erwan@redhat.com>
Thu, 14 Jun 2018 13:24:07 +0000 (15:24 +0200)
committerErwan Velu <erwan@redhat.com>
Fri, 15 Jun 2018 13:53:30 +0000 (15:53 +0200)
Unittests are run sequentially and could take a long while to run.

This commit is about using gtest-parallel on some of them which are
known to be very slow due to this sequentiality.

To enable the parallel features, the 'parallel' argument just have to be
added to the add_ceph_unittest() call like in :
    -add_ceph_unittest(unittest_throttle)
    +add_ceph_unittest(unittest_throttle parallel)

This commit impact the following tests :

Test name                          Before   After (in seconds)
unittest_erasure_code_shec_all:       212      43
unittest_throttle                      15       5
unittest_crush                          9       6
unittest_rbd_mirror                    79      21

Total                                 315      75

This commit saves 240 seconds (4 minutes) per build.

Note it exist several other long tests but can't be parallelized since
there is explicit dependencies in the order to run the subtests.
Those stay sequential.

Signed-off-by: Erwan Velu <erwan@redhat.com>
cmake/modules/AddCephTest.cmake
src/test/common/CMakeLists.txt
src/test/crush/CMakeLists.txt
src/test/erasure-code/CMakeLists.txt
src/test/rbd_mirror/CMakeLists.txt

index 3cc5faaaa16f86b5288e60b360ee00d869a800ba..7442ea922ece6d81e737b2d27983e456d54aab30 100644 (file)
@@ -25,8 +25,12 @@ endfunction()
 
 #sets uniform compiler flags and link libraries
 function(add_ceph_unittest unittest_name)
-  add_ceph_test(${unittest_name} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${unittest_name})
+  set(UNITTEST "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${unittest_name}")
+  # If the second argument is "parallel", it means we want a parallel run
+  if("${ARGV1}" STREQUAL "parallel")
+    set(UNITTEST ${CMAKE_SOURCE_DIR}/src/test/gtest-parallel/gtest-parallel ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${unittest_name})
+  endif()
+  add_ceph_test(${unittest_name} "${UNITTEST}")
   target_link_libraries(${unittest_name} ${UNITTEST_LIBS})
   set_target_properties(${unittest_name} PROPERTIES COMPILE_FLAGS ${UNITTEST_CXX_FLAGS})
 endfunction()
-
index d68cfa2e55652efade45ee9b3fdc197c03bae40e..b76ea2b7ca7742be6bfa3e0ab319864f78e87c5c 100644 (file)
@@ -113,7 +113,7 @@ add_executable(unittest_throttle
   Throttle.cc
   $<TARGET_OBJECTS:unit-main>
   )
-add_ceph_unittest(unittest_throttle)
+add_ceph_unittest(unittest_throttle parallel)
 target_link_libraries(unittest_throttle global) 
 
 # unittest_lru
index 82a53dcd7ca7e7b3024d39e37b1eea6d92db58dc..cc442b3c46852bb4d74a23ae78100b75b9d5c547 100644 (file)
@@ -9,7 +9,7 @@ add_executable(unittest_crush
   crush.cc
   $<TARGET_OBJECTS:unit-main>
   )
-add_ceph_unittest(unittest_crush)
+add_ceph_unittest(unittest_crush parallel)
 target_link_libraries(unittest_crush global m ${BLKID_LIBRARIES})
 
 add_ceph_test(crush_weights.sh ${CMAKE_CURRENT_SOURCE_DIR}/crush_weights.sh)
index 4ba31ab2a80bf0034cf9dbbd0760d943654cc3da..e49e7f82ab6c26ec90a9c2242f11a171ad3d753d 100644 (file)
@@ -202,7 +202,7 @@ target_link_libraries(unittest_erasure_code_shec
 add_executable(unittest_erasure_code_shec_all
   TestErasureCodeShec_all.cc
   )
-add_ceph_unittest(unittest_erasure_code_shec_all)
+add_ceph_unittest(unittest_erasure_code_shec_all parallel)
 target_link_libraries(unittest_erasure_code_shec_all
   global
   ${CMAKE_DL_LIBS}
index a86dca523efeca7a5a8c562161d9e2453dadd42c..45d60fe594f4730b11c5c6b449891a2273489735 100644 (file)
@@ -39,7 +39,7 @@ add_executable(unittest_rbd_mirror
   image_sync/test_mock_SyncPointPruneRequest.cc
   pool_watcher/test_mock_RefreshImagesRequest.cc
   )
-add_ceph_unittest(unittest_rbd_mirror)
+add_ceph_unittest(unittest_rbd_mirror parallel)
 set_target_properties(unittest_rbd_mirror PROPERTIES COMPILE_FLAGS
   ${UNITTEST_CXX_FLAGS})
 add_dependencies(unittest_rbd_mirror