summaryrefslogtreecommitdiffstats
path: root/src/test/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/CMakeLists.txt')
-rw-r--r--src/test/CMakeLists.txt983
1 files changed, 983 insertions, 0 deletions
diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
new file mode 100644
index 000000000..841b7ffa6
--- /dev/null
+++ b/src/test/CMakeLists.txt
@@ -0,0 +1,983 @@
+include(AddCephTest)
+
+set(UNITTEST_LIBS GMock::Main GMock::GMock GTest::GTest ${CMAKE_THREAD_LIBS_INIT}
+ ${GSSAPI_LIBRARIES} ${CMAKE_DL_LIBS})
+
+if(WIN32)
+ # Needed by Boost.
+ list(APPEND UNITTEST_LIBS ws2_32)
+endif()
+
+add_library(unit-main OBJECT unit.cc)
+target_include_directories(unit-main PRIVATE
+ $<TARGET_PROPERTY:GTest::GTest,INTERFACE_INCLUDE_DIRECTORIES>)
+
+add_subdirectory(common)
+add_subdirectory(compressor)
+add_subdirectory(crush)
+add_subdirectory(direct_messenger)
+add_subdirectory(encoding)
+add_subdirectory(librados)
+add_subdirectory(librados_test_stub)
+if(WITH_LIBRADOSSTRIPER)
+ add_subdirectory(libradosstriper)
+endif()
+if(WITH_RBD AND NOT WIN32)
+ # librbd tests require libcls*, which in turn require libos and libosd, which
+ # haven't been ported to Windows yet.
+ add_subdirectory(librbd)
+endif(WITH_RBD AND NOT WIN32)
+if (WITH_CEPHFS)
+ add_subdirectory(mds)
+endif()
+add_subdirectory(pybind)
+add_subdirectory(dokan)
+add_subdirectory(libcephfs)
+
+# Not available on Windows for the time being.
+if(NOT WIN32)
+ # libcls_* dependencies cascade to osd, kv and other libs that are not
+ # available on Windows yet.
+ add_subdirectory(cls_hello)
+ add_subdirectory(cls_cas)
+ add_subdirectory(cls_lock)
+ add_subdirectory(cls_log)
+ add_subdirectory(cls_numops)
+ add_subdirectory(cls_sdk)
+ if(WITH_RBD)
+ add_subdirectory(cls_journal)
+ add_subdirectory(cls_rbd)
+ endif(WITH_RBD)
+ add_subdirectory(cls_refcount)
+ add_subdirectory(cls_rgw)
+ add_subdirectory(cls_version)
+ add_subdirectory(cls_lua)
+ add_subdirectory(cls_rgw_gc)
+ add_subdirectory(cls_queue)
+ add_subdirectory(cls_2pc_queue)
+ add_subdirectory(cls_cmpomap)
+ add_subdirectory(journal)
+
+ add_subdirectory(erasure-code)
+ add_subdirectory(fs)
+ add_subdirectory(libcephsqlite)
+ add_subdirectory(client)
+ add_subdirectory(mon)
+ if(WITH_MGR)
+ add_subdirectory(mgr)
+ endif()
+ add_subdirectory(msgr)
+ add_subdirectory(neorados)
+ add_subdirectory(objectstore)
+ add_subdirectory(ObjectMap)
+ add_subdirectory(osd)
+ add_subdirectory(osdc)
+ add_subdirectory(immutable_object_cache)
+ add_subdirectory(exporter)
+endif(NOT WIN32)
+
+if(WITH_RADOSGW)
+ set(rgw_libs rgw_a)
+ if(WITH_RADOSGW_AMQP_ENDPOINT)
+ list(APPEND rgw_libs amqp_mock)
+ endif()
+ if(WITH_RADOSGW_KAFKA_ENDPOINT)
+ list(APPEND rgw_libs kafka_stub)
+ endif()
+ add_subdirectory(rgw)
+endif(WITH_RADOSGW)
+if(WITH_RBD AND NOT WIN32)
+add_subdirectory(rbd_mirror)
+endif(WITH_RBD AND NOT WIN32)
+if(WITH_SEASTAR)
+ add_subdirectory(crimson)
+endif()
+add_subdirectory(system)
+if(WITH_FIO)
+ add_subdirectory(fio)
+endif()
+add_subdirectory(lazy-omap-stats)
+
+# test_timers
+add_executable(ceph_test_timers
+ TestTimers.cc
+ )
+target_link_libraries(ceph_test_timers global ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS})
+
+# test_signal_handlers
+add_executable(ceph_test_signal_handlers
+ TestSignalHandlers.cc
+ )
+target_link_libraries(ceph_test_signal_handlers global ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS})
+
+# test_rewrite_latency
+add_executable(ceph_test_rewrite_latency
+ test_rewrite_latency.cc
+ )
+target_link_libraries(ceph_test_rewrite_latency ceph-common)
+
+# test_crypt
+add_executable(test_crypto
+ testcrypto.cc)
+target_link_libraries(test_crypto
+ ceph-common)
+
+add_executable(test_build_libcommon buildtest_skeleton.cc)
+target_link_libraries(test_build_libcommon ceph-common pthread ${CRYPTO_LIBS} ${EXTRALIBS})
+
+if(WITH_RADOSGW)
+ add_executable(test_build_librgw buildtest_skeleton.cc)
+ target_link_libraries(test_build_librgw rgw_a pthread ${CRYPTO_LIBS} ${EXTRALIBS})
+endif(WITH_RADOSGW)
+
+if(WITH_LIBCEPHFS)
+ # From src/test/Makefile-client.am: I dont get this one... testing the osdc build but link in libcephfs?
+ add_executable(test_build_libcephfs buildtest_skeleton.cc)
+ target_link_libraries(test_build_libcephfs cephfs pthread ceph-common ${CRYPTO_LIBS} ${EXTRALIBS})
+endif(WITH_LIBCEPHFS)
+
+add_executable(test_build_librados buildtest_skeleton.cc)
+target_link_libraries(test_build_librados librados pthread ${CRYPTO_LIBS} ${EXTRALIBS} ceph-common ${BLKID_LIBRARIES})
+if(NOT WIN32)
+ target_link_libraries(test_build_librados os osdc osd cls_lock_client)
+endif()
+
+# bench_log
+set(bench_log_srcs
+ bench_log.cc
+ )
+add_executable(ceph_bench_log
+ ${bench_log_srcs}
+ )
+target_link_libraries(ceph_bench_log global pthread ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS})
+if(NOT WIN32)
+ target_link_libraries(ceph_bench_log rt)
+endif()
+
+if(WITH_SYSTEMD)
+ add_executable(ceph_bench_journald_logger
+ bench_journald_logger.cc)
+ target_link_libraries(ceph_bench_journald_logger ceph-common)
+endif()
+
+# ceph_test_mutate
+add_executable(ceph_test_mutate
+ test_mutate.cc
+ )
+target_link_libraries(ceph_test_mutate global librados ${BLKID_LIBRARIES}
+ ${CMAKE_DL_LIBS})
+
+if(NOT WIN32)
+# test_trans
+add_executable(test_trans
+ test_trans.cc
+ )
+target_link_libraries(test_trans os global ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS})
+endif()
+
+## Benchmarks
+
+
+# ceph_omapbench
+set(omapbench_srcs
+ omap_bench.cc
+ )
+add_executable(ceph_omapbench
+ ${omapbench_srcs}
+ )
+target_link_libraries(ceph_omapbench
+ librados
+ ceph-common
+ Boost::program_options)
+
+if(WITH_KVS)
+ # ceph_kvstorebench
+ set(kvstorebench_srcs
+ kv_store_bench.cc
+ ${CMAKE_SOURCE_DIR}/src/key_value_store/kv_flat_btree_async.cc
+ )
+ add_executable(ceph_kvstorebench ${kvstorebench_srcs})
+ target_link_libraries(ceph_kvstorebench librados global ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS})
+ install(TARGETS ceph_kvstorebench DESTINATION bin)
+endif(WITH_KVS)
+
+if(NOT WIN32)
+ # ceph_objectstore_bench
+ add_executable(ceph_objectstore_bench objectstore_bench.cc)
+ target_link_libraries(ceph_objectstore_bench os global ${BLKID_LIBRARIES})
+endif()
+
+if(${WITH_RADOSGW})
+ # test_cors
+ set(test_cors_srcs test_cors.cc)
+ add_executable(test_cors
+ ${test_cors_srcs}
+ )
+ target_link_libraries(test_cors
+ librados
+ ${rgw_libs}
+ global
+ ${BLKID_LIBRARIES}
+ ${CURL_LIBRARIES}
+ ${EXPAT_LIBRARIES}
+ ${CMAKE_DL_LIBS} ${UNITTEST_LIBS})
+
+ # ceph_test_cls_rgw_meta
+ set(test_cls_rgw_meta_srcs test_rgw_admin_meta.cc)
+ add_executable(ceph_test_cls_rgw_meta
+ ${test_cls_rgw_meta_srcs}
+ )
+ target_link_libraries(ceph_test_cls_rgw_meta
+ librados
+ ${rgw_libs}
+ global
+ cls_version_client
+ cls_log_client
+ cls_refcount_client
+ cls_rgw_client
+ cls_user_client
+ cls_lock_client
+ ${BLKID_LIBRARIES}
+ ${CURL_LIBRARIES}
+ ${EXPAT_LIBRARIES}
+ ${CMAKE_DL_LIBS} ${UNITTEST_LIBS} ${CRYPTO_LIBS})
+
+ install(TARGETS
+ ceph_test_cls_rgw_meta
+ DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+ # ceph_test_cls_rgw_log
+ set(ceph_test_cls_rgw_log_srcs
+ test_rgw_admin_log.cc
+ )
+ add_executable(ceph_test_cls_rgw_log
+ ${ceph_test_cls_rgw_log_srcs}
+ )
+ target_link_libraries(ceph_test_cls_rgw_log
+ librados
+ ${rgw_libs}
+ global
+ cls_version_client
+ cls_log_client
+ cls_refcount_client
+ cls_rgw_client
+ cls_user_client
+ cls_lock_client
+ ${BLKID_LIBRARIES}
+ ${CURL_LIBRARIES}
+ ${EXPAT_LIBRARIES}
+ ${CMAKE_DL_LIBS}
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ ${CRYPTO_LIBS}
+ )
+
+# ceph_test_librgw_file (nfs-like RGW interface)
+add_executable(ceph_test_librgw_file
+ librgw_file.cc
+ )
+target_link_libraries(ceph_test_librgw_file
+ rgw
+ librados
+ ceph-common
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ ${ALLOC_LIBS}
+ )
+install(TARGETS ceph_test_librgw_file DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+add_dependencies(ceph_test_librgw_file
+ ceph_test_librgw_file_cd
+ ceph_test_librgw_file_gp
+ ceph_test_librgw_file_nfsns
+ ceph_test_librgw_file_aw
+ ceph_test_librgw_file_marker)
+
+# ceph_test_librgw_file_cd (just the rgw_file create-delete bucket ops)
+add_executable(ceph_test_librgw_file_cd
+ librgw_file_cd.cc
+ )
+target_link_libraries(ceph_test_librgw_file_cd
+ rgw
+ librados
+ ceph-common
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ ${ALLOC_LIBS}
+ )
+install(TARGETS ceph_test_librgw_file_cd DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# ceph_test_librgw_file_gp (just the rgw_file get-put bucket ops)
+add_executable(ceph_test_librgw_file_gp
+ librgw_file_gp.cc
+ )
+target_link_libraries(ceph_test_librgw_file_gp
+ rgw
+ librados
+ ceph-common
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ ${ALLOC_LIBS}
+ )
+install(TARGETS ceph_test_librgw_file_gp DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# ceph_test_librgw_file_nfsns (nfs namespace tests)
+add_executable(ceph_test_librgw_file_nfsns
+ librgw_file_nfsns.cc
+ )
+target_include_directories(ceph_test_librgw_file_nfsns
+ PUBLIC "${LUA_INCLUDE_DIR}"
+ SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw"
+ SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw/driver/rados")
+target_link_libraries(ceph_test_librgw_file_nfsns
+ rgw
+ librados
+ ceph-common
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ ${LUA_LIBRARIES}
+ ${ALLOC_LIBS}
+ )
+ target_link_libraries(ceph_test_librgw_file_nfsns spawn)
+install(TARGETS ceph_test_librgw_file_nfsns DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# ceph_test_librgw_file_aw (nfs write transaction [atomic write] tests)
+add_executable(ceph_test_librgw_file_aw
+ librgw_file_aw.cc
+ )
+target_link_libraries(ceph_test_librgw_file_aw
+ rgw
+ librados
+ ceph-common
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ ${ALLOC_LIBS}
+ )
+install(TARGETS ceph_test_librgw_file_aw DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# ceph_test_librgw_file_marker (READDIR with string and uint64 offsets)
+add_executable(ceph_test_librgw_file_marker
+ librgw_file_marker.cc
+ )
+target_include_directories(ceph_test_librgw_file_marker
+ PUBLIC "${LUA_INCLUDE_DIR}"
+ SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw"
+ SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw/driver/rados")
+target_link_libraries(ceph_test_librgw_file_marker
+ rgw
+ librados
+ ceph-common
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ ${LUA_LIBRARIES}
+ ${ALLOC_LIBS}
+ )
+ target_link_libraries(ceph_test_librgw_file_marker spawn)
+install(TARGETS ceph_test_librgw_file_marker DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# ceph_test_librgw_file_xattr (attribute ops)
+add_executable(ceph_test_librgw_file_xattr
+ librgw_file_xattr.cc)
+target_include_directories(ceph_test_librgw_file_xattr
+ PUBLIC "${LUA_INCLUDE_DIR}"
+ SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw"
+ SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw/driver/rados")
+target_link_libraries(ceph_test_librgw_file_xattr
+ rgw
+ librados
+ ceph-common
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ ${LUA_LIBRARIES}
+ ${ALLOC_LIBS}
+ )
+target_link_libraries(ceph_test_librgw_file_xattr spawn)
+
+# ceph_test_rgw_token
+add_executable(ceph_test_rgw_token
+ test_rgw_token.cc
+ )
+target_link_libraries(ceph_test_rgw_token
+ rgw
+ ceph-common
+ ${UNITTEST_LIBS}
+ ${EXTRALIBS}
+ )
+
+# librgw_file_gp (just the rgw_file get-put bucket ops)
+add_executable(test_rgw_ldap
+ ${CMAKE_SOURCE_DIR}/src/rgw/rgw_ldap.cc
+ test_rgw_ldap.cc
+ )
+target_include_directories(test_rgw_ldap
+ SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw"
+ SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/rgw/driver/rados")
+target_link_libraries(test_rgw_ldap
+ librados
+ ceph-common
+ ${UNITTEST_LIBS})
+if(WITH_OPENLDAP)
+ target_link_libraries(test_rgw_ldap
+ OpenLDAP::OpenLDAP)
+endif()
+endif(${WITH_RADOSGW})
+
+# ceph_multi_stress_watch
+add_executable(ceph_multi_stress_watch
+ multi_stress_watch.cc
+ )
+target_link_libraries(ceph_multi_stress_watch librados global radostest-cxx)
+
+install(TARGETS
+ ceph_bench_log
+ ceph_multi_stress_watch
+ ceph_omapbench
+ DESTINATION bin)
+
+if(NOT WIN32)
+#ceph_perf_local
+add_executable(ceph_perf_local
+ perf_local.cc
+ perf_helper.cc)
+if(HAVE_SSE)
+ set(PERF_LOCAL_FLAGS ${SSE3_FLAGS})
+endif(HAVE_SSE)
+if(HAVE_NEON)
+ set(PERF_LOCAL_FLAGS ${ARM_NEON_FLAGS})
+endif(HAVE_NEON)
+if(PERF_LOCAL_FLAGS)
+ set_target_properties(ceph_perf_local PROPERTIES COMPILE_FLAGS
+ ${PERF_LOCAL_FLAGS})
+endif()
+target_link_libraries(ceph_perf_local global ${UNITTEST_LIBS})
+
+install(TARGETS
+ ceph_objectstore_bench
+ ceph_perf_local
+ DESTINATION bin)
+
+# ceph_test_keys
+add_executable(ceph_test_keys
+ testkeys.cc
+ )
+target_link_libraries(ceph_test_keys mon global ${CMAKE_DL_LIBS})
+
+# ceph_test_snap_mapper
+add_executable(ceph_test_snap_mapper
+ test_snap_mapper.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+target_link_libraries(ceph_test_snap_mapper osd global ${BLKID_LIBRARIES} ${UNITTEST_LIBS})
+endif(NOT WIN32)
+
+add_executable(ceph_test_stress_watch
+ test_stress_watch.cc
+ )
+target_link_libraries(ceph_test_stress_watch
+ librados
+ ${UNITTEST_LIBS}
+ radostest-cxx
+ ${EXTRALIBS}
+ ${BLKID_LIBRARIES}
+ ${CMAKE_DL_LIBS}
+ )
+install(TARGETS
+ ceph_test_stress_watch
+ DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# limited Windows signal support, skipped for now
+if(NOT WIN32)
+add_executable(ceph_test_c2c
+ test_c2c.cc
+ )
+target_link_libraries(ceph_test_c2c
+ global
+ ceph-common
+ pthread
+ ${EXTRALIBS}
+ ${CMAKE_DL_LIBS}
+ )
+install(TARGETS
+ ceph_test_c2c
+ DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif(NOT WIN32)
+
+if(WITH_FUSE)
+ add_executable(ceph_test_cfuse_cache_invalidate
+ test_cfuse_cache_invalidate.cc
+ )
+ target_link_libraries(ceph_test_cfuse_cache_invalidate
+ ceph-common
+ )
+endif(WITH_FUSE)
+
+if(${WITH_CEPHFS})
+ add_executable(test_c_headers
+ test_c_headers.c
+ )
+ target_link_libraries(test_c_headers
+ librados
+ cephfs)
+endif(${WITH_CEPHFS})
+
+if(HAVE_BLKID OR FREEBSD)
+ add_executable(ceph_test_get_blkdev_props
+ test_get_blkdev_props.cc
+ )
+ target_link_libraries(ceph_test_get_blkdev_props
+ ceph-common
+ pthread
+ ${EXTRALIBS}
+ ${BLKID_LIBRARIES}
+ ${CMAKE_DL_LIBS}
+ )
+endif(HAVE_BLKID OR FREEBSD)
+
+# ceph_test_admin_socket_output
+
+if(StdFilesystem_FOUND)
+ add_executable(ceph_test_admin_socket_output
+ test_admin_socket_output.cc
+ admin_socket_output.cc
+ admin_socket_output_tests.cc)
+ target_link_libraries(ceph_test_admin_socket_output
+ ceph-common StdFilesystem::filesystem)
+ install(TARGETS
+ ceph_test_admin_socket_output
+ DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif()
+
+#make check starts here
+
+#following dependencies are run inside make check unit tests
+add_dependencies(tests
+ ceph-authtool
+ ceph-conf
+ rados
+ ceph_snappy)
+if(NOT WIN32)
+ # Not currently supported on Windows
+ add_dependencies(tests
+ ceph-mon
+ get_command_descriptions
+ ceph-dencoder
+ ceph-dencoder-modules
+ ceph-objectstore-tool
+ ceph-kvstore-tool
+ ceph-monstore-tool
+ ceph-osd
+ osdmaptool
+ ceph_example
+ ceph_snappy
+ cls_lock
+ ceph_test_objectstore
+ ceph_erasure_code_non_regression
+ cython_modules
+ crushtool
+ monmaptool)
+
+if (WITH_CEPHFS)
+ add_dependencies(tests ceph-mds)
+endif()
+if(WITH_MGR)
+ add_dependencies(tests ceph-mgr)
+endif()
+if(WITH_RBD)
+ add_dependencies(tests unittest_librbd rbd)
+ if(FREEBSD)
+ add_dependencies(tests rbd-ggate)
+ endif(FREEBSD)
+ if(WITH_RBD_MIRROR)
+ add_dependencies(tests unittest_librbd rbd-mirror)
+ endif(WITH_RBD_MIRROR)
+endif(WITH_RBD)
+if(WITH_RADOSGW)
+ add_dependencies(tests radosgw radosgw-admin)
+endif()
+#add dependency from fio just to ensure the plugin build isn't failing
+if(WITH_FIO)
+ add_dependencies(tests fio_ceph_objectstore)
+endif()
+
+if(WITH_RBD)
+ # Run rbd-unit-tests separate so they an run in parallel
+ # For values see: src/include/rbd/features.h
+ add_ceph_test(run-rbd-unit-tests-N.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh N)
+ add_ceph_test(run-rbd-unit-tests-0.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 0)
+ add_ceph_test(run-rbd-unit-tests-1.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 1)
+ add_ceph_test(run-rbd-unit-tests-61.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 61)
+ add_ceph_test(run-rbd-unit-tests-109.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 109)
+ add_ceph_test(run-rbd-unit-tests-127.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 127)
+ if(FREEBSD)
+ add_ceph_test(rbd-ggate.sh ${CMAKE_CURRENT_SOURCE_DIR}/rbd-ggate.sh)
+ endif(FREEBSD)
+endif(WITH_RBD)
+
+endif(NOT WIN32)
+
+add_ceph_test(run-cli-tests ${CMAKE_CURRENT_SOURCE_DIR}/run-cli-tests)
+
+# flaky, see https://tracker.ceph.com/issues/44243
+#add_ceph_test(test_objectstore_memstore.sh ${CMAKE_CURRENT_SOURCE_DIR}/test_objectstore_memstore.sh)
+
+# flaky
+#add_ceph_test(test_pidfile.sh ${CMAKE_CURRENT_SOURCE_DIR}/test_pidfile.sh)
+
+add_ceph_test(smoke.sh ${CMAKE_CURRENT_SOURCE_DIR}/smoke.sh)
+
+set_property(
+ TEST ${tox_tests}
+ PROPERTY ENVIRONMENT ${env_vars_for_tox_tests})
+
+# unittest_admin_socket
+add_executable(unittest_admin_socket
+ admin_socket.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_admin_socket)
+target_link_libraries(unittest_admin_socket global)
+
+# unittest_encoding
+add_executable(unittest_encoding
+ encoding.cc
+ )
+add_ceph_unittest(unittest_encoding)
+target_link_libraries(unittest_encoding ceph-common)
+
+# unittest_addrs
+add_executable(unittest_addrs
+ test_addrs.cc
+ )
+add_ceph_unittest(unittest_addrs)
+target_link_libraries(unittest_addrs ceph-common)
+
+# unittest_auth
+add_executable(unittest_auth
+ test_auth.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_auth)
+target_link_libraries(unittest_auth global)
+
+# unittest_workqueue
+add_executable(unittest_workqueue
+ test_workqueue.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_workqueue)
+target_link_libraries(unittest_workqueue global)
+
+# unittest_striper
+if(WITH_LIBRADOSSTRIPER)
+ add_executable(unittest_striper
+ test_striper.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+ add_ceph_unittest(unittest_striper)
+ target_link_libraries(unittest_striper global ${BLKID_LIBRARIES})
+endif()
+
+# unittest_str_list
+add_executable(unittest_str_list
+ test_str_list.cc
+ )
+add_ceph_unittest(unittest_str_list)
+target_link_libraries(unittest_str_list global)
+
+# This test's usage of templates generates more sections than a PE file can
+# contain.
+if(NOT MINGW)
+# unittest_log
+add_executable(unittest_log
+ ${CMAKE_SOURCE_DIR}/src/log/test.cc
+ )
+add_ceph_unittest(unittest_log)
+target_link_libraries(unittest_log global)
+endif(NOT MINGW)
+
+# unittest_base64
+add_executable(unittest_base64
+ base64.cc
+ )
+add_ceph_unittest(unittest_base64)
+target_link_libraries(unittest_base64 global)
+
+# unittest_ceph_argparse
+add_executable(unittest_ceph_argparse
+ ceph_argparse.cc
+ )
+add_ceph_unittest(unittest_ceph_argparse)
+target_link_libraries(unittest_ceph_argparse global)
+
+# unittest_ceph_compatset
+add_executable(unittest_ceph_compatset
+ ceph_compatset.cc
+ )
+add_ceph_unittest(unittest_ceph_compatset)
+target_link_libraries(unittest_ceph_compatset global)
+
+# unittest_gather
+add_executable(unittest_gather
+ gather.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_gather)
+target_link_libraries(unittest_gather global)
+
+# unittest_run_cmd
+add_executable(unittest_run_cmd
+ run_cmd.cc
+ )
+add_ceph_unittest(unittest_run_cmd)
+target_link_libraries(unittest_run_cmd global)
+
+if(NOT WIN32)
+# signals
+add_executable(unittest_signals
+ signals.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_signals)
+target_link_libraries(unittest_signals global)
+endif()
+
+# unittest_simple_spin
+add_executable(unittest_simple_spin
+ simple_spin.cc
+ )
+add_ceph_unittest(unittest_simple_spin)
+target_link_libraries(unittest_simple_spin global)
+
+# unittest_bufferlist
+add_executable(unittest_bufferlist
+ bufferlist.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_bufferlist)
+target_link_libraries(unittest_bufferlist global)
+
+# compiletest_cxx11_client
+add_executable(compiletest_cxx11_client
+ cxx11_client.cc
+ )
+if(CMAKE_VERSION VERSION_LESS "3.8")
+ # this is ugly as we'll end with -std=c++11 overriding the previous -std=c++17
+ # I would love to have a better way for old Cmakes
+ set_target_properties(compiletest_cxx11_client
+ PROPERTIES COMPILE_FLAGS "-std=c++11 -Werror -pedantic"
+ )
+else()
+ set_target_properties(compiletest_cxx11_client
+ PROPERTIES COMPILE_FLAGS "-Werror -pedantic"
+ CMAKE_CXX_STANDARD 11
+ CXX_STANDARD_REQUIRED ON
+ )
+endif()
+add_ceph_test(compiletest_cxx11_client
+ "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/compiletest_cxx11_client"
+ )
+target_link_libraries(compiletest_cxx11_client global)
+
+# unittest_xlist
+add_executable(unittest_xlist
+ test_xlist.cc
+ )
+add_ceph_unittest(unittest_xlist)
+target_link_libraries(unittest_xlist ceph-common)
+
+# unittest_arch
+add_executable(unittest_arch
+ test_arch.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_arch)
+target_link_libraries(unittest_arch global)
+
+# unittest_denc
+add_executable(unittest_denc
+ test_denc.cc
+ )
+add_ceph_unittest(unittest_denc)
+target_link_libraries(unittest_denc global)
+
+# unittest_mempool
+add_executable(unittest_mempool
+ test_mempool.cc
+ )
+add_ceph_unittest(unittest_mempool)
+target_link_libraries(unittest_mempool global)
+
+# unittest_features
+add_executable(unittest_features
+ test_features.cc
+ )
+add_ceph_unittest(unittest_features)
+target_link_libraries(unittest_features global)
+
+# unittest_crypto
+add_executable(unittest_crypto
+ crypto.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_crypto)
+target_link_libraries(unittest_crypto global)
+
+# unittest_crypto_init
+add_executable(unittest_crypto_init
+ crypto_init.cc
+ )
+add_ceph_unittest(unittest_crypto_init)
+target_link_libraries(unittest_crypto_init global)
+
+# unittest_perf_counters
+add_executable(unittest_perf_counters
+ perf_counters.cc
+ )
+add_ceph_unittest(unittest_perf_counters)
+target_link_libraries(unittest_perf_counters global)
+
+# unittest_ceph_crypto
+add_executable(unittest_ceph_crypto
+ ceph_crypto.cc)
+add_ceph_unittest(unittest_ceph_crypto)
+target_link_libraries(unittest_ceph_crypto global)
+
+# unittest_utf8
+add_executable(unittest_utf8
+ utf8.cc)
+add_ceph_unittest(unittest_utf8)
+target_link_libraries(unittest_utf8 global)
+
+# unittest_mime
+add_executable(unittest_mime
+ mime.cc)
+add_ceph_unittest(unittest_mime)
+target_link_libraries(unittest_mime ceph-common)
+
+# unittest_escape
+add_executable(unittest_escape
+ escape.cc)
+add_ceph_unittest(unittest_escape)
+target_link_libraries(unittest_escape ceph-common)
+
+# unittest_strtol
+add_executable(unittest_strtol
+ strtol.cc)
+add_ceph_unittest(unittest_strtol)
+target_link_libraries(unittest_strtol ceph-common)
+
+# unittest_confutils
+add_executable(unittest_confutils
+ confutils.cc)
+add_ceph_unittest(unittest_confutils)
+target_link_libraries(unittest_confutils ceph-common)
+
+# unittest_heartbeatmap
+add_executable(unittest_heartbeatmap
+ heartbeat_map.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_heartbeatmap)
+target_link_libraries(unittest_heartbeatmap global ceph-common)
+
+if(${WITH_RADOSGW})
+ # unittest_formatter
+ add_executable(unittest_formatter
+ formatter.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+ add_ceph_unittest(unittest_formatter)
+ target_link_libraries(unittest_formatter global)
+endif(${WITH_RADOSGW})
+
+# unittest_daemon_config
+add_executable(unittest_daemon_config
+ daemon_config.cc
+ $<TARGET_OBJECTS:unit-main>
+ )
+add_ceph_unittest(unittest_daemon_config)
+target_link_libraries(unittest_daemon_config
+ ceph-common
+ global
+ ${BLKID_LIBRARIES}
+ ${EXTRALIBS}
+ )
+
+if(WITH_LIBCEPHFS)
+# unittest_libcephfs_config
+add_executable(unittest_libcephfs_config
+ libcephfs_config.cc
+ )
+add_ceph_unittest(unittest_libcephfs_config)
+target_link_libraries(unittest_libcephfs_config cephfs)
+endif(WITH_LIBCEPHFS)
+
+if(WITH_RBD)
+# unittest_rbd_replay
+add_executable(unittest_rbd_replay
+ test_rbd_replay.cc)
+add_ceph_unittest(unittest_rbd_replay)
+target_link_libraries(unittest_rbd_replay
+ librbd
+ librados
+ global
+ ceph-common
+ rbd_replay
+ rbd_replay_ios
+ ${BLKID_LIBRARIES}
+ )
+endif(WITH_RBD)
+
+# unittest_ipaddr
+add_executable(unittest_ipaddr
+ test_ipaddr.cc)
+add_ceph_unittest(unittest_ipaddr)
+target_link_libraries(unittest_ipaddr global GTest::Main)
+
+# unittest_utime
+add_executable(unittest_utime
+ test_utime.cc)
+add_ceph_unittest(unittest_utime)
+target_link_libraries(unittest_utime ceph-common)
+
+# unittest_texttable
+add_executable(unittest_texttable
+ test_texttable.cc
+ $<TARGET_OBJECTS:common_texttable_obj>)
+add_ceph_unittest(unittest_texttable)
+target_link_libraries(unittest_texttable ceph-common)
+
+if(NOT WIN32)
+# unittest_on_exit
+add_executable(unittest_on_exit
+ on_exit.cc)
+add_ceph_unittest(unittest_on_exit)
+target_link_libraries(unittest_on_exit ceph-common)
+endif()
+
+# unittest_subprocess
+add_executable(unittest_subprocess
+ test_subprocess.cc)
+add_ceph_unittest(unittest_subprocess)
+target_link_libraries(unittest_subprocess ceph-common)
+
+# unittest_pageset
+add_executable(unittest_pageset test_pageset.cc)
+add_ceph_unittest(unittest_pageset)
+target_link_libraries(unittest_pageset ceph-common)
+
+add_executable(unittest_random_string test_random_string.cc $<TARGET_OBJECTS:unit-main>)
+add_ceph_unittest(unittest_random_string)
+target_link_libraries(unittest_random_string global)
+
+# unittest_any_
+add_executable(unittest_any test_any.cc)
+add_ceph_unittest(unittest_any)
+
+# unittest_weighted_shuffle
+add_executable(unittest_weighted_shuffle test_weighted_shuffle.cc)
+add_ceph_unittest(unittest_weighted_shuffle)
+
+add_executable(unittest_intarith test_intarith.cc)
+add_ceph_unittest(unittest_intarith)
+#make check ends here