def setUp()

in ptf/saimirror.py [0:0]


    def setUp(self):
        super(MirrorConfigData, self).setUp()
        self.mac2 = "00:00:00:00:00:22"
        self.mac3 = "00:00:00:00:00:33"
        mac_action = SAI_PACKET_ACTION_FORWARD
        self.status_success = SAI_STATUS_SUCCESS
        vlan_tag = SAI_VLAN_TAGGING_MODE_TAGGED
        port_type = SAI_BRIDGE_PORT_TYPE_PORT
        # Thrift does not support unsigned int notation, that is why
        # u16 is signed number and there is a need to convert values
        # greater than 32767 (15-bit max value) as follows:
        # val = MIN_SIGNED_INT_VAL + X - MAX_SIGNED_INT_VAL - 1
        # where X - the number exceeds 32767 (MAX_SIGNED_INT_VAL)
        # MIN_SIGNED_INT_VAL = -32768
        self.gre_proto_type_0x88be = -30530
        self.vlan_tpid_0x8100 = -32512
#        +------------+------------+-----------+-------------+
#        |    LAG     |   VLAN ID  |   Port    | VLAN member |
#        +------------+------------+-----------+-------------+
#        |            |   vlan40   |   port24  | vlan_mem41  |
#        |            |            |   port25  | vlan_mem42  |
#        |            |            |   port26  | vlan_mem43  |
#        |            |            |   port27  | vlan_mem44  |
#        |   lag10    |            |           | vlan_mem041 |
#        |  lag10_upd |            |           | vlan_mem042 |
#        +------------+------------+-----------+-------------+
#        |            |   vlan50   |   port28  | vlan_mem51  |
#        |            |            |   port29  | vlan_mem52  |
#        |            |            |   port30  | vlan_mem53  |
#        |            |            |   port31  | vlan_mem54  |
#        |   lag11    |            |           | vlan_mem051 |
#        |  lag11_upd |            |           | vlan_mem052 |
#        +------------+------------+-----------+-------------+

        # Port configuration
        self.bridge_ports = []
        self.port24_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port24,
            type=port_type)
        self.assertNotEqual(self.port24_bp, 0)
        self.bridge_ports.append(self.port24_bp)
        self.port25_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port25,
            type=port_type)
        self.assertNotEqual(self.port25_bp, 0)
        self.bridge_ports.append(self.port25_bp)
        self.port26_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port26,
            type=port_type)
        self.assertNotEqual(self.port26_bp, 0)
        self.bridge_ports.append(self.port26_bp)
        self.port27_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port27,
            type=port_type)
        self.assertNotEqual(self.port27_bp, 0)
        self.bridge_ports.append(self.port27_bp)
        self.port28_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port28,
            type=port_type)
        self.assertNotEqual(self.port28_bp, 0)
        self.bridge_ports.append(self.port28_bp)
        self.port29_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port29,
            type=port_type)
        self.assertNotEqual(self.port29_bp, 0)
        self.bridge_ports.append(self.port29_bp)
        self.port30_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port30,
            type=port_type)
        self.assertNotEqual(self.port30_bp, 0)
        self.bridge_ports.append(self.port30_bp)
        self.port31_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.port31,
            type=port_type)
        self.assertNotEqual(self.port31_bp, 0)
        self.bridge_ports.append(self.port31_bp)

        # VLAN configuration
        self.vlan40 = sai_thrift_create_vlan(self.client, vlan_id=40)
        self.assertNotEqual(self.vlan40, 0)
        self.vlan50 = sai_thrift_create_vlan(self.client, vlan_id=50)
        self.assertNotEqual(self.vlan50, 0)
        # VLAN members
        self.vlan_members = []
        self.vlan_member41 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan40,
            bridge_port_id=self.port24_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member41, 0)
        self.vlan_members.append(self.vlan_member41)
        self.vlan_member42 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan40,
            bridge_port_id=self.port25_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member42, 0)
        self.vlan_members.append(self.vlan_member42)
        self.vlan_member43 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan40,
            bridge_port_id=self.port26_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member43, 0)
        self.vlan_members.append(self.vlan_member43)
        self.vlan_member44 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan40,
            bridge_port_id=self.port27_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member44, 0)
        self.vlan_members.append(self.vlan_member44)
        self.vlan_member51 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan50,
            bridge_port_id=self.port28_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member51, 0)
        self.vlan_members.append(self.vlan_member51)
        self.vlan_member52 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan50,
            bridge_port_id=self.port29_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member52, 0)
        self.vlan_members.append(self.vlan_member52)
        self.vlan_member53 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan50,
            bridge_port_id=self.port30_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member53, 0)
        self.vlan_members.append(self.vlan_member53)
        self.vlan_member54 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan50,
            bridge_port_id=self.port31_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member54, 0)
        self.vlan_members.append(self.vlan_member54)

        # FDB configuration
        self.fdb_entries = []
        self.fdb_entry1 = sai_thrift_fdb_entry_t(switch_id=self.switch_id,
                                                 mac_address=self.mac2,
                                                 bv_id=self.vlan40)
        status = sai_thrift_create_fdb_entry(self.client,
                                             self.fdb_entry1,
                                             type=SAI_FDB_ENTRY_TYPE_STATIC,
                                             bridge_port_id=self.port25_bp,
                                             packet_action=mac_action)
        self.assertEqual(status, self.status_success)
        self.fdb_entries.append(self.fdb_entry1)
        self.fdb_entry2 = sai_thrift_fdb_entry_t(switch_id=self.switch_id,
                                                 mac_address=self.mac3,
                                                 bv_id=self.vlan40)
        status = sai_thrift_create_fdb_entry(self.client,
                                             self.fdb_entry2,
                                             type=SAI_FDB_ENTRY_TYPE_STATIC,
                                             bridge_port_id=self.port26_bp,
                                             packet_action=mac_action)
        self.assertEqual(status, self.status_success)
        self.fdb_entries.append(self.fdb_entry2)

        self.fdb_entry3 = sai_thrift_fdb_entry_t(switch_id=self.switch_id,
                                                 mac_address=self.mac2,
                                                 bv_id=self.vlan50)
        status = sai_thrift_create_fdb_entry(self.client,
                                             self.fdb_entry3,
                                             type=SAI_FDB_ENTRY_TYPE_STATIC,
                                             bridge_port_id=self.port29_bp,
                                             packet_action=mac_action)
        self.assertEqual(status, self.status_success)
        self.fdb_entries.append(self.fdb_entry3)
        self.fdb_entry4 = sai_thrift_fdb_entry_t(switch_id=self.switch_id,
                                                 mac_address=self.mac3,
                                                 bv_id=self.vlan50)
        status = sai_thrift_create_fdb_entry(self.client,
                                             self.fdb_entry4,
                                             type=SAI_FDB_ENTRY_TYPE_STATIC,
                                             bridge_port_id=self.port30_bp,
                                             packet_action=mac_action)
        self.assertEqual(status, self.status_success)
        self.fdb_entries.append(self.fdb_entry4)

        # Port attributes
        self.ports = []
        sai_thrift_set_port_attribute(self.client,
                                      self.port24,
                                      port_vlan_id=40)
        self.ports.append(self.port24)
        sai_thrift_set_port_attribute(self.client,
                                      self.port25,
                                      port_vlan_id=40)
        self.ports.append(self.port25)
        sai_thrift_set_port_attribute(self.client,
                                      self.port26,
                                      port_vlan_id=40)
        self.ports.append(self.port26)
        sai_thrift_set_port_attribute(self.client,
                                      self.port27,
                                      port_vlan_id=40)
        self.ports.append(self.port27)
        sai_thrift_set_port_attribute(self.client,
                                      self.port28,
                                      port_vlan_id=50)
        self.ports.append(self.port28)
        sai_thrift_set_port_attribute(self.client,
                                      self.port29,
                                      port_vlan_id=50)
        self.ports.append(self.port29)
        sai_thrift_set_port_attribute(self.client,
                                      self.port30,
                                      port_vlan_id=50)
        self.ports.append(self.port30)
        sai_thrift_set_port_attribute(self.client,
                                      self.port31,
                                      port_vlan_id=50)
        self.ports.append(self.port31)

        # L3 layer configuration
        self.vr_id = sai_thrift_create_virtual_router(self.client,
                                                      admin_v4_state=True,
                                                      admin_v6_state=True)

        # Neighbor egress configuration

        # Egress RIF port11
        dst_ip = "172.16.1.1"
        dst_mask_ip = "172.16.1.1/24"
        self.neighbor_dmac = "00:11:22:33:44:55"
        self.neighbor_entry1 = sai_thrift_neighbor_entry_t(
            self.switch_id,
            self.port11_rif,
            sai_ipaddress(dst_ip))
        sai_thrift_create_neighbor_entry(self.client,
                                         self.neighbor_entry1,
                                         dst_mac_address=self.neighbor_dmac)

        self.nhop = sai_thrift_create_next_hop(
            self.client,
            type=SAI_NEXT_HOP_TYPE_IP,
            router_interface_id=self.port11_rif,
            ip=sai_ipaddress(dst_ip))

        # Egress RIF port12
        dst_ip_egr = "192.168.0.1"
        dst_mask_ip_egr = "192.168.0.1/24"
        self.neighbor_dmac_egr = "00:55:44:33:22:11"
        self.neighbor_entry2 = sai_thrift_neighbor_entry_t(
            self.switch_id,
            self.port12_rif,
            sai_ipaddress(dst_ip_egr))
        sai_thrift_create_neighbor_entry(
            self.client,
            self.neighbor_entry2,
            dst_mac_address=self.neighbor_dmac_egr)

        self.nhop2 = sai_thrift_create_next_hop(
            self.client,
            type=SAI_NEXT_HOP_TYPE_IP,
            router_interface_id=self.port12_rif,
            ip=sai_ipaddress(dst_ip_egr))

        # Route configuration
        self.route = sai_thrift_route_entry_t(
            switch_id=self.switch_id,
            destination=sai_ipprefix(dst_mask_ip),
            vr_id=self.vr_id)
        status = sai_thrift_create_route_entry(self.client,
                                               self.route,
                                               next_hop_id=self.nhop)
        self.assertEqual(status, self.status_success)

        self.route2 = sai_thrift_route_entry_t(
            switch_id=self.switch_id,
            destination=sai_ipprefix(dst_mask_ip_egr),
            vr_id=self.vr_id)
        status = sai_thrift_create_route_entry(self.client,
                                               self.route2,
                                               next_hop_id=self.nhop2)
        self.assertEqual(status, self.status_success)

        # IP for ERSPAN ingress mirroring
        src_ipv4 = sai_thrift_ip_addr_t(ip4="17.18.19.0")
        dst_ipv4 = sai_thrift_ip_addr_t(ip4="33.19.20.0")
        addr_fam = SAI_IP_ADDR_FAMILY_IPV4
        self.src_ip_addr = sai_thrift_ip_address_t(addr_family=addr_fam,
                                                   addr=src_ipv4)
        self.dst_ip_addr = sai_thrift_ip_address_t(addr_family=addr_fam,
                                                   addr=dst_ipv4)

        # IP for ERSPAN egress mirroring
        src_ipv4_egr = sai_thrift_ip_addr_t(ip4="33.19.20.0")
        dst_ipv4_egr = sai_thrift_ip_addr_t(ip4="17.18.19.0")
        self.src_ip_addr_egr = sai_thrift_ip_address_t(addr_family=addr_fam,
                                                       addr=src_ipv4_egr)
        self.dst_ip_addr_egr = sai_thrift_ip_address_t(addr_family=addr_fam,
                                                       addr=dst_ipv4_egr)

        # LAG configuration
        self.lags = []
        self.lag10 = sai_thrift_create_lag(self.client)
        self.assertNotEqual(self.lag10, 0)
        self.lags.append(self.lag10)
        self.lag10_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.lag10,
            type=SAI_BRIDGE_PORT_TYPE_PORT)
        self.assertNotEqual(self.lag10_bp, 0)
        self.bridge_ports.append(self.lag10_bp)
        self.vlan_member041 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan40,
            bridge_port_id=self.lag10_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member041, 0)
        self.vlan_members.append(self.vlan_member041)
        self.lag10_upd = sai_thrift_create_lag(self.client)
        self.assertNotEqual(self.lag10_upd, 0)
        self.lags.append(self.lag10_upd)
        self.lag10_bp_upd = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.lag10_upd,
            type=SAI_BRIDGE_PORT_TYPE_PORT)
        self.assertNotEqual(self.lag10_bp_upd, 0)
        self.bridge_ports.append(self.lag10_bp_upd)
        self.vlan_member042 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan40,
            bridge_port_id=self.lag10_bp_upd,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member042, 0)
        self.vlan_members.append(self.vlan_member042)

        self.lag11 = sai_thrift_create_lag(self.client)
        self.assertNotEqual(self.lag11, 0)
        self.lags.append(self.lag11)
        self.lag11_bp = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.lag11,
            type=SAI_BRIDGE_PORT_TYPE_PORT)
        self.assertNotEqual(self.lag11_bp, 0)
        self.bridge_ports.append(self.lag11_bp)
        self.vlan_member051 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan50,
            bridge_port_id=self.lag11_bp,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member051, 0)
        self.vlan_members.append(self.vlan_member051)

        self.lag11_upd = sai_thrift_create_lag(self.client)
        self.assertNotEqual(self.lag11_upd, 0)
        self.lags.append(self.lag11_upd)
        self.lag11_bp_upd = sai_thrift_create_bridge_port(
            self.client,
            bridge_id=self.default_1q_bridge,
            port_id=self.lag11_upd,
            type=SAI_BRIDGE_PORT_TYPE_PORT)
        self.assertNotEqual(self.lag11_bp_upd, 0)
        self.bridge_ports.append(self.lag11_bp_upd)
        self.vlan_member052 = sai_thrift_create_vlan_member(
            self.client,
            vlan_id=self.vlan50,
            bridge_port_id=self.lag11_bp_upd,
            vlan_tagging_mode=vlan_tag)
        self.assertNotEqual(self.vlan_member052, 0)
        self.vlan_members.append(self.vlan_member052)

        # Policer configuration
        self.pol_id = sai_thrift_create_policer(
            self.client,
            meter_type=SAI_METER_TYPE_PACKETS,
            mode=SAI_POLICER_MODE_SR_TCM,
            cir=1,
            pir=1,
            green_packet_action=SAI_PACKET_ACTION_FORWARD,
            red_packet_action=SAI_PACKET_ACTION_FORWARD)