Skip to content

Commit af7d8f3

Browse files
author
Mykola Solianko
committed
sm: networkmanager: add deferred firewall update tests
- OnPendingFirewallUpdate_UpdatesFirewallRules: notification updates rules in storage for non-running instance - OnPendingFirewallUpdate_RunningInstance_CallsCNIUpdate: notification triggers CNI UpdateFirewall for running instance Signed-off-by: Mykola Solianko <mykola_solianko@epam.com>
1 parent 4164d63 commit af7d8f3

1 file changed

Lines changed: 81 additions & 1 deletion

File tree

src/core/sm/networkmanager/tests/networkmanager.cpp

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
#include "mocks/interfacefactorymock.hpp"
2222
#include "mocks/interfacemanagermock.hpp"
2323
#include "mocks/namespacemanagermock.hpp"
24-
#include <core/common/tests/mocks/networkprovidermock.hpp>
2524
#include "mocks/randommock.hpp"
2625
#include "mocks/trafficmonitormock.hpp"
26+
#include <core/common/tests/mocks/networkprovidermock.hpp>
2727

2828
using namespace aos::sm::networkmanager;
2929
using namespace aos::sm::cni;
@@ -1144,3 +1144,83 @@ TEST_F(NetworkManagerTest, CreateInstanceNetwork_VerifyUpdateItemNetworkParams)
11441144
EXPECT_EQ(capturedServiceData.mHosts[3], "test-subject.test-item");
11451145
EXPECT_EQ(capturedServiceData.mHosts[4], "test-subject.test-item.test-network");
11461146
}
1147+
1148+
TEST_F(NetworkManagerTest, OnPendingFirewallUpdate_UpdatesFirewallRules)
1149+
{
1150+
auto params = CreateTestInstanceNetworkConfig();
1151+
auto allocatedParams = CreateTestAllocatedParams();
1152+
1153+
SetupEnsureNodeNetworkCreateMocks("test-network", "192.168.1.0/24", "192.168.1.1", 100);
1154+
1155+
EXPECT_CALL(mNetworkProvider, AllocateInstanceNetwork(_, _, _, _, _))
1156+
.WillOnce(DoAll(SetArgReferee<4>(allocatedParams), Return(aos::ErrorEnum::eNone)));
1157+
EXPECT_CALL(mStorage, AddInstanceNetworkInfo(_)).WillOnce(Return(aos::ErrorEnum::eNone));
1158+
1159+
auto err = mNetManager->CreateInstanceNetwork("test-instance", "test-network", params);
1160+
ASSERT_EQ(err, aos::ErrorEnum::eNone);
1161+
1162+
aos::PendingFirewallUpdate update;
1163+
update.mInstanceIdent = params.mInstanceIdent;
1164+
1165+
aos::FirewallRule rule;
1166+
rule.mDstIP = "10.0.0.5";
1167+
rule.mDstPort = "8080";
1168+
rule.mProto = "tcp";
1169+
rule.mSrcIP = "192.168.1.2";
1170+
update.mFirewallRules.PushBack(rule);
1171+
1172+
EXPECT_CALL(mStorage, RemoveInstanceNetworkInfo(aos::String("test-instance")))
1173+
.WillOnce(Return(aos::ErrorEnum::eNone));
1174+
EXPECT_CALL(mStorage, AddInstanceNetworkInfo(_)).WillOnce(Return(aos::ErrorEnum::eNone));
1175+
1176+
mNetManager->OnPendingFirewallUpdate("test-node", update);
1177+
}
1178+
1179+
TEST_F(NetworkManagerTest, OnPendingFirewallUpdate_RunningInstance_CallsCNIUpdate)
1180+
{
1181+
auto params = CreateTestInstanceNetworkConfig();
1182+
auto allocatedParams = CreateTestAllocatedParams();
1183+
1184+
SetupEnsureNodeNetworkCreateMocks("test-network", "192.168.1.0/24", "192.168.1.1", 100);
1185+
1186+
EXPECT_CALL(mNetworkProvider, AllocateInstanceNetwork(_, _, _, _, _))
1187+
.WillOnce(DoAll(SetArgReferee<4>(allocatedParams), Return(aos::ErrorEnum::eNone)));
1188+
EXPECT_CALL(mStorage, AddInstanceNetworkInfo(_)).WillOnce(Return(aos::ErrorEnum::eNone));
1189+
1190+
auto err = mNetManager->CreateInstanceNetwork("test-instance", "test-network", params);
1191+
ASSERT_EQ(err, aos::ErrorEnum::eNone);
1192+
1193+
SetupEnsureNodeNetworkPhysicalMocks("192.168.1.1", "192.168.1.0/24", 100);
1194+
1195+
EXPECT_CALL(mNetns, CreateNetworkNamespace(_)).WillOnce(Return(aos::ErrorEnum::eNone));
1196+
EXPECT_CALL(mNetns, GetNetworkNamespacePath(_))
1197+
.WillOnce(Return(aos::RetWithError<aos::StaticString<aos::cFilePathLen>> {{}, aos::ErrorEnum::eNone}));
1198+
EXPECT_CALL(mCNI, AddNetworkList(_, _, _)).WillOnce(Return(aos::ErrorEnum::eNone));
1199+
EXPECT_CALL(mTrafficMonitor, StartInstanceMonitoring(_, _, _, _)).WillOnce(Return(aos::ErrorEnum::eNone));
1200+
1201+
InstanceNetworkRuntimeParams runtimeParams;
1202+
runtimeParams.mHostsFilePath = "/tmp/networkmanager_test/hosts";
1203+
runtimeParams.mResolvConfFilePath = "/tmp/networkmanager_test/resolv.conf";
1204+
1205+
err = mNetManager->StartInstanceNetwork("test-instance", "test-network", runtimeParams);
1206+
ASSERT_EQ(err, aos::ErrorEnum::eNone);
1207+
1208+
aos::PendingFirewallUpdate update;
1209+
update.mInstanceIdent = params.mInstanceIdent;
1210+
1211+
aos::FirewallRule rule;
1212+
rule.mDstIP = "10.0.0.5";
1213+
rule.mDstPort = "8080";
1214+
rule.mProto = "tcp";
1215+
rule.mSrcIP = "192.168.1.2";
1216+
update.mFirewallRules.PushBack(rule);
1217+
1218+
EXPECT_CALL(mStorage, RemoveInstanceNetworkInfo(aos::String("test-instance")))
1219+
.WillOnce(Return(aos::ErrorEnum::eNone));
1220+
EXPECT_CALL(mStorage, AddInstanceNetworkInfo(_)).WillOnce(Return(aos::ErrorEnum::eNone));
1221+
1222+
EXPECT_CALL(mCNI, GetNetworkListCachedConfig(_, _)).WillOnce(Return(aos::ErrorEnum::eNone));
1223+
EXPECT_CALL(mCNI, UpdateFirewall(_, _, _)).WillOnce(Return(aos::ErrorEnum::eNone));
1224+
1225+
mNetManager->OnPendingFirewallUpdate("test-node", update);
1226+
}

0 commit comments

Comments
 (0)