Skip to content

Commit a4be55b

Browse files
vasant17Vasant
and
Vasant
committed
DPB-ACL scale tests (#30)
* DPB-ACL scale tests and code-review comments addressed * Remove sleeps that were put earlier Co-authored-by: Vasant <[email protected]>
1 parent 841cd69 commit a4be55b

File tree

2 files changed

+109
-9
lines changed

2 files changed

+109
-9
lines changed

tests/port_dpb.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def write_to_config_db(self):
154154
("speed", speed_str),
155155
("index", index_str)])
156156
self._cfg_db_ptbl.set(self.get_name(), fvs)
157-
time.sleep(1)
157+
time.sleep(2)
158158

159159
def get_fvs_dict(self, fvs):
160160
fvs_dict = {}
@@ -221,8 +221,6 @@ def breakin(self, dvs, port_names):
221221
#dvs.runcmd("ip link delete " + cp.get_name())
222222
#print "Deleted child ports:%s from config DB"%port_names
223223

224-
time.sleep(6)
225-
226224
for cp in child_ports:
227225
assert(cp.exists_in_config_db() == False)
228226
for cp in child_ports:
@@ -235,7 +233,6 @@ def breakin(self, dvs, port_names):
235233
p.port_merge(child_ports)
236234
p.write_to_config_db()
237235
#print "Added port:%s to config DB"%p.get_name()
238-
time.sleep(2)
239236

240237
p.verify_config_db()
241238
#print "Config DB verification passed!"
@@ -254,7 +251,6 @@ def create_child_ports(self, dvs, p, num_child_ports):
254251
cp.write_to_config_db()
255252
child_port_names.append(cp.get_name())
256253
#print "Added child ports:%s to config DB"%child_port_names
257-
time.sleep(6)
258254

259255
for cp in child_ports:
260256
assert(cp.exists_in_config_db() == True)
@@ -279,7 +275,7 @@ def breakout(self, dvs, port_name, num_child_ports):
279275
# TBD, need vs lib to support hostif removal
280276
#dvs.runcmd("ip link delete " + p.get_name())
281277
#print "Deleted port:%s from config DB"%port_name
282-
time.sleep(6)
278+
time.sleep(2)
283279

284280
# Verify port is deleted from all DBs
285281
assert(p.exists_in_config_db() == False)

tests/test_port_dpb_acl.py

+107-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
import re
99
from port_dpb import DPB
1010

11+
maxPorts = 32
12+
maxBreakout = 4
13+
maxRootPorts = maxPorts/maxBreakout
14+
maxAclTables = 16
15+
1116
@pytest.mark.usefixtures('dpb_setup_fixture')
1217
class TestPortDPBAcl(object):
1318

@@ -116,7 +121,7 @@ def test_one_acl_table_many_ports(self, dvs):
116121

117122
# Breakout Ethernet0
118123
dpb = DPB()
119-
dpb.breakout(dvs, "Ethernet0", 4)
124+
dpb.breakout(dvs, "Ethernet0", maxBreakout)
120125
time.sleep(2)
121126

122127
#Update bind list and verify
@@ -163,7 +168,106 @@ def test_one_acl_table_many_ports(self, dvs):
163168
time.sleep(2)
164169
dvs.verify_acl_group_num(0)
165170

