Example #1
0
 def verify_only_ports_exist(self, dvs, port_names):
     all_port_names = ["Ethernet0", "Ethernet1", "Ethernet2", "Ethernet3"]
     for port_name in all_port_names:
         p = Port(dvs, port_name)
         if port_name in port_names:
             assert (p.exists_in_config_db() == True)
             assert (p.exists_in_app_db() == True)
             assert (p.exists_in_asic_db() == True)
         else:
             assert (p.exists_in_config_db() == False)
             assert (p.exists_in_app_db() == False)
             assert (p.exists_in_asic_db() == False)
    def test_one_port_one_vlan(self, dvs):
        dpb = DPB()
        vlan = "100"

        # 1. Create VLAN100 and add Ethernet0 as member
        self.dvs_vlan.create_vlan(vlan)
        self.dvs_vlan.create_vlan_member(vlan, "Ethernet0")
        self.dvs_vlan.get_and_verify_vlan_member_ids(1)

        # 2. Delete Ethernet0 from config DB. Verify that its deleted
        #    CONFIG and APPL DB and its still present in ASIC DB
        p = Port(dvs, "Ethernet0")
        p.sync_from_config_db()
        p.delete_from_config_db()
        assert (p.exists_in_config_db() == False)
        assert (p.exists_in_app_db() == False)
        assert (p.exists_in_asic_db() == True)

        # 3. Verify that Ethernet0 gets deleted from ASIC DB once
        #    its removed from VLAN100.
        self.dvs_vlan.remove_vlan_member(vlan, "Ethernet0")
        self.dvs_vlan.get_and_verify_vlan_member_ids(0)
        assert (p.not_exists_in_asic_db() == True)

        # 4. To simulate port breakout, 1x100G --> 4x25G, create 4 ports
        dpb.create_child_ports(dvs, p, 4)

        # 5. Add all 4 ports to VLAN100
        port_names = ["Ethernet0", "Ethernet1", "Ethernet2", "Ethernet3"]
        vlan_member_count = 0
        for pname in port_names:
            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)

        # 6. Delete 4 ports from CONFIG DB. Verify that they are all deleted
        #    from CONFIG and APPL DB but still present in ASIC DB
        child_ports = []
        for pname in port_names:
            cp = Port(dvs, pname)
            cp.sync_from_config_db()
            cp.delete_from_config_db()
            assert (cp.exists_in_config_db() == False)
            assert (cp.exists_in_app_db() == False)
            assert (cp.exists_in_asic_db() == True)
            child_ports.append(cp)

        # 7. Remove all 4 ports from VLAN100 and verify that they all get
        #    deleted from ASIC DB
        for cp in child_ports:
            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.not_exists_in_asic_db() == True)

        # 8. Re-create Ethernet0 and verify that its created all 3 DBs
        p.write_to_config_db()
        p.verify_config_db()
        p.verify_app_db()
        p.verify_asic_db()

        # 9. Remove VLAN100 and verify the same
        self.dvs_vlan.remove_vlan(vlan)
        self.dvs_vlan.get_and_verify_vlan_ids(0)
    def test_all_port_10_vlans(self, dvs):
        num_vlans = 10
        start_vlan = 100
        num_ports = 32
        port_names = []
        vlan_names = []

        dvs.setup_db()
        for i in range(num_ports):
            port_names.append("Ethernet" + str(i * 4))

        for i in range(num_vlans):
            vlan_names.append(str(start_vlan + i))

        # 1. Create 10 VLANs
        for vlan_name in vlan_names:
            self.dvs_vlan.create_vlan(vlan_name)

        # 2. Add all 32 ports to all 10 VLANs
        for port_name in port_names:
            for vlan_name in vlan_names:
                self.dvs_vlan.create_vlan_member(vlan_name,
                                                 port_name,
                                                 tagging_mode="tagged")
        self.dvs_vlan.get_and_verify_vlan_member_ids(num_ports * num_vlans)

        # 3. Do the following for each port
        #    3.1. Delete port from CONFIG DB and verify that its deleted from
        #         CONFIG DB and APPL DB but not from ASIC DB.
        #    3.2. Remove the port from all 10 VLANs and verify that it
        #         gets deleted from ASIC DB
        ports = []
        for port_name in port_names:
            p = Port(dvs, port_name)
            ports.append(p)
            p.sync_from_config_db()
            p.delete_from_config_db()
            assert (p.exists_in_config_db() == False)
            assert (p.exists_in_app_db() == False)
            assert (p.exists_in_asic_db() == True)
            for vlan_name in vlan_names:
                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.not_exists_in_asic_db() == True)

        # 4. Re-create all ports and verify the same
        for p in ports:
            p.write_to_config_db()
            p.verify_config_db()
            p.verify_app_db()
            p.verify_asic_db()

        # 5. Remove all VLANs and verify the same
        for vlan_name in vlan_names:
            self.dvs_vlan.remove_vlan(vlan_name)
        self.dvs_vlan.get_and_verify_vlan_ids(0)
    def test_dependency(self, dvs):
        vlan = "100"
        p = Port(dvs, "Ethernet0")
        p.sync_from_config_db()

        # 1. Create VLAN100
        self.dvs_vlan.create_vlan(vlan)

        # 2. Add Ethernet0 to VLAN100
        self.dvs_vlan.create_vlan_member(vlan, p.get_name())

        # 3. Add log marker to syslog
        marker = dvs.add_log_marker()

        # 4. Delete Ethernet0 from config DB. Sleep for 2 seconds.
        p.delete_from_config_db()
        time.sleep(2)

        # 5. Verify that we are waiting in portsorch for the port
        #    to be removed from VLAN, by looking at the log
        self.check_syslog(dvs, marker,
                          "Cannot remove port as bridge port OID is present",
                          1)

        # 6. Also verify that port is still present in ASIC DB.
        assert (p.exists_in_asic_db() == True)

        # 7. Remove port from VLAN
        self.dvs_vlan.remove_vlan_member(vlan, p.get_name())

        # 8. Verify that port is removed from ASIC DB
        assert (p.not_exists_in_asic_db() == True)

        # 9. Re-create port Ethernet0 and verify that it is
        #    present in CONFIG, APPL, and ASIC DBs
        p.write_to_config_db()
        p.verify_config_db()
        p.verify_app_db()
        p.verify_asic_db()

        # 10. Remove VLAN100 and verify that its removed.
        self.dvs_vlan.remove_vlan(vlan)
        self.dvs_vlan.get_and_verify_vlan_ids(0)
    def test_one_port_multiple_vlan(self, dvs):

        dpb = DPB()
        vlans = ["100", "101", "102"]

        # 1. Create 3 VLANs
        for vlan in vlans:
            self.dvs_vlan.create_vlan(vlan)

        # 2. Add Ethernet0 to all 3 VLANs and verify
        for vlan in vlans:
            self.dvs_vlan.create_vlan_member(vlan, "Ethernet0")
        self.dvs_vlan.get_and_verify_vlan_member_ids(len(vlans))

        # 3. Delete Ethernet0 from CONFIG DB. Verify that it is deleted
        #    from CONFIG and APPl DB, whereas still present in ASIC DB.
        p = Port(dvs, "Ethernet0")
        p.sync_from_config_db()
        p.delete_from_config_db()
        assert (p.exists_in_config_db() == False)
        assert (p.exists_in_app_db() == False)
        assert (p.exists_in_asic_db() == True)

        # 4. Remove Ethernet0 from one of the VLANs and verify that
        #    its still present in ASIC DB
        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)

        # 5. Remove Ethernet0 from one more VLAN and verify that
        #    its still present in ASIC DB
        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)

        # 6. Remove Ethernet0 from last VLAN as well and verify that
        #    its deleted from ASIC DB
        self.dvs_vlan.remove_vlan_member(vlans[2], "Ethernet0")
        self.dvs_vlan.get_and_verify_vlan_member_ids(0)
        assert (p.not_exists_in_asic_db() == True)

        # 7. To Simulate 1x40G --> 4x10G, create 4 ports
        dpb.create_child_ports(dvs, p, 4)

        # 8. To Simulate 4x10G --> 1x40G, delete all 4 ports and re-create Ethernet0
        port_names = ["Ethernet0", "Ethernet1", "Ethernet2", "Ethernet3"]
        for pname in port_names:
            cp = Port(dvs, pname)
            cp.sync_from_config_db()
            cp.delete_from_config_db()
            assert (cp.exists_in_config_db() == False)
            assert (cp.exists_in_app_db() == False)
            assert (cp.not_exists_in_asic_db() == True)

        p.write_to_config_db()
        p.verify_config_db()
        p.verify_app_db()
        p.verify_asic_db()

        # 9. Remove all 3 VLANs and verify the same
        self.dvs_vlan.remove_vlan("100")
        self.dvs_vlan.remove_vlan("101")
        self.dvs_vlan.remove_vlan("102")
        self.dvs_vlan.get_and_verify_vlan_ids(0)
