|
8 | 8 | import re
|
9 | 9 | from port_dpb import DPB
|
10 | 10 |
|
| 11 | +maxPorts = 32 |
| 12 | +maxBreakout = 4 |
| 13 | +maxRootPorts = maxPorts/maxBreakout |
| 14 | +maxAclTables = 16 |
| 15 | + |
11 | 16 | @pytest.mark.usefixtures('dpb_setup_fixture')
|
12 | 17 | class TestPortDPBAcl(object):
|
13 | 18 |
|
@@ -116,7 +121,7 @@ def test_one_acl_table_many_ports(self, dvs):
|
116 | 121 |
|
117 | 122 | # Breakout Ethernet0
|
118 | 123 | dpb = DPB()
|
119 |
| - dpb.breakout(dvs, "Ethernet0", 4) |
| 124 | + dpb.breakout(dvs, "Ethernet0", maxBreakout) |
120 | 125 | time.sleep(2)
|
121 | 126 |
|
122 | 127 | #Update bind list and verify
|
@@ -163,7 +168,106 @@ def test_one_acl_table_many_ports(self, dvs):
|
163 | 168 | time.sleep(2)
|
164 | 169 | dvs.verify_acl_group_num(0)
|
165 | 170 |
|
| 171 | + ''' |
166 | 172 | @pytest.mark.skip()
|
| 173 | + ''' |
167 | 174 | 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