diff --git a/common/dbconnector.cpp b/common/dbconnector.cpp index 4dc5ab8d..e8e6ff7b 100755 --- a/common/dbconnector.cpp +++ b/common/dbconnector.cpp @@ -185,6 +185,18 @@ void SonicDBConfig::initialize(const string &file) m_init = true; } +// This API is used to reset the SonicDBConfig class. +// And then user can call initialize with different config file. +void SonicDBConfig::reset() +{ + std::lock_guard guard(m_db_info_mutex); + m_init = false; + m_global_init = false; + m_inst_info.clear(); + m_db_info.clear(); + m_db_separator.clear(); +} + void SonicDBConfig::validateNamespace(const string &netns) { std::lock_guard guard(m_db_info_mutex); @@ -927,4 +939,4 @@ map>> DBConnector::getall() } } return data; -} \ No newline at end of file +} diff --git a/common/dbconnector.h b/common/dbconnector.h index 42c50531..9dba4703 100644 --- a/common/dbconnector.h +++ b/common/dbconnector.h @@ -59,6 +59,7 @@ class SonicDBConfig SonicDBConfig.initializeGlobalConfig(global_db_file_path) %} #endif + static void reset(); static void validateNamespace(const std::string &netns); static std::string getDbInst(const std::string &dbName, const std::string &netns = EMPTY_NAMESPACE); diff --git a/tests/main.cpp b/tests/main.cpp index 94aa53da..cdb00b10 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -70,6 +70,19 @@ class SwsscommonEnvironment : public ::testing::Environment { EXPECT_TRUE(strstr(e.what(), "Namespace invalid is not a valid namespace name in config file")); } + // reset SonicDBConfig, init should be false + SonicDBConfig::reset(); + cout<<"RESET: isInit = "<