]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: kv dir and bluestore unittests
authorAli Maredia <amaredia@redhat.com>
Thu, 31 Dec 2015 03:58:55 +0000 (22:58 -0500)
committerAli Maredia <amaredia@redhat.com>
Tue, 5 Jan 2016 20:42:06 +0000 (15:42 -0500)
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 <amaredia@redhat.com>
CMakeLists.txt
src/CMakeLists.txt
src/include/config-h.in.cmake
src/kv/CMakeLists.txt [new file with mode: 0644]
src/test/CMakeLists.txt

index d79f0e794a81c4de0ea624d5a3167c34dbbbb739..a696441127240eae668eba9720dfb22d5de9d6bb 100644 (file)
@@ -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
index 8d7ca896c05ccc7d46a5904d89582dfe920726a8..fdeb2e3eb0bd663677a585d851d4f7d88f0caeee 100644 (file)
@@ -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} $<TARGET_OBJECTS:mon_common_objs>
-  $<TARGET_OBJECTS:os_mon_objs> $<TARGET_OBJECTS:osd_mon_objs>
+  $<TARGET_OBJECTS:kv_objs> $<TARGET_OBJECTS:osd_mon_objs>
   $<TARGET_OBJECTS:common_util_obj>)
 
 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}
-    $<TARGET_OBJECTS:os_mon_objs>
-    "${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} $<TARGET_OBJECTS:kv_objs>)
 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})
index 8e376abb4d0fe13b3378cf10a0f382262d5cf38b..6cf521b7ba4b0262fa73605ca0ddf79c76a990f9 100644 (file)
 /* 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 (file)
index 0000000..04ef962
--- /dev/null
@@ -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)
index 1dd71ecdeffe40fb9d9a76d19ad5d9105177051f..4a63093675b08f7c7eb26d5e6d93bec1c5303ca3 100644 (file)
@@ -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_OBJECTS:os_mon_objs>
   $<TARGET_OBJECTS:heap_profiler_objs>
   )
 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
-  $<TARGET_OBJECTS:heap_profiler_objs>
-  )
-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
-  $<TARGET_OBJECTS:heap_profiler_objs>
-  )
-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
+  $<TARGET_OBJECTS:heap_profiler_objs>
+  )
+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