Skip to content

Commit 241724b

Browse files
wendaniDavidZagury
authored andcommitted
[vstest/subintf] Update vs tests to validate physical port host interface vlan tag attribute (sonic-net#1634)
* Check vlan tag attribute for parent port being physical port Signed-off-by: Wenda Ni <[email protected]>
1 parent 665e39f commit 241724b

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

tests/test_sub_port_intf.py

+54
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
CFG_VLAN_SUB_INTF_TABLE_NAME = "VLAN_SUB_INTERFACE"
1010
CFG_PORT_TABLE_NAME = "PORT"
1111
CFG_LAG_TABLE_NAME = "PORTCHANNEL"
12+
CFG_LAG_MEMBER_TABLE_NAME = "PORTCHANNEL_MEMBER"
1213

1314
STATE_PORT_TABLE_NAME = "PORT_TABLE"
1415
STATE_LAG_TABLE_NAME = "LAG_TABLE"
@@ -24,6 +25,8 @@
2425
ASIC_NEXT_HOP_TABLE = "ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP"
2526
ASIC_NEXT_HOP_GROUP_TABLE = "ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP_GROUP"
2627
ASIC_NEXT_HOP_GROUP_MEMBER_TABLE = "ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER"
28+
ASIC_LAG_MEMBER_TABLE = "ASIC_STATE:SAI_OBJECT_TYPE_LAG_MEMBER"
29+
ASIC_HOSTIF_TABLE = "ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF"
2730

2831
ADMIN_STATUS = "admin_status"
2932

@@ -36,6 +39,7 @@
3639
class TestSubPortIntf(object):
3740
SUB_PORT_INTERFACE_UNDER_TEST = "Ethernet64.10"
3841
LAG_SUB_PORT_INTERFACE_UNDER_TEST = "PortChannel1.20"
42+
LAG_MEMBERS_UNDER_TEST = ["Ethernet68", "Ethernet72"]
3943

4044
IPV4_ADDR_UNDER_TEST = "10.0.0.33/31"
4145
IPV4_TOME_UNDER_TEST = "10.0.0.33/32"
@@ -91,6 +95,13 @@ def create_sub_port_intf_profile(self, sub_port_intf_name):
9195

9296
self.config_db.create_entry(CFG_VLAN_SUB_INTF_TABLE_NAME, sub_port_intf_name, fvs)
9397

98+
def add_lag_members(self, lag, members):
99+
fvs = {"NULL": "NULL"}
100+
101+
for member in members:
102+
key = "{}|{}".format(lag, member)
103+
self.config_db.create_entry(CFG_LAG_MEMBER_TABLE_NAME, key, fvs)
104+
94105
def add_sub_port_intf_ip_addr(self, sub_port_intf_name, ip_addr):
95106
fvs = {"NULL": "NULL"}
96107

@@ -102,6 +113,11 @@ def set_sub_port_intf_admin_status(self, sub_port_intf_name, status):
102113

103114
self.config_db.create_entry(CFG_VLAN_SUB_INTF_TABLE_NAME, sub_port_intf_name, fvs)
104115

116+
def remove_lag_members(self, lag, members):
117+
for member in members:
118+
key = "{}|{}".format(lag, member)
119+
self.config_db.delete_entry(CFG_LAG_MEMBER_TABLE_NAME, key)
120+
105121
def remove_sub_port_intf_profile(self, sub_port_intf_name):
106122
self.config_db.delete_entry(CFG_VLAN_SUB_INTF_TABLE_NAME, sub_port_intf_name)
107123

@@ -186,13 +202,19 @@ def _test_sub_port_intf_creation(self, dvs, sub_port_intf_name):
186202
vlan_id = substrs[1]
187203
if parent_port.startswith(ETHERNET_PREFIX):
188204
state_tbl_name = STATE_PORT_TABLE_NAME
205+
phy_ports = [parent_port]
189206
else:
190207
assert parent_port.startswith(LAG_PREFIX)
191208
state_tbl_name = STATE_LAG_TABLE_NAME
209+
phy_ports = self.LAG_MEMBERS_UNDER_TEST
192210

193211
old_rif_oids = self.get_oids(ASIC_RIF_TABLE)
194212

195213
self.set_parent_port_admin_status(dvs, parent_port, "up")
214+
# Add lag members to test physical port host interface vlan tag attribute
215+
if parent_port.startswith(LAG_PREFIX):
216+
self.add_lag_members(parent_port, self.LAG_MEMBERS_UNDER_TEST)
217+
self.asic_db.wait_for_n_keys(ASIC_LAG_MEMBER_TABLE, len(self.LAG_MEMBERS_UNDER_TEST))
196218
self.create_sub_port_intf_profile(sub_port_intf_name)
197219

198220
# Verify that sub port interface state ok is pushed to STATE_DB by Intfmgrd
@@ -218,10 +240,23 @@ def _test_sub_port_intf_creation(self, dvs, sub_port_intf_name):
218240
rif_oid = self.get_newly_created_oid(ASIC_RIF_TABLE, old_rif_oids)
219241
self.check_sub_port_intf_fvs(self.asic_db, ASIC_RIF_TABLE, rif_oid, fv_dict)
220242

243+
# Verify physical port host interface vlan tag attribute
244+
fv_dict = {
245+
"SAI_HOSTIF_ATTR_VLAN_TAG": "SAI_HOSTIF_VLAN_TAG_KEEP",
246+
}
247+
for phy_port in phy_ports:
248+
hostif_oid = dvs.asicdb.hostifnamemap[phy_port]
249+
self.check_sub_port_intf_fvs(self.asic_db, ASIC_HOSTIF_TABLE, hostif_oid, fv_dict)
250+
221251
# Remove a sub port interface
222252
self.remove_sub_port_intf_profile(sub_port_intf_name)
223253
self.check_sub_port_intf_profile_removal(rif_oid)
224254

255+
# Remove lag members from lag parent port
256+
if parent_port.startswith(LAG_PREFIX):
257+
self.remove_lag_members(parent_port, self.LAG_MEMBERS_UNDER_TEST)
258+
self.asic_db.wait_for_n_keys(ASIC_LAG_MEMBER_TABLE, 0)
259+
225260
def test_sub_port_intf_creation(self, dvs):
226261
self.connect_dbs(dvs)
227262

@@ -427,13 +462,19 @@ def _test_sub_port_intf_removal(self, dvs, sub_port_intf_name):
427462
parent_port = substrs[0]
428463
if parent_port.startswith(ETHERNET_PREFIX):
429464
state_tbl_name = STATE_PORT_TABLE_NAME
465+
phy_ports = [parent_port]
430466
else:
431467
assert parent_port.startswith(LAG_PREFIX)
432468
state_tbl_name = STATE_LAG_TABLE_NAME
469+
phy_ports = self.LAG_MEMBERS_UNDER_TEST
433470

434471
old_rif_oids = self.get_oids(ASIC_RIF_TABLE)
435472

436473
self.set_parent_port_admin_status(dvs, parent_port, "up")
474+
# Add lag members to test physical port host interface vlan tag attribute
475+
if parent_port.startswith(LAG_PREFIX):
476+
self.add_lag_members(parent_port, self.LAG_MEMBERS_UNDER_TEST)
477+
self.asic_db.wait_for_n_keys(ASIC_LAG_MEMBER_TABLE, len(self.LAG_MEMBERS_UNDER_TEST))
437478
self.create_sub_port_intf_profile(sub_port_intf_name)
438479

439480
self.add_sub_port_intf_ip_addr(sub_port_intf_name, self.IPV4_ADDR_UNDER_TEST)
@@ -471,6 +512,19 @@ def _test_sub_port_intf_removal(self, dvs, sub_port_intf_name):
471512
# Verify that sub port router interface entry is removed from ASIC_DB
472513
self.check_sub_port_intf_key_removal(self.asic_db, ASIC_RIF_TABLE, rif_oid)
473514

515+
# Verify physical port host interface vlan tag attribute
516+
fv_dict = {
517+
"SAI_HOSTIF_ATTR_VLAN_TAG": "SAI_HOSTIF_VLAN_TAG_STRIP",
518+
}
519+
for phy_port in phy_ports:
520+
hostif_oid = dvs.asicdb.hostifnamemap[phy_port]
521+
self.check_sub_port_intf_fvs(self.asic_db, ASIC_HOSTIF_TABLE, hostif_oid, fv_dict)
522+
523+
# Remove lag members from lag parent port
524+
if parent_port.startswith(LAG_PREFIX):
525+
self.remove_lag_members(parent_port, self.LAG_MEMBERS_UNDER_TEST)
526+
self.asic_db.wait_for_n_keys(ASIC_LAG_MEMBER_TABLE, 0)
527+
474528
def test_sub_port_intf_removal(self, dvs):
475529
self.connect_dbs(dvs)
476530

0 commit comments

Comments
 (0)