171+
'''
166172
@pytest.mark.skip()
173+
'''
167174
def test_one_port_many_acl_tables(self, dvs):
168-
#TBD
169-
return
175+
dvs.setup_db()
176+
177+
# Create 4 ACL tables and bind them to Ethernet0
178+
bind_ports = ["Ethernet0"]
179+
dvs.create_acl_table("test1", "L3", bind_ports)
180+
dvs.create_acl_table("test2", "L3", bind_ports)
181+
dvs.create_acl_table("test3", "L3", bind_ports)
182+
dvs.create_acl_table("test4", "L3", bind_ports)
183+
184+
acl_table_ids = dvs.get_acl_table_ids()
185+
assert len(acl_table_ids) == 4
186+
dvs.verify_acl_group_num(1)
187+
acl_group_ids = dvs.get_acl_group_ids()
188+
dvs.verify_acl_group_member(acl_group_ids[0], acl_table_ids[0])
189+
dvs.verify_acl_group_member(acl_group_ids[0], acl_table_ids[1])
190+
dvs.verify_acl_group_member(acl_group_ids[0], acl_table_ids[2])
191+
dvs.verify_acl_group_member(acl_group_ids[0], acl_table_ids[3])
192+
dvs.verify_acl_port_binding(bind_ports)
193+
194+
# Update bind list and verify
195+
bind_ports = []
196+
fvs = swsscommon.FieldValuePairs([("ports", ",".join(bind_ports))])
197+
dvs.update_acl_table("test1", fvs)
198+
dvs.update_acl_table("test2", fvs)
199+
dvs.update_acl_table("test3", fvs)
200+
dvs.update_acl_table("test4", fvs)
201+
dvs.verify_acl_group_num(0)
202+
203+
# Breakout Ethernet0
204+
dpb = DPB()
205+
dpb.breakout(dvs, "Ethernet0", maxBreakout)
206+
207+
#Breakin Ethernet0, 1, 2, 3
208+
dpb.breakin(dvs, ["Ethernet0", "Ethernet1", "Ethernet2", "Ethernet3"])
209+
210+
dvs.remove_acl_table("test1")
211+
dvs.remove_acl_table("test2")
212+
dvs.remove_acl_table("test3")
213+
dvs.remove_acl_table("test4")
214+
215+
'''
216+
@pytest.mark.skip()
217+
'''
218+
def test_many_ports_many_acl_tables(self, dvs):
219+
dvs.setup_db()
220+
221+
# Prepare ACL table names
222+
aclTableNames = []
223+
for i in range(maxAclTables):
224+
aclTableNames.append("aclTable" + str(i+1))
225+
226+
# Prepare all port names
227+
portNames = []
228+
for i in range(maxPorts):
229+
portNames.append("Ethernet" + str(i))
230+
231+
# Prepare root port names
232+
rootPortNames = []
233+
for i in range(0, maxPorts, maxBreakout):
234+
rootPortNames.append("Ethernet" + str(i))
235+
236+
# Create ACL tables and bind root ports
237+
for aclTable in aclTableNames:
238+
dvs.create_acl_table(aclTable, "L3", rootPortNames)
239+
dvs.verify_acl_group_num(maxRootPorts)
240+
241+
# Remove the dependency on all root ports by
242+
# unbinding them from all ACL tables.
243+
bind_ports = []
244+
fvs = swsscommon.FieldValuePairs([("ports", ",".join(bind_ports))])
245+
for aclTable in aclTableNames:
246+
dvs.update_acl_table(aclTable, fvs)
247+
dvs.verify_acl_group_num(0)
248+
249+
# Breakout all root ports
250+
dpb = DPB()
251+
for pName in rootPortNames:
252+
#print "Breaking out %s"%pName
253+
dpb.breakout(dvs, pName, maxBreakout)
254+
255+
# Add all ports to aclTable1
256+
fvs = swsscommon.FieldValuePairs([("ports", ",".join(portNames))])
257+
dvs.update_acl_table(aclTableNames[0], fvs)
258+
dvs.verify_acl_group_num(maxPorts)
259+
260+
# Remove all ports from aclTable1
261+
bind_ports = []
262+
fvs = swsscommon.FieldValuePairs([("ports", ",".join(bind_ports))])
263+
dvs.update_acl_table(aclTableNames[0], fvs)
264+
dvs.verify_acl_group_num(0)
265+
266+
# Breakin all ports
267+
for i in range(0, maxPorts, maxBreakout):
268+
#print "Breaking in %s"%portNames[i:i+maxBreakout]
269+
dpb.breakin(dvs, portNames[i:i+maxBreakout])
270+
271+
for aclTable in aclTableNames:
272+
dvs.remove_acl_table(aclTable)
273+
dvs.verify_acl_group_num(0)

0 commit comments

Comments
 (0)