Skip to content

Commit ac8a83f

Browse files
vivekrnvprsunny
authored andcommitted
[UT] [Portsyncd] Added Unit Tests for portsyncd (sonic-net#2297)
1 parent 83a186a commit ac8a83f

File tree

6 files changed

+412
-36
lines changed

6 files changed

+412
-36
lines changed

portsyncd/portsyncd.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,7 @@ void usage()
4242
cout << " this program will exit if configDB does not contain that info" << endl;
4343
}
4444

45-
void handlePortConfigFile(ProducerStateTable &p, string file, bool warm);
4645
void handlePortConfigFromConfigDB(ProducerStateTable &p, DBConnector &cfgDb, bool warm);
47-
void handleVlanIntfFile(string file);
48-
void checkPortInitDone(DBConnector *appl_db);
4946

5047
int main(int argc, char **argv)
5148
{

tests/mock_tests/Makefile.am

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ FLEX_CTR_DIR = $(top_srcdir)/orchagent/flex_counter
22
DEBUG_CTR_DIR = $(top_srcdir)/orchagent/debug_counter
33
P4_ORCH_DIR = $(top_srcdir)/orchagent/p4orch
44

5-
INCLUDES = -I $(FLEX_CTR_DIR) -I $(DEBUG_CTR_DIR) -I $(top_srcdir)/lib -I $(top_srcdir)/cfgmgr
6-
75
CFLAGS_SAI = -I /usr/include/sai
86

9-
TESTS = tests tests_intfmgrd
7+
TESTS = tests tests_intfmgrd tests_portsyncd
108

11-
noinst_PROGRAMS = tests tests_intfmgrd
9+
noinst_PROGRAMS = tests tests_intfmgrd tests_portsyncd
1210

1311
LDADD_SAI = -lsaimeta -lsaimetadata -lsaivs -lsairedis
1412

@@ -21,6 +19,10 @@ endif
2119
CFLAGS_GTEST =
2220
LDADD_GTEST = -L/usr/src/gtest
2321

22+
## Orchagent Unit Tests
23+
24+
tests_INCLUDES = -I $(FLEX_CTR_DIR) -I $(DEBUG_CTR_DIR) -I $(top_srcdir)/lib -I$(top_srcdir)/cfgmgr -I$(top_srcdir)/orchagent
25+
2426
tests_SOURCES = aclorch_ut.cpp \
2527
portsorch_ut.cpp \
2628
routeorch_ut.cpp \
@@ -36,10 +38,10 @@ tests_SOURCES = aclorch_ut.cpp \
3638
mock_orchagent_main.cpp \
3739
mock_dbconnector.cpp \
3840
mock_consumerstatetable.cpp \
41+
common/mock_shell_command.cpp \
3942
mock_table.cpp \
4043
mock_hiredis.cpp \
4144
mock_redisreply.cpp \
42-
mock_shell_command.cpp \
4345
bulker_ut.cpp \
4446
portmgr_ut.cpp \
4547
fake_response_publisher.cpp \
@@ -120,26 +122,45 @@ tests_SOURCES += $(P4_ORCH_DIR)/p4orch.cpp \
120122
$(P4_ORCH_DIR)/gre_tunnel_manager.cpp \
121123
$(P4_ORCH_DIR)/l3_admit_manager.cpp
122124

123-
tests_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI)
124-
tests_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI) -I$(top_srcdir)/orchagent
125+
tests_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI)
126+
tests_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI) $(tests_INCLUDES)
125127
tests_LDADD = $(LDADD_GTEST) $(LDADD_SAI) -lnl-genl-3 -lhiredis -lhiredis -lpthread \
126128
-lswsscommon -lswsscommon -lgtest -lgtest_main -lzmq -lnl-3 -lnl-route-3
127129

130+
## portsyncd unit tests
131+
132+
tests_portsyncd_SOURCES = portsyncd/portsyncd_ut.cpp \
133+
$(top_srcdir)/portsyncd/linksync.cpp \
134+
mock_dbconnector.cpp \
135+
common/mock_shell_command.cpp \
136+
mock_table.cpp \
137+
mock_hiredis.cpp \
138+
mock_redisreply.cpp
139+
140+
tests_portsyncd_INCLUDES = -I $(top_srcdir)/portsyncd -I $(top_srcdir)/cfgmgr
141+
tests_portsyncd_CXXFLAGS = -Wl,-wrap,if_nameindex -Wl,-wrap,if_freenameindex
142+
tests_portsyncd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST)
143+
tests_portsyncd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(tests_portsyncd_INCLUDES)
144+
tests_portsyncd_LDADD = $(LDADD_GTEST) -lnl-genl-3 -lhiredis -lhiredis \
145+
-lswsscommon -lswsscommon -lgtest -lgtest_main -lnl-3 -lnl-route-3 -lpthread
146+
128147
## intfmgrd unit tests
129148

