def vlanFloodEnhancedTest()

in ptf/saivlan.py [0:0]


    def vlanFloodEnhancedTest(self):
        """
        Verifies flooding for the vlan which contains ports and LAGs
        """
        print("\nvlanFloodEnhancedTest()")
        print("Flood test on ports 1,2, lag 1 and 2")

        vlan100 = sai_thrift_create_vlan(self.client, vlan_id=100)
        vlan_member101 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan100,
            bridge_port_id=self.port26_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_TAGGED)
        vlan_member102 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan100,
            bridge_port_id=self.port27_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_TAGGED)
        vlan_member103 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan100,
            bridge_port_id=self.lag10_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_TAGGED)
        vlan_member104 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan100,
            bridge_port_id=self.lag11_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_TAGGED)
        vlan_member105 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan100,
            bridge_port_id=self.port30_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_TAGGED)

        vlan200 = sai_thrift_create_vlan(self.client, vlan_id=200)
        vlan_member201 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan200,
            bridge_port_id=self.port26_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
        vlan_member202 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan200,
            bridge_port_id=self.port27_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
        vlan_member203 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan200,
            bridge_port_id=self.lag10_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
        vlan_member204 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=vlan200,
            bridge_port_id=self.lag11_bp,
            vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)

        sai_thrift_set_vlan_attribute(self.client, vlan100, learn_disable=True)
        sai_thrift_set_vlan_attribute(self.client, vlan200, learn_disable=True)

        sai_thrift_set_port_attribute(
            self.client, self.port26, port_vlan_id=200)
        sai_thrift_set_port_attribute(
            self.client, self.port27, port_vlan_id=200)
        sai_thrift_set_lag_attribute(self.client, self.lag10, port_vlan_id=200)
        sai_thrift_set_lag_attribute(self.client, self.lag11, port_vlan_id=200)

        pkt200 = simple_arp_packet(
            eth_dst='FF:FF:FF:FF:FF:FF',
            eth_src='00:22:22:33:44:55',
            arp_op=1,  # ARP request
            ip_tgt='10.10.10.1',
            ip_snd='10.10.10.2',
            hw_snd='00:22:22:33:44:55',
            pktlen=100)
        pkt100 = simple_arp_packet(
            eth_dst='FF:FF:FF:FF:FF:FF',
            eth_src='00:22:22:33:44:55',
            arp_op=1,  # ARP request
            ip_tgt='10.10.10.1',
            ip_snd='10.10.10.2',
            hw_snd='00:22:22:33:44:55',
            vlan_vid=100,
            pktlen=100)

        try:
            print("Add ports 24 and 25 to lag10 and lag11")
            lag_mbr32 = sai_thrift_create_lag_member(
                self.client, lag_id=self.lag10, port_id=self.port24)
            lag_mbr42 = sai_thrift_create_lag_member(
                self.client, lag_id=self.lag11, port_id=self.port25)

            lag1_ports = [self.dev_port28, self.dev_port24]
            lag2_ports = [self.dev_port29, self.dev_port25]
            send_packet(self, self.dev_port26, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [lag1_ports, lag2_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port28, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag2_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port29, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag1_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port30, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag1_ports,
                 lag2_ports, [self.dev_port27]])
            
            print("Remove ports 24 and 25 from lag10 and lag11")
            sai_thrift_remove_lag_member(self.client, lag_mbr32)
            sai_thrift_remove_lag_member(self.client, lag_mbr42)

            lag1_ports = [self.dev_port28]
            lag2_ports = [self.dev_port29]
            send_packet(self, self.dev_port26, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [lag1_ports, lag2_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port28, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag2_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port29, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag1_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port30, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag1_ports,
                 lag2_ports, [self.dev_port27]])

            print("Add ports 24 and 25 to lag10 and lag11")
            lag_mbr32 = sai_thrift_create_lag_member(
                self.client, lag_id=self.lag10, port_id=self.port24)
            lag_mbr42 = sai_thrift_create_lag_member(
                self.client, lag_id=self.lag11, port_id=self.port25)

            lag1_ports = [self.dev_port28, self.dev_port24]
            lag2_ports = [self.dev_port29, self.dev_port25]
            send_packet(self, self.dev_port26, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [lag1_ports, lag2_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port28, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag2_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port29, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag1_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port30, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 4,
                [[self.dev_port26], lag1_ports,
                 lag2_ports, [self.dev_port27]])

            print("Remove port 30 from vlan 100")
            sai_thrift_remove_vlan_member(self.client, vlan_member105)
            send_packet(self, self.dev_port26, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 3,
                [lag1_ports, lag2_ports, [self.dev_port27]])
            send_packet(self, self.dev_port28, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 3,
                [[self.dev_port26], lag2_ports, [self.dev_port27]])
            send_packet(self, self.dev_port29, pkt100)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt100] * 3,
                [[self.dev_port26], lag1_ports, [self.dev_port27]])

            send_packet(self, self.dev_port27, pkt200)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt200] * 3,
                [lag1_ports, lag2_ports, [self.dev_port26]])
            send_packet(self, self.dev_port24, pkt200)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt200] * 3,
                [[self.dev_port26], lag2_ports, [self.dev_port27]])
            send_packet(self, self.dev_port25, pkt200)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt200] * 3,
                [[self.dev_port26], lag1_ports, [self.dev_port27]])

            print("Add port 30 to vlan 200")
            vlan_member205 = sai_thrift_create_vlan_member(
                self.client,
                vlan_id=vlan200,
                bridge_port_id=self.port30_bp,
                vlan_tagging_mode=SAI_VLAN_TAGGING_MODE_UNTAGGED)
            sai_thrift_set_port_attribute(
                self.client, self.port30, port_vlan_id=200)
            send_packet(self, self.dev_port27, pkt200)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt200] * 4,
                [lag1_ports, lag2_ports,
                 [self.dev_port26], [self.dev_port30]])
            send_packet(self, self.dev_port24, pkt200)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt200] * 4,
                [[self.dev_port26], lag2_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port25, pkt200)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt200] * 4,
                [[self.dev_port26], lag1_ports,
                 [self.dev_port27], [self.dev_port30]])
            send_packet(self, self.dev_port30, pkt200)
            verify_each_packet_on_multiple_port_lists(
                self, [pkt200] * 4,
                [[self.dev_port26], lag1_ports,
                 lag2_ports, [self.dev_port27]])

        finally:
            sai_thrift_set_port_attribute(
                self.client, self.port26, port_vlan_id=1)
            sai_thrift_set_port_attribute(
                self.client, self.port27, port_vlan_id=1)
            sai_thrift_set_port_attribute(
                self.client, self.port30, port_vlan_id=1)
            sai_thrift_set_lag_attribute(
                self.client, self.lag10, port_vlan_id=1)
            sai_thrift_set_lag_attribute(
                self.client, self.lag11, port_vlan_id=1)

            sai_thrift_set_vlan_attribute(
                self.client, vlan100, learn_disable=False)
            sai_thrift_set_vlan_attribute(
                self.client, vlan200, learn_disable=False)

            sai_thrift_remove_vlan_member(self.client, vlan_member101)
            sai_thrift_remove_vlan_member(self.client, vlan_member102)
            sai_thrift_remove_vlan_member(self.client, vlan_member103)
            sai_thrift_remove_vlan_member(self.client, vlan_member104)

            sai_thrift_remove_vlan_member(self.client, vlan_member201)
            sai_thrift_remove_vlan_member(self.client, vlan_member202)
            sai_thrift_remove_vlan_member(self.client, vlan_member203)
            sai_thrift_remove_vlan_member(self.client, vlan_member204)
            sai_thrift_remove_vlan_member(self.client, vlan_member205)

            sai_thrift_remove_vlan(self.client, vlan100)
            sai_thrift_remove_vlan(self.client, vlan200)

            sai_thrift_remove_lag_member(self.client, lag_mbr32)
            sai_thrift_remove_lag_member(self.client, lag_mbr42)