Skip to content

Commit 623bfc8

Browse files
committed
[portsorch]: Add VS UTs.
Signed-off-by: Nazarii Hnydyn <[email protected]>
1 parent 7f19050 commit 623bfc8

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

tests/test_acl_portchannel.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,87 @@
11
import time
22
import pytest
3+
import logging
34

45
from swsscommon import swsscommon
56

67

8+
logging.basicConfig(level=logging.INFO)
9+
acllogger = logging.getLogger(__name__)
10+
11+
12+
@pytest.fixture(autouse=True, scope="class")
13+
def dvs_api(request, dvs_acl):
14+
# Fixtures are created when first requested by a test, and are destroyed based on their scope
15+
if request.cls is None:
16+
yield
17+
return
18+
acllogger.info("Initialize DVS API: ACL")
19+
request.cls.dvs_acl = dvs_acl
20+
yield
21+
acllogger.info("Deinitialize DVS API: ACL")
22+
del request.cls.dvs_acl
23+
24+
25+
@pytest.mark.usefixtures("dvs_lag_manager")
26+
class TestAclInterfaceBinding:
27+
@pytest.mark.parametrize("stage", ["ingress", "egress"])
28+
def test_AclTablePortChannelMemberBinding(self, testlog, stage):
29+
"""Verify that LAG member creation is prohibited when ACL binding is configured
30+
31+
The test flow:
32+
1. Create ACL table and bind Ethernet124
33+
2. Verify ACL table has been successfully added
34+
3. Create LAG
35+
4. Verify LAG has been successfully added
36+
5. Create LAG member Ethernet120
37+
6. Verify LAG member has been successfully added
38+
7. Create LAG member Ethernet124
39+
8. Verify LAG member hasn't been added because of active ACL binding
40+
41+
Args:
42+
testlog: test start/end log record injector
43+
stage: ACL table stage (e.g., ingress/egress)
44+
"""
45+
try:
46+
acllogger.info("Create ACL table: acl_table")
47+
self.dvs_acl.create_acl_table(
48+
table_name="acl_table",
49+
table_type="L3",
50+
ports=["Ethernet124"],
51+
stage=stage
52+
)
53+
self.dvs_acl.verify_acl_table_count(1)
54+
55+
acllogger.info("Create LAG: PortChannel0001")
56+
self.dvs_lag.create_port_channel("0001")
57+
self.dvs_lag.get_and_verify_port_channel(1)
58+
59+
acllogger.info("Create LAG member: Ethernet120")
60+
self.dvs_lag.create_port_channel_member("0001", "Ethernet120")
61+
self.dvs_lag.get_and_verify_port_channel_members(1)
62+
63+
acllogger.info("Create LAG member: Ethernet124")
64+
self.dvs_lag.create_port_channel_member("0001", "Ethernet124")
65+
acllogger.info("Verify LAG member hasn't been created: Ethernet124")
66+
self.dvs_lag.get_and_verify_port_channel_members(1)
67+
finally:
68+
acllogger.info("Remove LAG member: Ethernet124")
69+
self.dvs_lag.remove_port_channel_member("0001", "Ethernet124")
70+
self.dvs_lag.get_and_verify_port_channel_members(1)
71+
72+
acllogger.info("Remove LAG member: Ethernet120")
73+
self.dvs_lag.remove_port_channel_member("0001", "Ethernet120")
74+
self.dvs_lag.get_and_verify_port_channel_members(0)
75+
76+
acllogger.info("Remove LAG: PortChannel0001")
77+
self.dvs_lag.remove_port_channel("0001")
78+
self.dvs_lag.get_and_verify_port_channel(0)
79+
80+
acllogger.info("Remove ACL table: acl_table")
81+
self.dvs_acl.remove_acl_table("acl_table")
82+
self.dvs_acl.verify_acl_table_count(0)
83+
84+
785
class TestPortChannelAcl(object):
886
def setup_db(self, dvs):
987
self.pdb = swsscommon.DBConnector(0, dvs.redis_sock, 0)

0 commit comments

Comments
 (0)