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