Skip to content

Commit e7a01bf

Browse files
gautvenktomflynn
authored andcommitted
Moving xid injection to mock stats manager class
Signed-off-by: Gautam Venkataramanan <gautam.chennai@gmail.com> Change-Id: I14e2a580e60d659517180a2f739789f6ab356534
1 parent 414d38a commit e7a01bf

File tree

6 files changed

+145
-38
lines changed

6 files changed

+145
-38
lines changed

agent-ovs/ovs/include/PolicyStatsManager.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,6 @@ class PolicyStatsManager : private boost::noncopyable,
141141
*/
142142
static const int MAX_AGE = 9;
143143

144-
/**
145-
* This is a test method. Do not use in production
146-
* @param txn_id: transaction id to simulate send
147-
*/
148-
void testInjectTxnId(uint32_t txn_id) {
149-
txns.insert(txn_id);
150-
}
151144
protected:
152145
/**
153146
* Type used as a key for Policy counter maps

agent-ovs/ovs/test/ContractStatsManager_test.cpp

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,19 @@ namespace opflexagent {
4848

4949
static const uint32_t LAST_PACKET_COUNT = 379; // for removed flow entry
5050

51+
class MockContractStatsManager : public ContractStatsManager {
52+
public:
53+
MockContractStatsManager(Agent *agent_,
54+
IdGenerator& idGen_,
55+
SwitchManager& switchManager_,
56+
long timer_interval_)
57+
: ContractStatsManager(agent_, idGen_, switchManager_, timer_interval_) {};
58+
59+
void testInjectTxnId (uint32_t txn_id) {
60+
txns.insert(txn_id);
61+
}
62+
};
63+
5164
class ContractStatsManagerFixture : public PolicyStatsManagerFixture {
5265

5366
public:
@@ -81,7 +94,7 @@ class ContractStatsManagerFixture : public PolicyStatsManagerFixture {
8194
void verifyRdDropPromMetrics(uint32_t pkts, uint32_t bytes);
8295
#endif
8396
IntFlowManager intFlowManager;
84-
ContractStatsManager contractStatsManager;
97+
MockContractStatsManager contractStatsManager;
8598
PolicyManager& policyManager;
8699
private:
87100
bool checkNewFlowMapSize(size_t pol_table_size);
@@ -260,7 +273,7 @@ BOOST_FIXTURE_TEST_CASE(testFlowMatchStats, ContractStatsManagerFixture) {
260273
contractStatsManager.Handle(&integrationPortConn,
261274
OFPTYPE_FLOW_STATS_REPLY, NULL);
262275

263-
testOneFlow(integrationPortConn,classifier3,
276+
testOneFlow<MockContractStatsManager>(integrationPortConn,classifier3,
264277
IntFlowManager::POL_TABLE_ID,
265278
1,
266279
false,
@@ -374,7 +387,7 @@ BOOST_FIXTURE_TEST_CASE(testCircularBuffer, ContractStatsManagerFixture) {
374387
contractStatsManager.start();
375388
LOG(DEBUG) << "### Contract circbuffer Start";
376389
// Add flows in switchManager
377-
testCircBuffer(intPortConn,classifier3,
390+
testCircBuffer<MockContractStatsManager>(intPortConn,classifier3,
378391
IntFlowManager::POL_TABLE_ID,2,&contractStatsManager,
379392
epg1,epg2,&policyManager);
380393
LOG(DEBUG) << "### Contract circbuffer End";
@@ -391,7 +404,7 @@ BOOST_FIXTURE_TEST_CASE(testContractDelete, ContractStatsManagerFixture) {
391404
contractStatsManager.Handle(&integrationPortConn,
392405
OFPTYPE_FLOW_STATS_REPLY, NULL);
393406

394-
testOneFlow(integrationPortConn,
407+
testOneFlow<MockContractStatsManager>(integrationPortConn,
395408
classifier3,
396409
IntFlowManager::POL_TABLE_ID,
397410
1,
@@ -428,7 +441,7 @@ BOOST_FIXTURE_TEST_CASE(testSEpgDelete, ContractStatsManagerFixture) {
428441
contractStatsManager.start();
429442
LOG(DEBUG) << "### Contract SEPG Delete Start";
430443

431-
testOneFlow(integrationPortConn,
444+
testOneFlow<MockContractStatsManager>(integrationPortConn,
432445
classifier3,
433446
IntFlowManager::POL_TABLE_ID,
434447
1,
@@ -463,7 +476,7 @@ BOOST_FIXTURE_TEST_CASE(testrDSEpgDelete, ContractStatsManagerFixture) {
463476
contractStatsManager.start();
464477
LOG(DEBUG) << "### Contract DSEPG Delete Start";
465478

466-
testOneFlow(integrationPortConn,
479+
testOneFlow<MockContractStatsManager>(integrationPortConn,
467480
classifier3,
468481
IntFlowManager::POL_TABLE_ID,
469482
1,

agent-ovs/ovs/test/SecGrpStatsManager_test.cpp

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,19 @@ namespace opflexagent {
5454

5555
static const uint32_t LAST_PACKET_COUNT = 379; // for removed flow entry
5656

57+
class MockSecGrpStatsManager : public SecGrpStatsManager {
58+
public:
59+
MockSecGrpStatsManager(Agent *agent_,
60+
IdGenerator& idGen_,
61+
SwitchManager& switchManager_,
62+
long timer_interval_)
63+
: SecGrpStatsManager(agent_, idGen_, switchManager_, timer_interval_) {};
64+
65+
void testInjectTxnId (uint32_t txn_id) {
66+
txns.insert(txn_id);
67+
}
68+
};
69+
5770
class SecGrpStatsManagerFixture : public PolicyStatsManagerFixture {
5871

5972
public:
@@ -76,7 +89,7 @@ class SecGrpStatsManagerFixture : public PolicyStatsManagerFixture {
7689
uint32_t bytes,
7790
bool isTx=false) override;
7891
#endif
79-
SecGrpStatsManager secGrpStatsManager;
92+
MockSecGrpStatsManager secGrpStatsManager;
8093
};
8194

8295
#ifdef HAVE_PROMETHEUS_SUPPORT
@@ -156,33 +169,33 @@ BOOST_FIXTURE_TEST_CASE(testFlowMatchStats, SecGrpStatsManagerFixture) {
156169
OFPTYPE_FLOW_STATS_REPLY, NULL);
157170
LOG(DEBUG) << "### SecGrpClassifierCounter flow stats in start";
158171
// testing one flow only
159-
testOneFlow(accPortConn,classifier1,
172+
testOneFlow<MockSecGrpStatsManager>(accPortConn,classifier1,
160173
AccessFlowManager::SEC_GROUP_IN_TABLE_ID,
161174
1, false, &secGrpStatsManager);
162175
// 2 entries in flow table now - testing second flow
163-
testOneFlow(accPortConn,classifier2,
176+
testOneFlow<MockSecGrpStatsManager>(accPortConn,classifier2,
164177
AccessFlowManager::SEC_GROUP_IN_TABLE_ID,
165178
2, false,
166179
&secGrpStatsManager);
167180
// changing flow table entry
168181
// Note: If the portNum is set as 2, then it clashes with classifier2
169182
// entry. So first classifier1 entry will get deleted. No new counter
170183
// objeects will get generated and verifyflowstats will fail.
171-
testOneFlow(accPortConn,classifier1,
184+
testOneFlow<MockSecGrpStatsManager>(accPortConn,classifier1,
172185
AccessFlowManager::SEC_GROUP_IN_TABLE_ID,
173186
3, true,
174187
&secGrpStatsManager);
175188
LOG(DEBUG) << "### SecGrpClassifierCounter flow stats out start";
176189
// same 3 steps above for OUT table
177-
testOneFlow(accPortConn,classifier1,
190+
testOneFlow<MockSecGrpStatsManager>(accPortConn,classifier1,
178191
AccessFlowManager::SEC_GROUP_OUT_TABLE_ID,
179192
1, false,
180193
&secGrpStatsManager);
181-
testOneFlow(accPortConn,classifier2,
194+
testOneFlow<MockSecGrpStatsManager>(accPortConn,classifier2,
182195
AccessFlowManager::SEC_GROUP_OUT_TABLE_ID,
183196
2, false,
184197
&secGrpStatsManager);
185-
testOneFlow(accPortConn,classifier1,
198+
testOneFlow<MockSecGrpStatsManager>(accPortConn,classifier1,
186199
AccessFlowManager::SEC_GROUP_OUT_TABLE_ID,
187200
3, true,
188201
&secGrpStatsManager);
@@ -302,7 +315,7 @@ BOOST_FIXTURE_TEST_CASE(testCircularBuffer, SecGrpStatsManagerFixture) {
302315
LOG(DEBUG) << "### SecGrpClassifierCounter circbuffer start";
303316
// Add flows in switchManager
304317

305-
testCircBuffer(accPortConn,
318+
testCircBuffer<MockSecGrpStatsManager>(accPortConn,
306319
classifier3,
307320
AccessFlowManager::SEC_GROUP_IN_TABLE_ID,
308321
2,
@@ -320,7 +333,7 @@ BOOST_FIXTURE_TEST_CASE(testSecGrpDelete, SecGrpStatsManagerFixture) {
320333
secGrpStatsManager.Handle(&accPortConn,
321334
OFPTYPE_FLOW_STATS_REPLY, NULL);
322335
// testing one flow only
323-
testOneFlow(accPortConn,classifier1,
336+
testOneFlow<MockSecGrpStatsManager>(accPortConn,classifier1,
324337
AccessFlowManager::SEC_GROUP_IN_TABLE_ID,
325338
1, false, &secGrpStatsManager);
326339
Mutator mutator(agent.getFramework(), "policyreg");

agent-ovs/ovs/test/ServiceStatsManager_test.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,21 @@ namespace opflexagent {
4444

4545
static const uint32_t LAST_PACKET_COUNT = 350; // for removed flow entry
4646

47+
class MockServiceStatsManager : public ServiceStatsManager {
48+
public:
49+
MockServiceStatsManager(Agent *agent_,
50+
IdGenerator& idGen_,
51+
SwitchManager& switchManager_,
52+
IntFlowManager& intFlowManager_,
53+
long timer_interval_)
54+
: ServiceStatsManager(agent_, idGen_, switchManager_,
55+
intFlowManager_, timer_interval_) {};
56+
57+
void testInjectTxnId (uint32_t txn_id) {
58+
txns.insert(txn_id);
59+
}
60+
};
61+
4762
class ServiceStatsManagerFixture : public PolicyStatsManagerFixture {
4863

4964
public:
@@ -86,7 +101,7 @@ class ServiceStatsManagerFixture : public PolicyStatsManagerFixture {
86101

87102
IntFlowManager intFlowManager;
88103
PacketInHandler pktInHandler;
89-
ServiceStatsManager serviceStatsManager;
104+
MockServiceStatsManager serviceStatsManager;
90105
void testFlowStatsPodSvc(MockConnection& portConn,
91106
PolicyStatsManager *statsManager,
92107
bool testAggregate=false);
@@ -430,7 +445,7 @@ ServiceStatsManagerFixture::testFlowStatsSvcTgt (MockConnection& portConn,
430445
BOOST_REQUIRE(res_msg!=0);
431446
LOG(DEBUG) << "1 makeFlowStatsReplyMessage successful";
432447
ofp_header *msgHdr = (ofp_header *)res_msg->data;
433-
statsManager->testInjectTxnId(msgHdr->xid);
448+
serviceStatsManager.testInjectTxnId(msgHdr->xid);
434449

435450
// send first flow stats reply message
436451
statsManager->Handle(&portConn,
@@ -460,7 +475,7 @@ ServiceStatsManagerFixture::testFlowStatsSvcTgt (MockConnection& portConn,
460475
BOOST_REQUIRE(res_msg!=0);
461476
LOG(DEBUG) << "2 makeFlowStatReplyMessage successful";
462477
msgHdr = (ofp_header *)res_msg->data;
463-
statsManager->testInjectTxnId(msgHdr->xid);
478+
serviceStatsManager.testInjectTxnId(msgHdr->xid);
464479

465480
// send second flow stats reply message
466481
statsManager->Handle(&portConn,
@@ -573,7 +588,7 @@ ServiceStatsManagerFixture::testFlowStatsPodSvc (MockConnection& portConn,
573588
BOOST_REQUIRE(res_msg!=0);
574589
LOG(DEBUG) << "1 makeFlowStatsReplyMessage successful";
575590
ofp_header *msgHdr = (ofp_header *)res_msg->data;
576-
statsManager->testInjectTxnId(msgHdr->xid);
591+
serviceStatsManager.testInjectTxnId(msgHdr->xid);
577592

578593
// send first flow stats reply message
579594
statsManager->Handle(&portConn,
@@ -600,7 +615,7 @@ ServiceStatsManagerFixture::testFlowStatsPodSvc (MockConnection& portConn,
600615
BOOST_REQUIRE(res_msg!=0);
601616
LOG(DEBUG) << "2 makeFlowStatReplyMessage successful";
602617
msgHdr = (ofp_header *)res_msg->data;
603-
statsManager->testInjectTxnId(msgHdr->xid);
618+
serviceStatsManager.testInjectTxnId(msgHdr->xid);
604619

605620
// send second flow stats reply message
606621
statsManager->Handle(&portConn,

agent-ovs/ovs/test/TableDropStatsManager_test.cpp

Lines changed: 76 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,72 @@ using modelgbp::observer::PolicyStatUniverse;
4242

4343
namespace opflexagent {
4444

45+
class MockIntTableDropStatsManager : public BaseTableDropStatsManager {
46+
public:
47+
MockIntTableDropStatsManager(Agent* agent, IdGenerator& idGen,
48+
SwitchManager& switchManager,
49+
long timer_interval = 30000):
50+
BaseTableDropStatsManager(agent, idGen,
51+
switchManager, timer_interval){};
52+
53+
void testInjectTxnId (uint32_t txn_id) {
54+
txns.insert(txn_id);
55+
}
56+
};
57+
58+
class MockAccessTableDropStatsManager : public BaseTableDropStatsManager {
59+
public:
60+
MockAccessTableDropStatsManager(Agent* agent, IdGenerator& idGen,
61+
SwitchManager& switchManager,
62+
long timer_interval = 30000):
63+
BaseTableDropStatsManager(agent, idGen,
64+
switchManager, timer_interval) {};
65+
66+
void testInjectTxnId (uint32_t txn_id) {
67+
txns.insert(txn_id);
68+
}
69+
};
70+
71+
class MockTableDropStatsManager {
72+
public:
73+
MockTableDropStatsManager(Agent* agent,
74+
IdGenerator& idGen,
75+
SwitchManager& intSwitchManager,
76+
SwitchManager& accSwitchManager,
77+
long timer_interval = 30000):
78+
intTableDropStatsMgr(agent,
79+
idGen, intSwitchManager,
80+
timer_interval),
81+
accTableDropStatsMgr(agent,
82+
idGen, accSwitchManager,
83+
timer_interval) {}
84+
void start() {
85+
intTableDropStatsMgr.start(false);
86+
accTableDropStatsMgr.start(false);
87+
}
88+
89+
void stop() {
90+
intTableDropStatsMgr.stop(false);
91+
accTableDropStatsMgr.stop(false);
92+
}
93+
94+
void setAgentUUID(const std::string& uuid) {
95+
intTableDropStatsMgr.setAgentUUID(uuid);
96+
accTableDropStatsMgr.setAgentUUID(uuid);
97+
}
98+
99+
void registerConnection(SwitchConnection* intConnection,
100+
SwitchConnection* accessConnection) {
101+
intTableDropStatsMgr.registerConnection(intConnection);
102+
if(accessConnection) {
103+
accTableDropStatsMgr.registerConnection(accessConnection);
104+
}
105+
}
106+
107+
MockIntTableDropStatsManager intTableDropStatsMgr;
108+
MockAccessTableDropStatsManager accTableDropStatsMgr;
109+
};
110+
45111
class TableDropStatsManagerFixture : public PolicyStatsManagerFixture {
46112

47113
public:
@@ -87,17 +153,18 @@ class TableDropStatsManagerFixture : public PolicyStatsManagerFixture {
87153
IntFlowManager intFlowManager;
88154
AccessFlowManager accFlowManager;
89155
PacketInHandler pktInHandler;
90-
TableDropStatsManager tableDropStatsManager;
156+
MockTableDropStatsManager tableDropStatsManager;
91157

92158
void createIntBridgeDropFlowList(uint32_t table_id,
93159
FlowEntryList& entryList);
94160
void createAccBridgeDropFlowList(uint32_t table_id,
95161
FlowEntryList& entryList);
162+
template <typename cStatsManager>
96163
void testOneStaticDropFlow(MockConnection& portConn,
97164
uint32_t table_id,
98165
PolicyStatsManager &statsManager,
99166
SwitchManager &swMgr,
100-
bool refresh_aging);
167+
bool refresh_aging=false);
101168
void verifyDropFlowStats(uint64_t exp_packet_count,
102169
uint64_t exp_byte_count,
103170
uint32_t table_id,
@@ -215,12 +282,13 @@ void TableDropStatsManagerFixture::createIntBridgeDropFlowList(
215282

216283
}
217284

285+
template <typename cStatsManager>
218286
void TableDropStatsManagerFixture::testOneStaticDropFlow (
219287
MockConnection& portConn,
220288
uint32_t table_id,
221289
PolicyStatsManager &statsManager,
222290
SwitchManager &swMgr,
223-
bool refresh_aged_flow=false)
291+
bool refresh_aged_flow)
224292
{
225293
uint64_t expected_pkt_count = INITIAL_PACKET_COUNT*2,
226294
expected_byte_count = INITIAL_PACKET_COUNT*2*PACKET_SIZE;
@@ -258,7 +326,8 @@ void TableDropStatsManagerFixture::testOneStaticDropFlow (
258326
LOG(DEBUG) << "1 makeFlowStatReplyMessage created";
259327
BOOST_REQUIRE(res_msg!=0);
260328
ofp_header *msgHdr = (ofp_header *)res_msg->data;
261-
statsManager.testInjectTxnId(msgHdr->xid);
329+
cStatsManager* pSM = dynamic_cast<cStatsManager*>(&statsManager);
330+
pSM->testInjectTxnId(msgHdr->xid);
262331

263332
// send first flow stats reply message
264333
statsManager.Handle(&portConn,
@@ -278,7 +347,7 @@ void TableDropStatsManagerFixture::testOneStaticDropFlow (
278347
LOG(DEBUG) << "2 makeFlowStatReplyMessage created";
279348
BOOST_REQUIRE(res_msg!=0);
280349
msgHdr = (ofp_header *)res_msg->data;
281-
statsManager.testInjectTxnId(msgHdr->xid);
350+
pSM->testInjectTxnId(msgHdr->xid);
282351

283352
// send second flow stats reply message
284353
statsManager.Handle(&portConn,
@@ -310,7 +379,7 @@ BOOST_FIXTURE_TEST_CASE(testStaticDropFlowsInt, TableDropStatsManagerFixture) {
310379
start();
311380
for(int i=IntFlowManager::SEC_TABLE_ID ;
312381
i < IntFlowManager::EXP_DROP_TABLE_ID ; i++) {
313-
testOneStaticDropFlow(intPortConn, i,
382+
testOneStaticDropFlow<MockIntTableDropStatsManager>(intPortConn, i,
314383
getIntTableDropStatsManager(),
315384
switchManager, (i>3));
316385
}
@@ -321,7 +390,7 @@ BOOST_FIXTURE_TEST_CASE(testStaticDropFlowsAcc, TableDropStatsManagerFixture) {
321390
start();
322391
for(int i = AccessFlowManager::GROUP_MAP_TABLE_ID;
323392
i < AccessFlowManager::EXP_DROP_TABLE_ID; i++) {
324-
testOneStaticDropFlow(accPortConn, i,
393+
testOneStaticDropFlow<MockAccessTableDropStatsManager>(accPortConn, i,
325394
getAccTableDropStatsManager(),
326395
accBr, (i>3));
327396
}

0 commit comments

Comments
 (0)