Skip to content

Commit 931048c

Browse files
mint570divyagayathri-hcl
authored andcommitted
Create NSF notification manager api
1 parent 407b3f6 commit 931048c

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

common/warm_restart.cpp

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
namespace swss {
88

9+
const std::string WarmStart::kNsfManagerNotificationChannel =
10+
"NSF_MANAGER_COMMON_NOTIFICATION_CHANNEL";
11+
912
const WarmStart::WarmStartStateNameMap* WarmStart::warmStartStateNameMap()
1013
{
1114
static const auto* const warmStartStateNameMap =
@@ -35,6 +38,28 @@ const WarmStart::DataCheckStateNameMap* WarmStart::dataCheckStateNameMap()
3538
return dataCheckStateNameMap;
3639
}
3740

41+
const WarmStart::WarmBootNotificationNameMap* WarmStart::warmBootNotificationNameMap()
42+
{
43+
static const auto* const warmBootNotificationNameMap =
44+
new WarmBootNotificationNameMap({
45+
{WarmBootNotification::kFreeze, "freeze"},
46+
{WarmBootNotification::kUnfreeze, "unfreeze"},
47+
{WarmBootNotification::kCheckpoint, "checkpoint"},
48+
});
49+
return warmBootNotificationNameMap;
50+
}
51+
52+
const WarmStart::WarmBootNotificationReverseMap* WarmStart::warmBootNotificationReverseMap()
53+
{
54+
static const auto* const warmBootNotificationReverseMap =
55+
new WarmBootNotificationReverseMap({
56+
{"freeze", WarmBootNotification::kFreeze},
57+
{"unfreeze", WarmBootNotification::kUnfreeze},
58+
{"checkpoint", WarmBootNotification::kCheckpoint},
59+
});
60+
return warmBootNotificationReverseMap;
61+
}
62+
3863
WarmStart &WarmStart::getInstance(void)
3964
{
4065
static WarmStart m_warmStart;
@@ -300,4 +325,4 @@ WarmStart::DataCheckState WarmStart::getDataCheckState(const std::string &app_na
300325
return state;
301326
}
302327

303-
}
328+
} // namespace swss

common/warm_restart.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ namespace swss {
1313
class WarmStart
1414
{
1515
public:
16+
static const std::string kNsfManagerNotificationChannel;
17+
1618
enum WarmStartState
1719
{
1820
INITIALIZED,
@@ -40,12 +42,24 @@ class WarmStart
4042
STAGE_RESTORE,
4143
};
4244

45+
enum class WarmBootNotification {
46+
kFreeze,
47+
kUnfreeze,
48+
kCheckpoint,
49+
};
50+
4351
typedef std::map<WarmStartState, std::string> WarmStartStateNameMap;
4452
static const WarmStartStateNameMap* warmStartStateNameMap();
4553

4654
typedef std::map<DataCheckState, std::string> DataCheckStateNameMap;
4755
static const DataCheckStateNameMap* dataCheckStateNameMap();
4856

57+
typedef std::map<WarmBootNotification, std::string> WarmBootNotificationNameMap;
58+
static const WarmBootNotificationNameMap* warmBootNotificationNameMap();
59+
60+
typedef std::map<std::string, WarmBootNotification> WarmBootNotificationReverseMap;
61+
static const WarmBootNotificationReverseMap* warmBootNotificationReverseMap();
62+
4963
static WarmStart &getInstance(void);
5064

5165
static void initialize(const std::string &app_name,
@@ -75,7 +89,7 @@ class WarmStart
7589
DataCheckState state);
7690

7791
static DataCheckState getDataCheckState(const std::string &app_name,
78-
DataCheckStage stage);
92+
DataCheckStage stage);
7993
private:
8094
std::shared_ptr<swss::DBConnector> m_stateDb;
8195
std::shared_ptr<swss::DBConnector> m_cfgDb;

tests/warm_restart_ut.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include <iostream>
22
#include "gtest/gtest.h"
33
#include "common/dbconnector.h"
4-
#include "common/table.h"
54
#include "common/schema.h"
5+
#include "common/table.h"
66
#include "common/warm_restart.h"
77

88
using namespace std;
@@ -278,3 +278,20 @@ TEST(WarmRestart, set_get_DataCheckState)
278278
state = WarmStart::getDataCheckState(testAppName, WarmStart::STAGE_RESTORE);
279279
EXPECT_EQ(state, WarmStart::CHECK_FAILED);
280280
}
281+
282+
TEST(WarmRestart, testNotificationMaps)
283+
{
284+
WarmStart::WarmBootNotification warmBootNotifications[] =
285+
{
286+
WarmStart::WarmBootNotification::kFreeze,
287+
WarmStart::WarmBootNotification::kUnfreeze,
288+
WarmStart::WarmBootNotification::kCheckpoint,
289+
};
290+
291+
for (const auto &currNotification : warmBootNotifications) {
292+
std::string type = WarmStart::warmBootNotificationNameMap()->at(currNotification);
293+
WarmStart::WarmBootNotification notification;
294+
notification = WarmStart::warmBootNotificationReverseMap()->at(type);
295+
EXPECT_EQ(notification, currNotification);
296+
}
297+
}

0 commit comments

Comments
 (0)