Skip to content

Commit

Permalink
Refactor DPB-VLAN test cases based on DVSlib
Browse files Browse the repository at this point in the history
  • Loading branch information
Vasant committed May 7, 2020
1 parent c929524 commit 90141af
Show file tree
Hide file tree
Showing 3 changed files with 191 additions and 263 deletions.
9 changes: 9 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from swsscommon import swsscommon
from dvslib import dvs_database as dvs_db
from dvslib import dvs_acl
from dvslib import dvs_vlan

def ensure_system(cmd):
(rc, output) = commands.getstatusoutput(cmd)
Expand Down Expand Up @@ -1009,6 +1010,14 @@ def testlog(request, dvs):
yield testlog
dvs.runcmd("logger === finish test %s ===" % request.node.name)

@pytest.yield_fixture(scope="class")
def dvs_vlan_manager(request, dvs):
request.cls.dvs_vlan = dvs_vlan.DVSVlan(dvs.get_asic_db(),
dvs.get_config_db(),
dvs.get_state_db(),
dvs.get_counters_db(),
dvs.get_app_db())

@pytest.yield_fixture(scope="class")
def dvs_acl_manager(request, dvs):
request.cls.dvs_acl = dvs_acl.DVSAcl(dvs.get_asic_db(),
Expand Down
84 changes: 47 additions & 37 deletions tests/test_port_dpb_vlan.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from port_dpb import DPB

@pytest.mark.usefixtures('dpb_setup_fixture')
@pytest.mark.usefixtures('dvs_vlan_manager')
class TestPortDPBVlan(object):
def check_syslog(self, dvs, marker, log, expected_cnt):
(exitcode, num) = dvs.runcmd(['sh', '-c', "awk \'/%s/,ENDFILE {print;}\' /var/log/syslog | grep \"%s\" | wc -l" % (marker, log)])
Expand All @@ -19,13 +20,14 @@ def check_syslog(self, dvs, marker, log, expected_cnt):
@pytest.mark.skip()
'''
def test_dependency(self, dvs):

vlan = "100"
dpb = DPB()
dvs.setup_db()
p = Port(dvs, "Ethernet0")
p.sync_from_config_db()
dvs.create_vlan("100")
self.dvs_vlan.create_vlan(vlan)
#print "Created VLAN100"
dvs.create_vlan_member("100", p.get_name())
self.dvs_vlan.create_vlan_member(vlan, p.get_name())
#print "Added Ethernet0 to VLAN100"
marker = dvs.add_log_marker()
p.delete_from_config_db()
Expand All @@ -34,7 +36,7 @@ def test_dependency(self, dvs):
self.check_syslog(dvs, marker, "Cannot remove port as bridge port OID is present", 1)
assert(p.exists_in_asic_db() == True)

dvs.remove_vlan_member("100", p.get_name())
self.dvs_vlan.remove_vlan_member(vlan, p.get_name())
time.sleep(1)
# Verify that port is deleted
assert(p.exists_in_asic_db() == False)
Expand All @@ -49,19 +51,21 @@ def test_dependency(self, dvs):
p.verify_asic_db()
#print "ASIC DB verification passed!"

dvs.remove_vlan("100")
self.dvs_vlan.remove_vlan(vlan)

'''
@pytest.mark.skip()
'''
def test_one_port_one_vlan(self, dvs):
dpb = DPB()
dvs.setup_db()
vlan = "100"

# Breakout testing with VLAN dependency
dvs.create_vlan("100")
self.dvs_vlan.create_vlan(vlan)
vlan_oid = self.dvs_vlan.get_and_verify_vlan_ids(1)[0]
#print "Created VLAN100"
dvs.create_vlan_member("100", "Ethernet0")
self.dvs_vlan.create_vlan_member(vlan, "Ethernet0")
self.dvs_vlan.get_and_verify_vlan_member_ids(1)
#print "Added Ethernet0 to VLAN100"

p = Port(dvs, "Ethernet0")
Expand All @@ -72,17 +76,20 @@ def test_one_port_one_vlan(self, dvs):
assert(p.exists_in_asic_db() == True)
#print "Ethernet0 deleted from config DB and APP DB, waiting to be removed from VLAN"

dvs.remove_vlan_member("100", "Ethernet0")
time.sleep(1)
self.dvs_vlan.remove_vlan_member(vlan, "Ethernet0")
self.dvs_vlan.get_and_verify_vlan_member_ids(0)
assert(p.exists_in_asic_db() == False)
#print "Ethernet0 removed from VLAN and also from ASIC DB"

dpb.create_child_ports(dvs, p, 4)

# Breakin testing with VLAN dependency
port_names = ["Ethernet0", "Ethernet1", "Ethernet2", "Ethernet3"]
vlan_member_count = 0
for pname in port_names:
dvs.create_vlan_member("100", pname)
self.dvs_vlan.create_vlan_member(vlan, pname)
vlan_member_count = vlan_member_count + 1
self.dvs_vlan.get_and_verify_vlan_member_ids(vlan_member_count)
#print "Add %s to VLAN"%port_names

child_ports = []
Expand All @@ -97,8 +104,9 @@ def test_one_port_one_vlan(self, dvs):
#print "Deleted %s from config DB and APP DB"%port_names

for cp in child_ports:
dvs.remove_vlan_member("100", cp.get_name())
time.sleep(1)
self.dvs_vlan.remove_vlan_member(vlan, cp.get_name())
vlan_member_count = vlan_member_count - 1
self.dvs_vlan.get_and_verify_vlan_member_ids(vlan_member_count)
assert(cp.exists_in_asic_db() == False)
#print "Deleted %s from VLAN"%port_names

Expand All @@ -111,22 +119,22 @@ def test_one_port_one_vlan(self, dvs):
p.verify_asic_db()
#print "ASIC DB verification passed!"

dvs.remove_vlan("100")
self.dvs_vlan.remove_vlan(vlan)

'''
@pytest.mark.skip()
'''
def test_one_port_multiple_vlan(self, dvs):
dpb = DPB()
dvs.setup_db()

dvs.create_vlan("100")
dvs.create_vlan("101")
dvs.create_vlan("102")
dpb = DPB()
vlans = ["100", "101", "102"]
for vlan in vlans:
self.dvs_vlan.create_vlan(vlan)
#print "Created VLAN100, VLAN101, and VLAN102"
dvs.create_vlan_member("100", "Ethernet0")
dvs.create_vlan_member("101", "Ethernet0")
dvs.create_vlan_member("102", "Ethernet0")

for vlan in vlans:
self.dvs_vlan.create_vlan_member(vlan, "Ethernet0")
self.dvs_vlan.get_and_verify_vlan_member_ids(len(vlans))
#print "Added Ethernet0 to all three VLANs"

p = Port(dvs, "Ethernet0")
Expand All @@ -137,20 +145,20 @@ def test_one_port_multiple_vlan(self, dvs):
assert(p.exists_in_asic_db() == True)
#print "Ethernet0 deleted from config DB and APP DB, waiting to be removed from VLANs"

dvs.remove_vlan_member("100", "Ethernet0")
time.sleep(1)
self.dvs_vlan.remove_vlan_member(vlans[0], "Ethernet0")
self.dvs_vlan.get_and_verify_vlan_member_ids(len(vlans)-1)
assert(p.exists_in_asic_db() == True)
#print "Ethernet0 removed from VLAN100 and its still present in ASIC DB"

dvs.remove_vlan_member("101", "Ethernet0")
time.sleep(1)
self.dvs_vlan.remove_vlan_member(vlans[1], "Ethernet0")
self.dvs_vlan.get_and_verify_vlan_member_ids(len(vlans)-2)
assert(p.exists_in_asic_db() == True)
#print "Ethernet0 removed from VLAN101 and its still present in ASIC DB"

dvs.remove_vlan_member("102", "Ethernet0")
time.sleep(1)
self.dvs_vlan.remove_vlan_member(vlans[2], "Ethernet0")
self.dvs_vlan.get_and_verify_vlan_member_ids(0)
assert(p.exists_in_asic_db() == False)
#print "Ethernet0 removed from VLAN101 and also from ASIC DB"
#print "Ethernet0 removed from VLAN102 and also from ASIC DB"

dpb.create_child_ports(dvs, p, 4)
#print "1X40G ---> 4x10G verified"
Expand All @@ -174,9 +182,9 @@ def test_one_port_multiple_vlan(self, dvs):
#print "Added port:%s and verified all DBs"%p.get_name()

# Remove all three VLANs
dvs.remove_vlan("100")
dvs.remove_vlan("101")
dvs.remove_vlan("102")
self.dvs_vlan.remove_vlan("100")
self.dvs_vlan.remove_vlan("101")
self.dvs_vlan.remove_vlan("102")
#print "All three VLANs removed"

'''
Expand All @@ -197,13 +205,14 @@ def test_all_port_10_vlans(self, dvs):
vlan_names.append(str(start_vlan + i))

for vlan_name in vlan_names:
dvs.create_vlan(vlan_name)
self.dvs_vlan.create_vlan(vlan_name)
#print "%d VLANs created"%num_vlans

for port_name in port_names:
for vlan_name in vlan_names:
dvs.create_vlan_member_tagged(vlan_name, port_name)
self.dvs_vlan.create_vlan_member(vlan_name, port_name, tagging_mode = "tagged")
#print "All %d ports are added to all %d VLANs"%(num_ports,num_vlans)
self.dvs_vlan.get_and_verify_vlan_member_ids(num_ports*num_vlans)

ports = []
for port_name in port_names:
Expand All @@ -216,8 +225,9 @@ def test_all_port_10_vlans(self, dvs):
assert(p.exists_in_app_db() == False)
assert(p.exists_in_asic_db() == True)
for vlan_name in vlan_names:
dvs.remove_vlan_member(vlan_name, port_name)
time.sleep(1)
self.dvs_vlan.remove_vlan_member(vlan_name, port_name)

self.dvs_vlan.get_and_verify_vlan_member_ids((num_ports*num_vlans)-(len(ports)*num_vlans))
assert(p.exists_in_asic_db() == False)
#print "All %d ports are removed from all %d VLANs and deleted"%(num_ports,num_vlans)

Expand All @@ -229,5 +239,5 @@ def test_all_port_10_vlans(self, dvs):
#print "Re-created all %d ports"%num_ports

for vlan_name in vlan_names:
dvs.remove_vlan(vlan_name)
self.dvs_vlan.remove_vlan(vlan_name)
#print "All %d VLANs removed"%num_vlans
Loading

0 comments on commit 90141af

Please sign in to comment.