Example #6
0
    def test_dependency(self, dvs):
        dvs.setup_db()
        lag = "0001"
        p = Port(dvs, "Ethernet0")
        p.sync_from_config_db()

        # 1. Create PortChannel0001.
        self.create_port_channel(dvs, lag)

        # 2. Add Ethernet0 to PortChannel0001.
        self.create_port_channel_member(dvs, lag, p.get_name())
        time.sleep(2)

        # 3. Add log marker to syslog
        marker = dvs.add_log_marker()

        # 4. Delete Ethernet0 from config DB.
        p.delete_from_config_db()
        time.sleep(2)

        # 5. Verify that we are waiting in portsorch for the port
        #    to be removed from LAG, by looking at the log
        self.check_syslog(dvs, marker,
                          "Unable to remove port Ethernet0: ref count 1", 1)

        # 6. Also verify that port is still present in ASIC DB.
        assert (p.exists_in_asic_db() == True)

        # 7. Remove port from LAG
        self.remove_port_channel_member(dvs, lag, p.get_name())

        # 8. Verify that port is removed from ASIC DB
        assert (p.not_exists_in_asic_db() == True)

        # 9. Re-create port Ethernet0 and verify that it is
        #    present in CONFIG, APPL, and ASIC DBs
        p.write_to_config_db()
        p.verify_config_db()
        p.verify_app_db()
        p.verify_asic_db()

        # 10. Remove PortChannel0001 and verify that its removed.
        self.remove_port_channel(dvs, lag)
        self.dvs_lag.get_and_verify_port_channel(0)