diff --git a/cpp/src/db/Factories.cpp b/cpp/src/db/Factories.cpp new file mode 100644 index 0000000000..3f508a6a05 --- /dev/null +++ b/cpp/src/db/Factories.cpp @@ -0,0 +1,44 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved +// Unauthorized copying of this file, via any medium is strictly prohibited. +// Proprietary and confidential. +//////////////////////////////////////////////////////////////////////////////// +#include +#include +#include + +#include "Factories.h" + + +namespace zilliz { +namespace vecwise { +namespace engine { + +DBMetaOptions DBMetaOptionsFactory::Build(const std::string& path) { + auto p = path; + if(p == "") { + srand(time(nullptr)); + std::stringstream ss; + ss << "/tmp/" << rand(); + p = ss.str(); + } + DBMetaOptions meta; + meta.path = p; + return meta; +} + +Options OptionsFactory::Build() { + auto meta = DBMetaOptionsFactory::Build(); + Options options; + options.meta = meta; + return options; +} + +std::shared_ptr DBMetaImplFactory::Build() { + DBMetaOptions options = DBMetaOptionsFactory::Build(); + return std::shared_ptr(new meta::DBMetaImpl(options)); +} + +} // namespace engine +} // namespace vecwise +} // namespace zilliz diff --git a/cpp/src/db/Factories.h b/cpp/src/db/Factories.h new file mode 100644 index 0000000000..ed584daa1e --- /dev/null +++ b/cpp/src/db/Factories.h @@ -0,0 +1,32 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved +// Unauthorized copying of this file, via any medium is strictly prohibited. +// Proprietary and confidential. +//////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include +#include +#include "db/DB.h" +#include "DBMetaImpl.h" + +namespace zilliz { +namespace vecwise { +namespace engine { + +struct DBMetaOptionsFactory { + static DBMetaOptions Build(const std::string& path = ""); +}; + +struct OptionsFactory { + static Options Build(); +}; + +struct DBMetaImplFactory { + static std::shared_ptr Build(); +}; + +} // namespace engine +} // namespace vecwise +} // namespace zilliz diff --git a/cpp/unittest/db/CMakeLists.txt b/cpp/unittest/db/CMakeLists.txt index f76d353630..5258f3576c 100644 --- a/cpp/unittest/db/CMakeLists.txt +++ b/cpp/unittest/db/CMakeLists.txt @@ -26,7 +26,9 @@ set(db_test_src ${db_srcs} ${wrapper_src} ${require_files} - db_tests.cpp) + utils.cpp + db_tests.cpp + meta_tests.cpp) cuda_add_executable(db_test ${db_test_src}) diff --git a/cpp/unittest/db/db_tests.cpp b/cpp/unittest/db/db_tests.cpp index 723f52e2c8..b3a94b181e 100644 --- a/cpp/unittest/db/db_tests.cpp +++ b/cpp/unittest/db/db_tests.cpp @@ -6,48 +6,12 @@ #include #include #include -#include +#include "utils.h" #include "db/DB.h" using namespace zilliz::vecwise; -#define TIMING - -#ifdef TIMING -#define INIT_TIMER auto start = std::chrono::high_resolution_clock::now(); -#define START_TIMER start = std::chrono::high_resolution_clock::now(); -#define STOP_TIMER(name) LOG(DEBUG) << "RUNTIME of " << name << ": " << \ - std::chrono::duration_cast( \ - std::chrono::high_resolution_clock::now()-start \ - ).count() << " ms "; -#else -#define INIT_TIMER -#define START_TIMER -#define STOP_TIMER(name) -#endif - -class DBTest : public ::testing::Test { -protected: - virtual void SetUp() { - el::Configurations defaultConf; - defaultConf.setToDefault(); - defaultConf.set(el::Level::Debug, - el::ConfigurationType::Format, "[%thread-%datetime-%level]: %msg (%fbase:%line)"); - el::Loggers::reconfigureLogger("default", defaultConf); - } - -}; - -namespace { - void ASSERT_STATS(engine::Status& stat) { - ASSERT_TRUE(stat.ok()); - if(!stat.ok()) { - std::cout << stat.ToString() << std::endl; - } - } -} - TEST_F(DBTest, DB_TEST) { static const std::string group_name = "test_group"; @@ -101,7 +65,7 @@ TEST_F(DBTest, DB_TEST) { std::stringstream ss; long count = 0; - for (auto j=0; j<8; ++j) { + for (auto j=0; j<15; ++j) { ss.str(""); db->count(group_name, count); diff --git a/cpp/unittest/db/meta_tests.cpp b/cpp/unittest/db/meta_tests.cpp new file mode 100644 index 0000000000..8b57efd0c5 --- /dev/null +++ b/cpp/unittest/db/meta_tests.cpp @@ -0,0 +1,38 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved +// Unauthorized copying of this file, via any medium is strictly prohibited. +// Proprietary and confidential. +//////////////////////////////////////////////////////////////////////////////// +#include +#include +#include + +#include "utils.h" +#include "db/DBMetaImpl.h" +#include "db/Factories.h" + +using namespace zilliz::vecwise::engine; + +TEST_F(MetaTest, GROUP_TEST) { + auto group_id = "meta_test_group"; + + meta::GroupSchema group; + group.group_id = group_id; + auto status = impl_->add_group(group); + ASSERT_TRUE(status.ok()); + + auto gid = group.id; + group.id = -1; + status = impl_->get_group(group); + ASSERT_TRUE(status.ok()); + ASSERT_EQ(group.id, gid); + ASSERT_EQ(group.group_id, group_id); + + group.group_id = "not_found"; + status = impl_->get_group(group); + ASSERT_TRUE(!status.ok()); + + group.group_id = group_id; + status = impl_->add_group(group); + ASSERT_TRUE(!status.ok()); +} diff --git a/cpp/unittest/db/utils.cpp b/cpp/unittest/db/utils.cpp new file mode 100644 index 0000000000..6b24fd926a --- /dev/null +++ b/cpp/unittest/db/utils.cpp @@ -0,0 +1,37 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved +// Unauthorized copying of this file, via any medium is strictly prohibited. +// Proprietary and confidential. +//////////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include "utils.h" +#include "db/Factories.h" + +using namespace zilliz::vecwise; + +void ASSERT_STATS(engine::Status& stat) { + ASSERT_TRUE(stat.ok()); + if(!stat.ok()) { + std::cout << stat.ToString() << std::endl; + } +} + +void DBTest::SetUp() { + el::Configurations defaultConf; + defaultConf.setToDefault(); + defaultConf.set(el::Level::Debug, + el::ConfigurationType::Format, "[%thread-%datetime-%level]: %msg (%fbase:%line)"); + el::Loggers::reconfigureLogger("default", defaultConf); +} + +void MetaTest::SetUp() { + DBTest::SetUp(); + impl_ = engine::DBMetaImplFactory::Build(); +} + +void MetaTest::TearDown() { + impl_->drop_all(); +} diff --git a/cpp/unittest/db/utils.h b/cpp/unittest/db/utils.h new file mode 100644 index 0000000000..04329de362 --- /dev/null +++ b/cpp/unittest/db/utils.h @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved +// Unauthorized copying of this file, via any medium is strictly prohibited. +// Proprietary and confidential. +//////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include +#include + +#include "db/DB.h" +#include "db/DBMetaImpl.h" + + +#define TIMING + +#ifdef TIMING +#define INIT_TIMER auto start = std::chrono::high_resolution_clock::now(); +#define START_TIMER start = std::chrono::high_resolution_clock::now(); +#define STOP_TIMER(name) LOG(DEBUG) << "RUNTIME of " << name << ": " << \ + std::chrono::duration_cast( \ + std::chrono::high_resolution_clock::now()-start \ + ).count() << " ms "; +#else +#define INIT_TIMER +#define START_TIMER +#define STOP_TIMER(name) +#endif + + +void ASSERT_STATS(zilliz::vecwise::engine::Status& stat); + + +class DBTest : public ::testing::Test { +protected: + virtual void SetUp() override; +}; + + +class MetaTest : public DBTest { +protected: + std::shared_ptr impl_; + + virtual void SetUp() override; + virtual void TearDown() override; +};