From f28b8d5d153981fec923c60ad8dc2d2b175e9897 Mon Sep 17 00:00:00 2001 From: divyagayathri-hcl Date: Tue, 27 Aug 2024 12:39:57 -0700 Subject: [PATCH] Adding new states in WarmState Adapter. --- common/warm_restart.cpp | 6 +++++- common/warm_restart.h | 4 ++++ tests/warm_restart_ut.cpp | 43 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/common/warm_restart.cpp b/common/warm_restart.cpp index 34da10667..284ca09dc 100644 --- a/common/warm_restart.cpp +++ b/common/warm_restart.cpp @@ -13,7 +13,11 @@ const WarmStart::WarmStartStateNameMap WarmStart::warmStartStateNameMap = {REPLAYED, "replayed"}, {RECONCILED, "reconciled"}, {WSDISABLED, "disabled"}, - {WSUNKNOWN, "unknown"} + {WSUNKNOWN, "unknown"}, + {FROZEN, "frozen"}, + {QUIESCENT, "quiescent"}, + {CHECKPOINTED, "checkpointed"}, + {FAILED, "failed"} }; const WarmStart::DataCheckStateNameMap WarmStart::dataCheckStateNameMap = diff --git a/common/warm_restart.h b/common/warm_restart.h index 037628725..131573006 100644 --- a/common/warm_restart.h +++ b/common/warm_restart.h @@ -21,6 +21,10 @@ class WarmStart RECONCILED, WSDISABLED, WSUNKNOWN, + FROZEN, + QUIESCENT, + CHECKPOINTED, + FAILED, }; enum DataCheckState diff --git a/tests/warm_restart_ut.cpp b/tests/warm_restart_ut.cpp index 2cdaa7a2c..0543aac00 100644 --- a/tests/warm_restart_ut.cpp +++ b/tests/warm_restart_ut.cpp @@ -160,6 +160,49 @@ TEST(WarmRestart, getWarmStartTimer) EXPECT_EQ(timer, 5000u); } +TEST(WarmRestart, set_get_WarmStartState) +{ + DBConnector stateDb("STATE_DB", 0, true); + Table stateWarmRestartTable(&stateDb, STATE_WARM_RESTART_TABLE_NAME); + Table stateWarmRestartEnableTable(&stateDb, STATE_WARM_RESTART_ENABLE_TABLE_NAME); + + DBConnector configDb("CONFIG_DB", 0, true); + Table cfgWarmRestartTable(&configDb, CFG_WARM_RESTART_TABLE_NAME); + + //Clean up warm restart state for testAppName and warm restart config for testDockerName + stateWarmRestartTable.del(testAppName); + cfgWarmRestartTable.del(testDockerName); + + //Initialize WarmStart class for TestApp + WarmStart::initialize(testAppName, testDockerName, 0, true); + + WarmStart::WarmStartState warmStartStates[] = + { + WarmStart::INITIALIZED, + WarmStart::RESTORED, + WarmStart::REPLAYED, + WarmStart::RECONCILED, + WarmStart::WSDISABLED, + WarmStart::WSUNKNOWN, + WarmStart::FROZEN, + WarmStart::QUIESCENT, + WarmStart::CHECKPOINTED, + WarmStart::FAILED, + }; + + for (const auto &currState : warmStartStates) { + WarmStart::setWarmStartState(testAppName, currState); + + string state; + stateWarmRestartTable.hget(testAppName, "state", state); + EXPECT_EQ(state, WarmStart::warmStartStateNameMap()->at(currState).c_str()); + + WarmStart::WarmStartState ret_state; + WarmStart::getWarmStartState(testAppName, ret_state); + EXPECT_EQ(ret_state, currState); + } +} + TEST(WarmRestart, set_get_DataCheckState) { DBConnector stateDb("STATE_DB", 0, true);