130149
tests_intfmgrd_SOURCES = intfmgrd/add_ipv6_prefix_ut.cpp \
131-
$(top_srcdir)/cfgmgr/intfmgr.cpp \
132-
$(top_srcdir)/orchagent/orch.cpp \
133-
$(top_srcdir)/orchagent/request_parser.cpp \
134-
$(top_srcdir)/lib/subintf.cpp \
135-
mock_orchagent_main.cpp \
136-
mock_dbconnector.cpp \
137-
mock_table.cpp \
138-
mock_hiredis.cpp \
139-
fake_response_publisher.cpp \
140-
mock_redisreply.cpp
150+
$(top_srcdir)/cfgmgr/intfmgr.cpp \
151+
$(top_srcdir)/lib/subintf.cpp \
152+
$(top_srcdir)/orchagent/orch.cpp \
153+
$(top_srcdir)/orchagent/request_parser.cpp \
154+
mock_orchagent_main.cpp \
155+
mock_dbconnector.cpp \
156+
mock_table.cpp \
157+
mock_hiredis.cpp \
158+
fake_response_publisher.cpp \
159+
mock_redisreply.cpp \
160+
common/mock_shell_command.cpp
141161

162+
tests_intfmgrd_INCLUDES = $(tests_INCLUDES) -I$(top_srcdir)/cfgmgr -I$(top_srcdir)/lib
142163
tests_intfmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI)
143-
tests_intfmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI) -I $(top_srcdir)/cfgmgr -I $(top_srcdir)/orchagent/
164+
tests_intfmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_GTEST) $(CFLAGS_SAI) $(tests_intfmgrd_INCLUDES)
144165
tests_intfmgrd_LDADD = $(LDADD_GTEST) $(LDADD_SAI) -lnl-genl-3 -lhiredis -lhiredis \
145166
-lswsscommon -lswsscommon -lgtest -lgtest_main -lzmq -lnl-3 -lnl-route-3 -lpthread
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include <string>
2+
#include <vector>
3+
4+
/* Override this pointer for custom behavior */
5+
int (*callback)(const std::string &cmd, std::string &stdout) = nullptr;
6+
7+
int mockCmdReturn = 0;
8+
std::string mockCmdStdcout = "";
9+
std::vector<std::string> mockCallArgs;
10+
11+
namespace swss {
12+
int exec(const std::string &cmd, std::string &stdout)
13+
{
14+
if (callback != nullptr)
15+
{
16+
return callback(cmd, stdout);
17+
}
18+
else
19+
{
20+
mockCallArgs.push_back(cmd);
21+
stdout = mockCmdStdcout;
22+
return mockCmdReturn;
23+
}
24+
}
25+
}

tests/mock_tests/intfmgrd/add_ipv6_prefix_ut.cpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,17 @@
55
#include <sys/stat.h>
66
#include "../mock_table.h"
77
#include "warm_restart.h"
8-
#define private public
8+
#define private public
99
#include "intfmgr.h"
1010
#undef private
1111

12-
/* Override this pointer for custom behavior */
13-
int (*callback)(const std::string &cmd, std::string &stdout) = nullptr;
14-
std::vector<std::string> mockCallArgs;
15-
16-
namespace swss {
17-
int exec(const std::string &cmd, std::string &stdout)
18-
{
19-
mockCallArgs.push_back(cmd);
20-
return callback(cmd, stdout);
21-
}
22-
}
12+
extern int (*callback)(const std::string &cmd, std::string &stdout);
13+
extern std::vector<std::string> mockCallArgs;
2314

2415
bool Ethernet0IPv6Set = false;
2516

2617
int cb(const std::string &cmd, std::string &stdout){
18+
mockCallArgs.push_back(cmd);
2719
if (cmd == "sysctl -w net.ipv6.conf.\"Ethernet0\".disable_ipv6=0") Ethernet0IPv6Set = true;
2820
else if (cmd.find("/sbin/ip -6 address \"add\"") == 0) {
2921
return Ethernet0IPv6Set ? 0 : 2;

tests/mock_tests/mock_table.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,15 @@ namespace swss
7373
keys.push_back(it.first);
7474
}
7575
}
76-
77-
76+
7877
void Table::del(const std::string &key, const std::string& /* op */, const std::string& /*prefix*/)
7978
{
8079
auto table = gDB[m_pipe->getDbId()].find(getTableName());
8180
if (table != gDB[m_pipe->getDbId()].end()){
8281
table->second.erase(key);
8382
}
8483
}
85-
84+
8685
void ProducerStateTable::set(const std::string &key,
8786
const std::vector<FieldValueTuple> &values,
8887
const std::string &op,

0 commit comments

Comments
 (0)