Skip to content

Commit c74dc60

Browse files
authored
[vstest]: use eth1~32 as physical interface name in vs docker (sonic-net#700)
* [vstest]: use eth1~32 as physical interface name in vs docker align with vs kvm image physical interface name ethXX instead of vEthernetXXX * clean up network between test modules and various test fixes Signed-off-by: Guohan Lu <[email protected]>
1 parent 6007e7f commit c74dc60

File tree

4 files changed

+48
-18
lines changed

4 files changed

+48
-18
lines changed

tests/conftest.py

+38-11
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,18 @@ def __init__(self, dvs):
7979
self.neighTbl = swsscommon.Table(appl_db, "NEIGH_TABLE")
8080

8181
def __del__(self):
82-
# Make sure no neighbors on vEthernet
83-
keys = self.neighTbl.getKeys();
82+
# Make sure no neighbors on physical interfaces
83+
keys = self.neighTbl.getKeys()
8484
for key in keys:
85-
assert not key.startswith("vEthernet")
85+
m = re.match("eth(\d+)", key)
86+
if not m:
87+
continue
88+
assert int(m.group(1)) > 0
8689

8790
class VirtualServer(object):
8891
def __init__(self, ctn_name, pid, i):
8992
self.nsname = "%s-srv%d" % (ctn_name, i)
90-
self.vifname = "vEthernet%d" % (i * 4)
93+
self.pifname = "eth%d" % (i + 1)
9194
self.cleanup = True
9295

9396
# create netns
@@ -97,21 +100,21 @@ def __init__(self, ctn_name, pid, i):
97100
ensure_system("ip netns add %s" % self.nsname)
98101

99102
# create vpeer link
100-
ensure_system("ip link add %s type veth peer name %s" % (self.nsname[0:12], self.vifname))
103+
ensure_system("ip link add %s type veth peer name %s" % (self.nsname[0:12], self.pifname))
101104
ensure_system("ip link set %s netns %s" % (self.nsname[0:12], self.nsname))
102-
ensure_system("ip link set %s netns %d" % (self.vifname, pid))
105+
ensure_system("ip link set %s netns %d" % (self.pifname, pid))
103106

104107
# bring up link in the virtual server
105108
ensure_system("ip netns exec %s ip link set dev %s name eth0" % (self.nsname, self.nsname[0:12]))
106109
ensure_system("ip netns exec %s ip link set dev eth0 up" % (self.nsname))
107110
ensure_system("ip netns exec %s ethtool -K eth0 tx off" % (self.nsname))
108111

109112
# bring up link in the virtual switch
110-
ensure_system("nsenter -t %d -n ip link set dev %s up" % (pid, self.vifname))
113+
ensure_system("nsenter -t %d -n ip link set dev %s up" % (pid, self.pifname))
111114

112-
# disable arp, so no neigh on vEthernet(s)
113-
ensure_system("nsenter -t %d -n ip link set arp off dev %s" % (pid, self.vifname))
114-
ensure_system("nsenter -t %d -n sysctl -w net.ipv6.conf.%s.disable_ipv6=1" % (pid, self.vifname))
115+
# disable arp, so no neigh on physical interfaces
116+
ensure_system("nsenter -t %d -n ip link set arp off dev %s" % (pid, self.pifname))
117+
ensure_system("nsenter -t %d -n sysctl -w net.ipv6.conf.%s.disable_ipv6=1" % (pid, self.pifname))
115118

116119
def destroy(self):
117120
if self.cleanup:
@@ -188,6 +191,7 @@ def __init__(self, name=None, keeptb=False):
188191

189192
self.mount = "/var/run/redis-vs/{}".format(ctn_sw_name)
190193

194+
self.net_cleanup()
191195
self.restart()
192196
else:
193197
self.ctn_sw = self.client.containers.run('debian:jessie', privileged=True, detach=True,
@@ -216,7 +220,7 @@ def __init__(self, name=None, keeptb=False):
216220
# temp fix: remove them once they are moved to vs start.sh
217221
self.ctn.exec_run("sysctl -w net.ipv6.conf.default.disable_ipv6=0")
218222
for i in range(0, 128, 4):
219-
self.ctn.exec_run("sysctl -w net.ipv6.conf.vEthernet%d.disable_ipv6=1" % i)
223+
self.ctn.exec_run("sysctl -w net.ipv6.conf.eth%d.disable_ipv6=1" % (i + 1))
220224
self.check_ready()
221225
self.init_asicdb_validator()
222226
self.appldb = ApplDbValidator(self)
@@ -276,6 +280,29 @@ def check_ready(self, timeout=30):
276280

277281
time.sleep(1)
278282

283+
def net_cleanup(self):
284+
"""clean up network, remove extra links"""
285+
286+
re_space = re.compile('\s+')
287+
288+
res = self.ctn.exec_run("ip link show")
289+
try:
290+
out = res.output
291+
except AttributeError:
292+
out = res
293+
for l in out.split('\n'):
294+
m = re.compile('^\d+').match(l)
295+
if not m:
296+
continue
297+
fds = re_space.split(l)
298+
if len(fds) > 1:
299+
pname = fds[1].rstrip(":")
300+
m = re.compile("(eth|lo|Bridge|Ethernet)").match(pname)
301+
if not m:
302+
self.ctn.exec_run("ip link del {}".format(pname))
303+
print "remove extra link {}".format(pname)
304+
return
305+
279306
def restart(self):
280307
self.ctn.restart()
281308

tests/test_acl_portchannel.py

+6
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ def test_PortChannelAfterAcl(self, dvs):
134134
# create ACL table
135135
self.create_acl_table(dvs, "LAG_ACL_TABLE", "PortChannel01")
136136

137+
time.sleep(1)
138+
137139
# check ASIC table
138140
self.check_asic_table_existed(dvs)
139141

@@ -154,6 +156,8 @@ def test_PortChannelBeforeAcl(self, dvs):
154156
# create port channel
155157
self.create_port_channel(dvs, "PortChannel01")
156158

159+
time.sleep(1)
160+
157161
# check ASIC table
158162
self.check_asic_table_existed(dvs)
159163

@@ -179,6 +183,8 @@ def test_AclOnPortChannelMember(self, dvs):
179183
# create ACL table
180184
self.create_acl_table(dvs, "LAG_ACL_TABLE", "Ethernet0")
181185

186+
time.sleep(1)
187+
182188
# check ASIC table
183189
self.check_asic_table_absent(dvs)
184190

tests/test_admin_status.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ def test_PortChannelMemberAdminStatus(self, dvs, testlog):
7070
self.check_admin_status(dvs, "Ethernet8", "up")
7171

7272
# remove port channel members
73-
self.remove_port_channel_members(dvs, "PortCHannel6",
73+
self.remove_port_channel_members(dvs, "PortChannel6",
7474
["Ethernet0", "Ethernet4", "Ethernet8"])
7575

7676
# remove port channel
77-
self.remove_port_channel(dvs, "PortCHannel6")
77+
self.remove_port_channel(dvs, "PortChannel6")

tests/test_speed.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,13 @@ def test_SpeedAndBufferSet(self, dvs, testlog):
2828

2929
buffer_profiles = cfg_buffer_profile_table.getKeys()
3030
expected_buffer_profiles_num = len(buffer_profiles)
31-
# buffers.json used for the test defines 7 static profiles:
31+
# buffers.json used for the test defines 4 static profiles:
3232
# "ingress_lossless_profile"
3333
# "ingress_lossy_profile"
3434
# "egress_lossless_profile"
3535
# "egress_lossy_profile"
36-
# "pg_lossy_profile"
37-
# "q_lossless_profile"
38-
# "q_lossy_profile"
3936
# check if they get the DB
40-
assert expected_buffer_profiles_num == 7
37+
assert expected_buffer_profiles_num == 4
4138
# and if they were successfully created on ASIC
4239
assert len(asic_profile_table.getKeys()) == expected_buffer_profiles_num
4340

0 commit comments

Comments
 (0)