From ec920f72550f6af395daaff452dab812f6bef3a5 Mon Sep 17 00:00:00 2001 From: happyZYM Date: Wed, 1 May 2024 04:12:05 +0000 Subject: [PATCH] refactored --- CMakeLists.txt | 8 ++++---- bpt/CMakeLists.txt | 1 - dataguard/CMakeLists.txt | 2 ++ dataguard/include/dataguard/dataguard.h | 2 ++ dataguard/include/dataguard/snapshot.h | 15 +++++++++++++++ dataguard/include/dataguard/txn_logger.h | 4 ++++ dataguard/src/snapshot.cpp | 2 ++ dataguard/src/txn_logger.cpp | 1 + design.md | 2 +- snapshot/CMakeLists.txt | 2 -- snapshot/include/snapshot/snapshot.h | 4 ---- snapshot/src/snapshot.cpp | 2 -- src/CMakeLists.txt | 2 ++ src/main.cpp | 2 ++ storage/CMakeLists.txt | 1 + .../bpt => storage/include/storage}/bpt.hpp | 6 +++--- .../bpt => storage/include/storage}/bpt_page.hpp | 2 +- .../include/storage}/buffer_pool_manager.h | 6 +++--- .../bpt => storage/include/storage}/config.h | 0 .../include/storage}/disk_manager.h | 2 +- .../bpt => storage/include/storage}/disk_map.hpp | 0 .../include/storage}/disk_multimap.hpp | 0 .../bpt => storage/include/storage}/replacer.h | 2 +- .../include/storage}/single_value_storage.hpp | 0 .../include/storage}/skip_list_value_storage.hpp | 0 {bpt => storage}/src/bpt.cpp | 4 ++-- {bpt => storage}/src/buffer_pool_manager.cpp | 4 ++-- {bpt => storage}/src/disk_manager.cpp | 2 +- {bpt => storage}/src/replacer.cpp | 2 +- test/CMakeLists.txt | 14 +++++++------- test/MemoryRiver.hpp | 6 +++--- test/bpt_advanced_test.cpp | 8 ++++---- test/bpt_basic_test.cpp | 8 ++++---- test/buffer_pool_manager_test.cpp | 8 ++++---- test/oj_test_interface_for_bpt.cpp | 4 ++-- test/page_guard_test.cpp | 4 ++-- test/replacer_test.cpp | 4 ++-- 37 files changed, 79 insertions(+), 57 deletions(-) delete mode 100644 bpt/CMakeLists.txt create mode 100644 dataguard/CMakeLists.txt create mode 100644 dataguard/include/dataguard/dataguard.h create mode 100644 dataguard/include/dataguard/snapshot.h create mode 100644 dataguard/include/dataguard/txn_logger.h create mode 100644 dataguard/src/snapshot.cpp create mode 100644 dataguard/src/txn_logger.cpp delete mode 100644 snapshot/CMakeLists.txt delete mode 100644 snapshot/include/snapshot/snapshot.h delete mode 100644 snapshot/src/snapshot.cpp create mode 100644 storage/CMakeLists.txt rename {bpt/include/bpt => storage/include/storage}/bpt.hpp (99%) rename {bpt/include/bpt => storage/include/storage}/bpt_page.hpp (97%) rename {bpt/include/bpt => storage/include/storage}/buffer_pool_manager.h (99%) rename {bpt/include/bpt => storage/include/storage}/config.h (100%) rename {bpt/include/bpt => storage/include/storage}/disk_manager.h (98%) rename {bpt/include/bpt => storage/include/storage}/disk_map.hpp (100%) rename {bpt/include/bpt => storage/include/storage}/disk_multimap.hpp (100%) rename {bpt/include/bpt => storage/include/storage}/replacer.h (99%) rename {bpt/include/bpt => storage/include/storage}/single_value_storage.hpp (100%) rename {bpt/include/bpt => storage/include/storage}/skip_list_value_storage.hpp (100%) rename {bpt => storage}/src/bpt.cpp (67%) rename {bpt => storage}/src/buffer_pool_manager.cpp (99%) rename {bpt => storage}/src/disk_manager.cpp (99%) rename {bpt => storage}/src/replacer.cpp (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d7a046..627a08a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,14 +83,14 @@ set(ZSTD_BUILD_SHARED OFF CACHE BOOL "Build shared libraries") set(ZSTD_BUILD_DEPRECATED OFF CACHE BOOL "Build deprecated module") FetchContent_MakeAvailable(zstd) -include_directories(${CMAKE_SOURCE_DIR}/bpt/include) -include_directories(${CMAKE_SOURCE_DIR}/snapshot/include) +include_directories(${CMAKE_SOURCE_DIR}/storage/include) +include_directories(${CMAKE_SOURCE_DIR}/dataguard/include) include_directories(${CMAKE_SOURCE_DIR}/stlite) include(CTest) enable_testing() -add_subdirectory(bpt) -add_subdirectory(snapshot) +add_subdirectory(storage) +add_subdirectory(dataguard) add_subdirectory(test) add_subdirectory(src) \ No newline at end of file diff --git a/bpt/CMakeLists.txt b/bpt/CMakeLists.txt deleted file mode 100644 index b93c9f9..0000000 --- a/bpt/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_library(bpt STATIC src/disk_manager.cpp src/replacer.cpp src/buffer_pool_manager.cpp src/bpt.cpp) \ No newline at end of file diff --git a/dataguard/CMakeLists.txt b/dataguard/CMakeLists.txt new file mode 100644 index 0000000..223b3b4 --- /dev/null +++ b/dataguard/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library(dataguard STATIC src/snapshot.cpp src/txn_logger.cpp) +target_link_libraries(dataguard libzstd_static storage) \ No newline at end of file diff --git a/dataguard/include/dataguard/dataguard.h b/dataguard/include/dataguard/dataguard.h new file mode 100644 index 0000000..920a501 --- /dev/null +++ b/dataguard/include/dataguard/dataguard.h @@ -0,0 +1,2 @@ +#include "dataguard/snapshot.h" +#include "dataguard/txn_logger.h" \ No newline at end of file diff --git a/dataguard/include/dataguard/snapshot.h b/dataguard/include/dataguard/snapshot.h new file mode 100644 index 0000000..0bd7cc0 --- /dev/null +++ b/dataguard/include/dataguard/snapshot.h @@ -0,0 +1,15 @@ +#ifndef SNAP_SHOT_H +#define SNAP_SHOT_H +#include +#include "map.hpp" +#include "vector.hpp" +class SnapShotManager { + public: + // For safety and simplicity, we delete all the copy/move constructor and copy/move assignment operator. Please + // manager it using smart pointer. + SnapShotManager(const SnapShotManager &) = delete; + SnapShotManager(SnapShotManager &&) = delete; + SnapShotManager &operator=(const SnapShotManager &) = delete; + SnapShotManager &operator=(SnapShotManager &&) = delete; +}; +#endif // SNAP_SHOT_H \ No newline at end of file diff --git a/dataguard/include/dataguard/txn_logger.h b/dataguard/include/dataguard/txn_logger.h new file mode 100644 index 0000000..96b4b12 --- /dev/null +++ b/dataguard/include/dataguard/txn_logger.h @@ -0,0 +1,4 @@ +#ifndef TXN_LOGGER_H +#define TXN_LOGGER_H + +#endif \ No newline at end of file diff --git a/dataguard/src/snapshot.cpp b/dataguard/src/snapshot.cpp new file mode 100644 index 0000000..f46d56d --- /dev/null +++ b/dataguard/src/snapshot.cpp @@ -0,0 +1,2 @@ +#include "dataguard/snapshot.h" +#include diff --git a/dataguard/src/txn_logger.cpp b/dataguard/src/txn_logger.cpp new file mode 100644 index 0000000..93bcb3b --- /dev/null +++ b/dataguard/src/txn_logger.cpp @@ -0,0 +1 @@ +#include "dataguard/txn_logger.h" \ No newline at end of file diff --git a/design.md b/design.md index dfc1415..ce10941 100644 --- a/design.md +++ b/design.md @@ -1,5 +1,5 @@ # 规划的Bonus实现方式 -- 缓存:LRU +- 缓存:LRU-K - 空间回收 - 快照:贯通于数据库系统和火车票系统整体,以文件为单位夹打快照(类似于git,在火车票系统后端处于非活动状态时操作,比对stage区和版本库中的最后一次commit,然后打一个新的commit进去),额外消耗空间为 当前文件实际大小 + 压缩后的 当前文件实际大小+变化量,使用zstd算法压缩。交互方式:`./core-cli snapshot [options]`。而stage功能内置于DiskManager,当收到信号后,会把工作文件夹的变化打进stage区。 - 并发:内置于数据库系统,基于`std::shared_mutex`的简单并发,可以真正意义上支持读操作的并发,但写操作会独占数据库的控制权。(但火车票系统会直接在整个业务层面上加读写锁,因此不会直接使用数据库系统的并发安全)。 diff --git a/snapshot/CMakeLists.txt b/snapshot/CMakeLists.txt deleted file mode 100644 index f7534a8..0000000 --- a/snapshot/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -add_library(snapshot STATIC src/snapshot.cpp) -target_link_libraries(snapshot libzstd_static) \ No newline at end of file diff --git a/snapshot/include/snapshot/snapshot.h b/snapshot/include/snapshot/snapshot.h deleted file mode 100644 index e5f0b29..0000000 --- a/snapshot/include/snapshot/snapshot.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef SNAP_SHOT_H -#define SNAP_SHOT_H - -#endif // SNAP_SHOT_H \ No newline at end of file diff --git a/snapshot/src/snapshot.cpp b/snapshot/src/snapshot.cpp deleted file mode 100644 index 52feaa8..0000000 --- a/snapshot/src/snapshot.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "snapshot/snapshot.h" -#include diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bb410ad..5bd4765 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,4 +7,6 @@ add_executable(${BACKEND_EXETUABLE_NAME} main.cpp) target_link_libraries(${BACKEND_EXETUABLE_NAME} argparse) target_link_libraries(${BACKEND_EXETUABLE_NAME} spdlog::spdlog) target_link_libraries(${BACKEND_EXETUABLE_NAME} sockpp) +target_link_libraries(${BACKEND_EXETUABLE_NAME} storage) +target_link_libraries(${BACKEND_EXETUABLE_NAME} dataguard) set_target_properties(${BACKEND_EXETUABLE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 4cfc854..58cd14f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,7 @@ #include #include "basic_defs.h" +#include "storage/bpt.hpp" +#include "dataguard/dataguard.h" const std::string main_version = "0.0.1"; const std::string build_version = GIT_COMMIT_HASH; std::shared_ptr logger_ptr; diff --git a/storage/CMakeLists.txt b/storage/CMakeLists.txt new file mode 100644 index 0000000..41afa27 --- /dev/null +++ b/storage/CMakeLists.txt @@ -0,0 +1 @@ +add_library(storage STATIC src/disk_manager.cpp src/replacer.cpp src/buffer_pool_manager.cpp src/bpt.cpp) \ No newline at end of file diff --git a/bpt/include/bpt/bpt.hpp b/storage/include/storage/bpt.hpp similarity index 99% rename from bpt/include/bpt/bpt.hpp rename to storage/include/storage/bpt.hpp index 671e51d..ded4ff2 100644 --- a/bpt/include/bpt/bpt.hpp +++ b/storage/include/storage/bpt.hpp @@ -4,9 +4,9 @@ #include #include #include "vector.hpp" -#include "bpt/bpt_page.hpp" -#include "bpt/buffer_pool_manager.h" -#include "bpt/config.h" +#include "storage/bpt_page.hpp" +#include "storage/buffer_pool_manager.h" +#include "storage/config.h" /** * @brief B+ Tree Indexer * @warning The KeyType must can be stored byte by byte. As this is only the indexer, the type of value is always diff --git a/bpt/include/bpt/bpt_page.hpp b/storage/include/storage/bpt_page.hpp similarity index 97% rename from bpt/include/bpt/bpt_page.hpp rename to storage/include/storage/bpt_page.hpp index 6a404c5..590adc0 100644 --- a/bpt/include/bpt/bpt_page.hpp +++ b/storage/include/storage/bpt_page.hpp @@ -1,7 +1,7 @@ #ifndef BPT_PAGE_HPP #define BPT_PAGE_HPP #include -#include "bpt/config.h" +#include "storage/config.h" template struct ActualDataType { typedef std::pair value_type; diff --git a/bpt/include/bpt/buffer_pool_manager.h b/storage/include/storage/buffer_pool_manager.h similarity index 99% rename from bpt/include/bpt/buffer_pool_manager.h rename to storage/include/storage/buffer_pool_manager.h index 24703e6..26bdf7a 100644 --- a/bpt/include/bpt/buffer_pool_manager.h +++ b/storage/include/storage/buffer_pool_manager.h @@ -6,9 +6,9 @@ #include #include "map.hpp" #include "list.hpp" -#include "bpt/config.h" -#include "bpt/disk_manager.h" -#include "bpt/replacer.h" +#include "storage/config.h" +#include "storage/disk_manager.h" +#include "storage/replacer.h" class BufferPoolManager; class Page { public: diff --git a/bpt/include/bpt/config.h b/storage/include/storage/config.h similarity index 100% rename from bpt/include/bpt/config.h rename to storage/include/storage/config.h diff --git a/bpt/include/bpt/disk_manager.h b/storage/include/storage/disk_manager.h similarity index 98% rename from bpt/include/bpt/disk_manager.h rename to storage/include/storage/disk_manager.h index 5c4e758..cd86587 100644 --- a/bpt/include/bpt/disk_manager.h +++ b/storage/include/storage/disk_manager.h @@ -2,7 +2,7 @@ #define DISK_MANAGER_H #include #include -#include "bpt/config.h" +#include "storage/config.h" class DiskManager { /** * The Data Structure on Disk: diff --git a/bpt/include/bpt/disk_map.hpp b/storage/include/storage/disk_map.hpp similarity index 100% rename from bpt/include/bpt/disk_map.hpp rename to storage/include/storage/disk_map.hpp diff --git a/bpt/include/bpt/disk_multimap.hpp b/storage/include/storage/disk_multimap.hpp similarity index 100% rename from bpt/include/bpt/disk_multimap.hpp rename to storage/include/storage/disk_multimap.hpp diff --git a/bpt/include/bpt/replacer.h b/storage/include/storage/replacer.h similarity index 99% rename from bpt/include/bpt/replacer.h rename to storage/include/storage/replacer.h index 021503e..4525a6c 100644 --- a/bpt/include/bpt/replacer.h +++ b/storage/include/storage/replacer.h @@ -2,7 +2,7 @@ #define REPLACER_H #include #include -#include "bpt/config.h" +#include "storage/config.h" class LRUKReplacer { public: LRUKReplacer() = delete; diff --git a/bpt/include/bpt/single_value_storage.hpp b/storage/include/storage/single_value_storage.hpp similarity index 100% rename from bpt/include/bpt/single_value_storage.hpp rename to storage/include/storage/single_value_storage.hpp diff --git a/bpt/include/bpt/skip_list_value_storage.hpp b/storage/include/storage/skip_list_value_storage.hpp similarity index 100% rename from bpt/include/bpt/skip_list_value_storage.hpp rename to storage/include/storage/skip_list_value_storage.hpp diff --git a/bpt/src/bpt.cpp b/storage/src/bpt.cpp similarity index 67% rename from bpt/src/bpt.cpp rename to storage/src/bpt.cpp index 7770328..0be3993 100644 --- a/bpt/src/bpt.cpp +++ b/storage/src/bpt.cpp @@ -1,4 +1,4 @@ -#include "bpt/bpt.hpp" -#include "bpt/config.h" +#include "storage/bpt.hpp" +#include "storage/config.h" const b_plus_tree_value_index_t kInvalidValueIndex = -1; const default_numeric_index_t kInvalidNumericIndex = -1; \ No newline at end of file diff --git a/bpt/src/buffer_pool_manager.cpp b/storage/src/buffer_pool_manager.cpp similarity index 99% rename from bpt/src/buffer_pool_manager.cpp rename to storage/src/buffer_pool_manager.cpp index 3ff02b0..d14765b 100644 --- a/bpt/src/buffer_pool_manager.cpp +++ b/storage/src/buffer_pool_manager.cpp @@ -1,7 +1,7 @@ -#include "bpt/buffer_pool_manager.h" +#include "storage/buffer_pool_manager.h" #include #include -#include "bpt/config.h" +#include "storage/config.h" Page::Page() : mem(new char[kPageSize]) {} Page::~Page() { delete[] mem; } void Page::ResetMemory() { memset(mem, 0, kPageSize); } diff --git a/bpt/src/disk_manager.cpp b/storage/src/disk_manager.cpp similarity index 99% rename from bpt/src/disk_manager.cpp rename to storage/src/disk_manager.cpp index 182f393..545732d 100644 --- a/bpt/src/disk_manager.cpp +++ b/storage/src/disk_manager.cpp @@ -1,4 +1,4 @@ -#include "bpt/disk_manager.h" +#include "storage/disk_manager.h" #include #include #include diff --git a/bpt/src/replacer.cpp b/storage/src/replacer.cpp similarity index 99% rename from bpt/src/replacer.cpp rename to storage/src/replacer.cpp index 4e44b76..de8d0f5 100644 --- a/bpt/src/replacer.cpp +++ b/storage/src/replacer.cpp @@ -1,4 +1,4 @@ -#include "bpt/replacer.h" +#include "storage/replacer.h" #include LRUKReplacer::LRUKReplacer(size_t max_frame_count, size_t k_value) : max_frame_count(max_frame_count), k_value(k_value) { diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7c03f94..77aac08 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,21 +1,21 @@ if(OJ_TEST_BPT) add_executable(code oj_test_interface_for_bpt.cpp) - target_link_libraries(code bpt) + target_link_libraries(code storage) set_target_properties(code PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) endif() add_executable(replacer_test replacer_test.cpp) -target_link_libraries(replacer_test bpt GTest::gtest_main) +target_link_libraries(replacer_test storage GTest::gtest_main) add_executable(buffer_pool_manager_test buffer_pool_manager_test.cpp) -target_link_libraries(buffer_pool_manager_test bpt GTest::gtest_main spdlog::spdlog) +target_link_libraries(buffer_pool_manager_test storage GTest::gtest_main spdlog::spdlog) add_executable(page_guard_test page_guard_test.cpp) -target_link_libraries(page_guard_test bpt GTest::gtest_main) +target_link_libraries(page_guard_test storage GTest::gtest_main) add_executable(bpt_basic_test bpt_basic_test.cpp) -target_link_libraries(bpt_basic_test bpt GTest::gtest_main spdlog::spdlog) +target_link_libraries(bpt_basic_test storage GTest::gtest_main spdlog::spdlog) add_executable(buffer_pool_manager_extreme_test buffer_pool_manager_extreme_test.cpp) -target_link_libraries(buffer_pool_manager_extreme_test bpt) +target_link_libraries(buffer_pool_manager_extreme_test storage) add_executable(t1_std t1_std.cpp) set_target_properties(t1_std PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) add_executable(t1_mk t1_mk.cpp) set_target_properties(t1_mk PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) add_executable(bpt_advanced_test bpt_advanced_test.cpp) -target_link_libraries(bpt_advanced_test bpt GTest::gtest_main spdlog::spdlog) \ No newline at end of file +target_link_libraries(bpt_advanced_test storage GTest::gtest_main spdlog::spdlog) \ No newline at end of file diff --git a/test/MemoryRiver.hpp b/test/MemoryRiver.hpp index 85c1a8a..40b3267 100644 --- a/test/MemoryRiver.hpp +++ b/test/MemoryRiver.hpp @@ -1,8 +1,8 @@ #include #include -#include "bpt/buffer_pool_manager.h" -#include "bpt/config.h" -#include "bpt/disk_manager.h" +#include "storage/buffer_pool_manager.h" +#include "storage/config.h" +#include "storage/disk_manager.h" #ifndef BPT_MEMORYRIVER_HPP #define BPT_MEMORYRIVER_HPP diff --git a/test/bpt_advanced_test.cpp b/test/bpt_advanced_test.cpp index eaf6963..7c1f46b 100644 --- a/test/bpt_advanced_test.cpp +++ b/test/bpt_advanced_test.cpp @@ -5,10 +5,10 @@ #include #include #include -#include "bpt/bpt.hpp" -#include "bpt/buffer_pool_manager.h" -#include "bpt/config.h" -#include "bpt/disk_manager.h" +#include "storage/bpt.hpp" +#include "storage/buffer_pool_manager.h" +#include "storage/config.h" +#include "storage/disk_manager.h" namespace bpt_advanced_test { template class FixLengthString { diff --git a/test/bpt_basic_test.cpp b/test/bpt_basic_test.cpp index 009715f..9554036 100644 --- a/test/bpt_basic_test.cpp +++ b/test/bpt_basic_test.cpp @@ -5,10 +5,10 @@ #include #include #include -#include "bpt/bpt.hpp" -#include "bpt/buffer_pool_manager.h" -#include "bpt/config.h" -#include "bpt/disk_manager.h" +#include "storage/bpt.hpp" +#include "storage/buffer_pool_manager.h" +#include "storage/config.h" +#include "storage/disk_manager.h" namespace bpt_basic_test { template class FixLengthString { diff --git a/test/buffer_pool_manager_test.cpp b/test/buffer_pool_manager_test.cpp index 5aebb4a..9f87527 100644 --- a/test/buffer_pool_manager_test.cpp +++ b/test/buffer_pool_manager_test.cpp @@ -1,4 +1,4 @@ -#include "bpt/buffer_pool_manager.h" +#include "storage/buffer_pool_manager.h" #include #include #include @@ -14,9 +14,9 @@ #include #include "MemoryRiver.hpp" #include "MemoryRiverStd.hpp" -#include "bpt/bpt_page.hpp" -#include "bpt/config.h" -#include "bpt/disk_manager.h" +#include "storage/bpt_page.hpp" +#include "storage/config.h" +#include "storage/disk_manager.h" // Demonstrate some basic assertions. TEST(HelloTest, BasicAssertions) { // Expect two strings not to be equal. diff --git a/test/oj_test_interface_for_bpt.cpp b/test/oj_test_interface_for_bpt.cpp index 8e1b597..36c5001 100644 --- a/test/oj_test_interface_for_bpt.cpp +++ b/test/oj_test_interface_for_bpt.cpp @@ -3,8 +3,8 @@ #include #include #include -#include "bpt/bpt.hpp" -#include "bpt/buffer_pool_manager.h" +#include "storage/bpt.hpp" +#include "storage/buffer_pool_manager.h" typedef uint64_t hash_t; inline hash_t Hash(std::string str) noexcept { constexpr static char salt1[10] = "mL;]-=eT"; diff --git a/test/page_guard_test.cpp b/test/page_guard_test.cpp index 033fd47..539c114 100644 --- a/test/page_guard_test.cpp +++ b/test/page_guard_test.cpp @@ -4,8 +4,8 @@ #include #include #include -#include "bpt/buffer_pool_manager.h" -#include "bpt/config.h" +#include "storage/buffer_pool_manager.h" +#include "storage/config.h" TEST(PageGuardTest, SampleTest) { const std::string db_name = "/tmp/test.db"; diff --git a/test/replacer_test.cpp b/test/replacer_test.cpp index e000adb..7adf3e5 100644 --- a/test/replacer_test.cpp +++ b/test/replacer_test.cpp @@ -1,6 +1,6 @@ -#include "bpt/replacer.h" +#include "storage/replacer.h" #include -#include "bpt/config.h" +#include "storage/config.h" // Demonstrate some basic assertions. TEST(HelloTest, BasicAssertions) { // Expect two strings not to be equal.