From: Ali Maredia Date: Thu, 31 Dec 2015 03:58:55 +0000 (-0500) Subject: cmake: kv dir and bluestore unittests X-Git-Tag: v10.0.3~134^2~18 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b94f910cd13219dda1adba360a445c7893ff2ce9;p=ceph.git cmake: kv dir and bluestore unittests Added CMakeLists.txt in src/kv, replaced os_mon_objs with kv_objs, linked libkv to os, added HAVE_LIBROCKSDB to config-h.in.cmake, tweaked rocksdb unittest, added bluestore unittests, made rocksdb build with add_custom_target instead of custom_command. Signed-off-by: Ali Maredia --- diff --git a/CMakeLists.txt b/CMakeLists.txt index d79f0e794a81..a69644112724 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -228,6 +228,12 @@ if(WITH_REENTRANT_STRSIGNAL) set(HAVE_REENTRANT_STRSIGNAL 1 CACHE INTERNAL "Reentrant strsignal is supported.") endif(WITH_REENTRANT_STRSIGNAL) +set(HAVE_LIBROCKSDB 1) + +# -lbz2 and -lz link into kv +find_package(ZLIB REQUIRED) +find_package(BZip2 REQUIRED) + # Now create a useable config.h configure_file( ${PROJECT_SOURCE_DIR}/src/include/config-h.in.cmake diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8d7ca896c05c..fdeb2e3eb0bd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -558,7 +558,7 @@ set(common_util_src common/util.cc) add_library(common_util_obj OBJECT ${common_util_src}) add_library(mon STATIC ${lib_mon_srcs} $ - $ $ + $ $ $) set(ceph_mon_srcs @@ -576,10 +576,6 @@ if(${HAVE_XFS}) os/filestore/XfsFileStoreBackend.cc os/fs/XFS.cc) endif(${HAVE_XFS}) -set(libkv_srcs - kv/LevelDBStore.cc - kv/RocksDBStore.cc - kv/KeyValueDB.cc) set(libos_srcs os/ObjectStore.cc os/Transaction.cc @@ -611,24 +607,28 @@ set(libos_srcs os/bluestore/FreelistManager.cc os/bluestore/StupidAllocator.cc os/fs/FS.cc - ${libkv_srcs} ${libos_xfs_srcs}) -add_custom_command(OUTPUT "${CMAKE_SOURCE_DIR}/src/rocksdb/librocksdb.a" - COMMAND cd ${CMAKE_SOURCE_DIR}/src/rocksdb && EXTRA_CXXFLAGS=-fPIC PORTABLE=1 make static_lib) +# make rocksdb statically +add_custom_target(build_rocksdb + COMMAND + EXTRA_CXXFLAGS=-fPIC PORTABLE=1 make static_lib + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/rocksdb + COMMENT "rocksdb building") -set(os_mon_files - kv/LevelDBStore.cc) -add_library(os_mon_objs OBJECT ${os_mon_files}) -add_library(os STATIC ${libos_srcs} - $ - "${CMAKE_SOURCE_DIR}/src/rocksdb/librocksdb.a") -target_link_libraries(os bz2 z "${CMAKE_SOURCE_DIR}/src/rocksdb/librocksdb.a") +# add a dummy target to attach librocksdb.a and it's include_directories +add_library(rocksdb INTERFACE) +set_target_properties(rocksdb PROPERTIES INTERFACE_LINK_LIBRARIES "${CMAKE_SOURCE_DIR}/src/rocksdb/librocksdb.a") +add_dependencies(rocksdb build_rocksdb) +target_include_directories(rocksdb INTERFACE "${CMAKE_SOURCE_DIR}/src/rocksdb/include") + +add_subdirectory(kv) + +add_library(os STATIC ${libos_srcs} $) if(${HAVE_LIBAIO}) target_link_libraries(os aio) endif(${HAVE_LIBAIO}) -target_link_libraries(os leveldb snappy) -target_include_directories(os PUBLIC "${CMAKE_SOURCE_DIR}/src/rocksdb/include") +target_link_libraries(os kv leveldb snappy rocksdb) set(cls_references_files objclass/class_api.cc) add_library(cls_references_objs OBJECT ${cls_references_files}) diff --git a/src/include/config-h.in.cmake b/src/include/config-h.in.cmake index 8e376abb4d0f..6cf521b7ba4b 100644 --- a/src/include/config-h.in.cmake +++ b/src/include/config-h.in.cmake @@ -235,6 +235,9 @@ /* Defined if XIO */ #cmakedefine HAVE_XIO +/* Defined if you have librocksdb enabled */ +#cmakedefine HAVE_LIBROCKSDB + /* Defined if new gperftools */ #cmakedefine HAVE_GPERFTOOLS_HEAP_PROFILER_H #cmakedefine HAVE_GPERFTOOLS_MALLOC_EXTENSION_H diff --git a/src/kv/CMakeLists.txt b/src/kv/CMakeLists.txt new file mode 100644 index 000000000000..04ef9627cc7b --- /dev/null +++ b/src/kv/CMakeLists.txt @@ -0,0 +1,8 @@ +set(kv_srcs + KeyValueDB.cc + LevelDBStore.cc + RocksDBStore.cc) +add_library(kv_objs OBJECT ${kv_srcs}) +add_library(kv STATIC ${kv_srcs}) +target_include_directories(kv_objs PUBLIC ${CMAKE_SOURCE_DIR}/src/rocksdb/include) +target_link_libraries(kv bz2 z leveldb snappy rocksdb) diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 1dd71ecdeffe..4a63093675b0 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -89,7 +89,6 @@ target_link_libraries(test_keys mon global ${CMAKE_DL_LIBS} ${TCMALLOC_LIBS}) add_executable(get_command_descriptions common/get_command_descriptions.cc ${CMAKE_SOURCE_DIR}/src/common/TextTable.cc - $ $ ) target_link_libraries(get_command_descriptions @@ -1258,37 +1257,6 @@ target_link_libraries(unittest_snap_mapper osd global ${CMAKE_DL_LIBS} set_target_properties(unittest_snap_mapper PROPERTIES COMPILE_FLAGS ${UNITTEST_CXX_FLAGS}) -#TODO: rocksdb unittests -if(WITH_SLIBROCKSDB) -# unittest_rocksdb_option_static -add_executable(unittest_rocksdb_option_static EXCLUDE_FROM_ALL - objectstore/TestRocksdbOptionParse.cc - $ - ) -add_test(unittest_rocksdb_option_static unittest_rocksdb_option_static) -add_dependencies(check unittest_rocksdb_option_static) -target_link_libraries(unittest_rocksdb_option_static os librocksdb global ${CMAKE_DL_LIBS} - ${BLKID_LIBRARIES} ${TCMALLOC_LIBS} ${UNITTEST_LIBS}) -set(UNITTEST_ROCKSDB_STATIC_FLAGS "-std=gnu++11 -Irocksdb/include") -set_target_properties(unittest_rocksdb_option_static PROPERTIES COMPILE_FLAGS - ${UNITTEST_CXX_FLAGS} ${LIBROCKSDB_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_ROCKSDB_STATIC_FLAGS}) -endif(WITH_SLIBROCKSDB) - -if(WITH_DLIBROCKSDB) -# unittest_rocksdb_option -add_executable(unittest_rocksdb_option EXCLUDE_FROM_ALL - objectstore/TestRocksdbOptionParse.cc - $ - ) -add_test(unittest_rocksdb_option_static unittest_rocksdb_option) -add_dependencies(check unittest_rocksdb_option) -target_link_libraries(unittest_rocksdb_option os rocksdb global ${CMAKE_DL_LIBS} - ${BLKID_LIBRARIES} ${TCMALLOC_LIBS} ${UNITTEST_LIBS}) -set(UNITTEST_ROCKSDB_FLAGS "-std=gnu++11") -set_target_properties(unittest_rocksdb_option_static PROPERTIES COMPILE_FLAGS - ${UNITTEST_CXX_FLAGS} ${LIBROCKSDB_CFLAGS} ${AM_CXXFLAGS} ${UNITTEST_ROCKSDB_STATIC_FLAGS}) -endif(WITH_DLIBROCKSDB) - # unittest_mds_authcap add_executable(unittest_mds_authcap EXCLUDE_FROM_ALL mds/TestMDSAuthCaps.cc @@ -1442,6 +1410,33 @@ target_link_libraries(unittest_async_compressor set_target_properties(unittest_async_compressor PROPERTIES COMPILE_FLAGS ${UNITTEST_CXX_FLAGS}) +# unittest_rocksdb_option +add_executable(unittest_rocksdb_option EXCLUDE_FROM_ALL + objectstore/TestRocksdbOptionParse.cc + $ + ) +add_test(unittest_rocksdb_option unittest_rocksdb_option) +add_dependencies(check unittest_rocksdb_option) +target_link_libraries(unittest_rocksdb_option global os rocksdb ${CMAKE_DL_LIBS} + ${BLKID_LIBRARIES} ${TCMALLOC_LIBS} ${UNITTEST_LIBS}) +set_target_properties(unittest_rocksdb_option PROPERTIES COMPILE_FLAGS ${UNITTEST_CXX_FLAGS}) + +# unittest_bluefs +add_executable(unittest_bluefs EXCLUDE_FROM_ALL objectstore/test_bluefs.cc) +add_test(unittest_bluefs unittest_bluefs) +add_dependencies(check unittest_bluefs) +target_link_libraries(unittest_bluefs os global ${UNITTEST_LIBS}) +set_target_properties(unittest_bluefs PROPERTIES COMPILE_FLAGS + ${UNITTEST_CXX_FLAGS}) + +# unittest_bluestore_types +add_executable(unittest_bluestore_types EXCLUDE_FROM_ALL objectstore/test_bluestore_types.cc) +add_test(unittest_bluestore_types unittest_bluestore_types) +add_dependencies(check unittest_bluestore_types) +target_link_libraries(unittest_bluestore_types os global ${UNITTEST_LIBS}) +set_target_properties(unittest_bluestore_types PROPERTIES COMPILE_FLAGS + ${UNITTEST_CXX_FLAGS}) + add_subdirectory(erasure-code EXCLUDE_FROM_ALL) #make check ends here