From b2480adb75c41ded88b692ef63ae388db2293f12 Mon Sep 17 00:00:00 2001 From: ganglv <88995770+ganglyu@users.noreply.github.com> Date: Sat, 16 Dec 2023 04:37:10 +0800 Subject: [PATCH] Add SonicDBConfig::reset method (#843) #### Why I did it sonic-gnmi will use swsscommon API to read database configuration, and sonic-gnmi unit test needs to reload database configuration in the same process. #### How I did it Add SonicDBConfig::reset method, and sonic-gnmi unit test will use this method to clear previous database configuration. #### How to verify it Pass all UT and E2E test cases. ### Description for the changelog Add SonicDBConfig::reset method --- common/dbconnector.cpp | 14 +++++++++++++- common/dbconnector.h | 1 + tests/main.cpp | 13 +++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/common/dbconnector.cpp b/common/dbconnector.cpp index 4dc5ab8d5..e8e6ff7bd 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 42c50531f..9dba47036 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 94aa53da8..cdb00b107 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 = "<