1
1
import time
2
+ import pytest
2
3
3
- class BaseTestAcl (object ):
4
- def setup_dvs_acl (self , dvs ):
5
- self .dvs_acl = dvs .get_dvs_acl ()
6
-
7
- class TestAcl (BaseTestAcl ):
4
+ @pytest .mark .usefixtures ('dvs_acl_manager' )
5
+ class TestAcl ():
8
6
def test_AclTableCreation (self , dvs ):
9
- self .setup_dvs_acl (dvs )
10
7
11
8
bind_ports = ["Ethernet0" , "Ethernet4" ]
12
9
self .dvs_acl .create_acl_table ("test" , "L3" , bind_ports )
@@ -16,9 +13,7 @@ def test_AclTableCreation(self, dvs):
16
13
self .dvs_acl .verify_acl_group_member (acl_group_ids , self .dvs_acl .get_acl_table_id ())
17
14
self .dvs_acl .verify_acl_port_binding (bind_ports )
18
15
19
- #fails
20
16
def test_AclRuleL4SrcPort (self , dvs ):
21
- self .setup_dvs_acl (dvs )
22
17
23
18
config_qualifiers = {"L4_SRC_PORT" : "65000" }
24
19
expected_sai_qualifiers = {"SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT" : self .dvs_acl .get_simple_qualifier_comparator ("65000&mask:0xffff" )}
@@ -29,9 +24,7 @@ def test_AclRuleL4SrcPort(self, dvs):
29
24
self .dvs_acl .remove_acl_rule ("test" , "acl_test_rule" )
30
25
self .dvs_acl .verify_no_acl_rules ()
31
26
32
- #fails
33
27
def test_AclRuleInOutPorts (self , dvs ):
34
- self .setup_dvs_acl (dvs )
35
28
36
29
config_qualifiers = {
37
30
"IN_PORTS" : "Ethernet0,Ethernet4" ,
@@ -50,7 +43,6 @@ def test_AclRuleInOutPorts(self, dvs):
50
43
self .dvs_acl .verify_no_acl_rules ()
51
44
52
45
def test_AclRuleInPortsNonExistingInterface (self , dvs ):
53
- self .setup_dvs_acl (dvs )
54
46
55
47
config_qualifiers = {
56
48
"IN_PORTS" : "FOO_BAR_BAZ"
@@ -62,7 +54,6 @@ def test_AclRuleInPortsNonExistingInterface(self, dvs):
62
54
self .dvs_acl .remove_acl_rule ("test" , "acl_test_rule" )
63
55
64
56
def test_AclRuleOutPortsNonExistingInterface (self , dvs ):
65
- self .setup_dvs_acl (dvs )
66
57
67
58
config_qualifiers = {
68
59
"OUT_PORTS" : "FOO_BAR_BAZ"
@@ -74,13 +65,11 @@ def test_AclRuleOutPortsNonExistingInterface(self, dvs):
74
65
self .dvs_acl .remove_acl_rule ("test" , "acl_test_rule" )
75
66
76
67
def test_AclTableDeletion (self , dvs ):
77
- self .setup_dvs_acl (dvs )
78
68
79
69
self .dvs_acl .remove_acl_table ("test" )
80
- self .dvs_acl .verify_no_acl_tables ( )
70
+ self .dvs_acl .verify_acl_table_count ( 0 )
81
71
82
72
def test_V6AclTableCreation (self , dvs ):
83
- self .setup_dvs_acl (dvs )
84
73
85
74
bind_ports = ["Ethernet0" , "Ethernet4" , "Ethernet8" ]
86
75
self .dvs_acl .create_acl_table ("test_aclv6" , "L3V6" , bind_ports )
@@ -90,9 +79,7 @@ def test_V6AclTableCreation(self, dvs):
90
79
self .dvs_acl .verify_acl_group_member (acl_group_ids , self .dvs_acl .get_acl_table_id ())
91
80
self .dvs_acl .verify_acl_port_binding (bind_ports )
92
81
93
- # fails
94
82
def test_V6AclRuleIPv6Any (self , dvs ):
95
- self .setup_dvs_acl (dvs )
96
83
97
84
config_qualifiers = {"IP_TYPE" : "IPv6ANY" }
98
85
expected_sai_qualifiers = {
@@ -105,9 +92,7 @@ def test_V6AclRuleIPv6Any(self, dvs):
105
92
self .dvs_acl .remove_acl_rule ("test_aclv6" , "acl_test_rule" )
106
93
self .dvs_acl .verify_no_acl_rules ()
107
94
108
- # fails
109
95
def test_V6AclRuleIPv6AnyDrop (self , dvs ):
110
- self .setup_dvs_acl (dvs )
111
96
112
97
config_qualifiers = {"IP_TYPE" : "IPv6ANY" }
113
98
expected_sai_qualifiers = {
@@ -121,7 +106,6 @@ def test_V6AclRuleIPv6AnyDrop(self, dvs):
121
106
self .dvs_acl .verify_no_acl_rules ()
122
107
123
108
def test_V6AclRuleIpProtocol (self , dvs ):
124
- self .setup_dvs_acl (dvs )
125
109
126
110
config_qualifiers = {"IP_PROTOCOL" : "6" }
127
111
expected_sai_qualifiers = {"SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL" : self .dvs_acl .get_simple_qualifier_comparator ("6&mask:0xff" )}
@@ -133,7 +117,6 @@ def test_V6AclRuleIpProtocol(self, dvs):
133
117
self .dvs_acl .verify_no_acl_rules ()
134
118
135
119
def test_V6AclRuleSrcIPv6 (self , dvs ):
136
- self .setup_dvs_acl (dvs )
137
120
138
121
config_qualifiers = {"SRC_IPV6" : "2777::0/64" }
139
122
expected_sai_qualifiers = {
@@ -147,7 +130,6 @@ def test_V6AclRuleSrcIPv6(self, dvs):
147
130
self .dvs_acl .verify_no_acl_rules ()
148
131
149
132
def test_V6AclRuleDstIPv6 (self , dvs ):
150
- self .setup_dvs_acl (dvs )
151
133
152
134
config_qualifiers = {"DST_IPV6" : "2002::2/128" }
153
135
expected_sai_qualifiers = {
@@ -161,7 +143,6 @@ def test_V6AclRuleDstIPv6(self, dvs):
161
143
self .dvs_acl .verify_no_acl_rules ()
162
144
163
145
def test_V6AclRuleL4SrcPort (self , dvs ):
164
- self .setup_dvs_acl (dvs )
165
146
166
147
config_qualifiers = {"L4_SRC_PORT" : "65000" }
167
148
expected_sai_qualifiers = {"SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT" : self .dvs_acl .get_simple_qualifier_comparator ("65000&mask:0xffff" )}
@@ -173,7 +154,6 @@ def test_V6AclRuleL4SrcPort(self, dvs):
173
154
self .dvs_acl .verify_no_acl_rules ()
174
155
175
156
def test_V6AclRuleL4DstPort (self , dvs ):
176
- self .setup_dvs_acl (dvs )
177
157
178
158
config_qualifiers = {"L4_DST_PORT" : "65001" }
179
159
expected_sai_qualifiers = {"SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT" : self .dvs_acl .get_simple_qualifier_comparator ("65001&mask:0xffff" )}
@@ -185,7 +165,6 @@ def test_V6AclRuleL4DstPort(self, dvs):
185
165
self .dvs_acl .verify_no_acl_rules ()
186
166
187
167
def test_V6AclRuleTCPFlags (self , dvs ):
188
- self .setup_dvs_acl (dvs )
189
168
190
169
config_qualifiers = {"TCP_FLAGS" : "0x07/0x3f" }
191
170
expected_sai_qualifiers = {"SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS" : self .dvs_acl .get_simple_qualifier_comparator ("7&mask:0x3f" )}
@@ -197,7 +176,6 @@ def test_V6AclRuleTCPFlags(self, dvs):
197
176
self .dvs_acl .verify_no_acl_rules ()
198
177
199
178
def test_V6AclRuleL4SrcPortRange (self , dvs ):
200
- self .setup_dvs_acl (dvs )
201
179
202
180
config_qualifiers = {"L4_SRC_PORT_RANGE" : "1-100" }
203
181
expected_sai_qualifiers = {
@@ -211,7 +189,6 @@ def test_V6AclRuleL4SrcPortRange(self, dvs):
211
189
self .dvs_acl .verify_no_acl_rules ()
212
190
213
191
def test_V6AclRuleL4DstPortRange (self , dvs ):
214
- self .setup_dvs_acl (dvs )
215
192
216
193
config_qualifiers = {"L4_DST_PORT_RANGE" : "101-200" }
217
194
expected_sai_qualifiers = {
@@ -225,13 +202,11 @@ def test_V6AclRuleL4DstPortRange(self, dvs):
225
202
self .dvs_acl .verify_no_acl_rules ()
226
203
227
204
def test_V6AclTableDeletion (self , dvs ):
228
- self .setup_dvs_acl (dvs )
229
205
230
206
self .dvs_acl .remove_acl_table ("test_aclv6" )
231
- self .dvs_acl .verify_no_acl_tables ( )
207
+ self .dvs_acl .verify_acl_table_count ( 0 )
232
208
233
209
def test_InsertAclRuleBetweenPriorities (self , dvs ):
234
- self .setup_dvs_acl (dvs )
235
210
236
211
bind_ports = ["Ethernet0" , "Ethernet4" ]
237
212
self .dvs_acl .create_acl_table ("test_priorities" , "L3" , bind_ports )
@@ -283,10 +258,9 @@ def test_InsertAclRuleBetweenPriorities(self, dvs):
283
258
self .dvs_acl .verify_no_acl_rules ()
284
259
285
260
self .dvs_acl .remove_acl_table ("test_priorities" )
286
- self .dvs_acl .verify_no_acl_tables ( )
261
+ self .dvs_acl .verify_acl_table_count ( 0 )
287
262
288
263
def test_RulesWithDiffMaskLengths (self , dvs ):
289
- self .setup_dvs_acl (dvs )
290
264
291
265
bind_ports = ["Ethernet0" , "Ethernet4" ]
292
266
self .dvs_acl .create_acl_table ("test_masks" , "L3" , bind_ports )
@@ -331,10 +305,9 @@ def test_RulesWithDiffMaskLengths(self, dvs):
331
305
self .dvs_acl .verify_no_acl_rules ()
332
306
333
307
self .dvs_acl .remove_acl_table ("test_masks" )
334
- self .dvs_acl .verify_no_acl_tables ( )
308
+ self .dvs_acl .verify_acl_table_count ( 0 )
335
309
336
310
def test_AclRuleIcmp (self , dvs ):
337
- self .setup_dvs_acl (dvs )
338
311
339
312
bind_ports = ["Ethernet0" , "Ethernet4" ]
340
313
self .dvs_acl .create_acl_table ("test_icmp" , "L3" , bind_ports )
@@ -356,10 +329,9 @@ def test_AclRuleIcmp(self, dvs):
356
329
self .dvs_acl .verify_no_acl_rules ()
357
330
358
331
self .dvs_acl .remove_acl_table ("test_icmp" )
359
- self .dvs_acl .verify_no_acl_tables ( )
332
+ self .dvs_acl .verify_acl_table_count ( 0 )
360
333
361
334
def test_AclRuleIcmpV6 (self , dvs ):
362
- self .setup_dvs_acl (dvs )
363
335
364
336
bind_ports = ["Ethernet0" , "Ethernet4" ]
365
337
self .dvs_acl .create_acl_table ("test_icmpv6" , "L3V6" , bind_ports )
@@ -381,13 +353,12 @@ def test_AclRuleIcmpV6(self, dvs):
381
353
self .dvs_acl .verify_no_acl_rules ()
382
354
383
355
self .dvs_acl .remove_acl_table ("test_icmpv6" )
384
- self .dvs_acl .verify_no_acl_tables ( )
356
+ self .dvs_acl .verify_acl_table_count ( 0 )
385
357
386
358
def test_AclRuleRedirectToNextHop (self , dvs ):
387
359
# NOTE: set_interface_status has a dependency on cdb within dvs,
388
360
# so we still need to setup the db. This should be refactored.
389
361
dvs .setup_db ()
390
- self .setup_dvs_acl (dvs )
391
362
392
363
# Bring up an IP interface with a neighbor
393
364
dvs .set_interface_status ("Ethernet4" , "up" )
@@ -413,15 +384,16 @@ def test_AclRuleRedirectToNextHop(self, dvs):
413
384
self .dvs_acl .verify_no_acl_rules ()
414
385
415
386
self .dvs_acl .remove_acl_table ("test_redirect" )
416
- self .dvs_acl .verify_no_acl_tables ( )
387
+ self .dvs_acl .verify_acl_table_count ( 0 )
417
388
418
389
# Clean up the IP interface and neighbor
419
390
dvs .remove_neighbor ("Ethernet4" , "10.0.0.2" )
420
391
dvs .remove_ip_address ("Ethernet4" , "10.0.0.1/24" )
421
392
dvs .set_interface_status ("Ethernet4" , "down" )
422
393
423
394
424
- class TestAclRuleValidation (BaseTestAcl ):
395
+ @pytest .mark .usefixtures ('dvs_acl_manager' )
396
+ class TestAclRuleValidation ():
425
397
"""
426
398
Test class for cases that check if orchagent corectly validates
427
399
ACL rules input
@@ -450,7 +422,6 @@ def test_AclActionValidation(self, dvs):
450
422
to check the case when orchagent refuses to process rules with action that is not
451
423
supported by the ASIC.
452
424
"""
453
- self .setup_dvs_acl (dvs )
454
425
455
426
stage_name_map = {
456
427
"ingress" : "SAI_SWITCH_ATTR_ACL_STAGE_INGRESS" ,
0 commit comments