Пример #1
0
    def test_prepare_push_flow(self):
        """Test prepare push flow method."""
        attributes = {
            "controller": get_controller_mock(),
            "name": "custom_name",
            "uni_a": get_uni_mocked(interface_port=1, is_valid=True),
            "uni_z": get_uni_mocked(interface_port=2, is_valid=True),
        }
        evc = EVC(**attributes)
        interface_a = evc.uni_a.interface
        interface_z = evc.uni_z.interface
        out_vlan_a = 20

        for in_vlan_a in (10, None):
            for in_vlan_z in (3, None):
                with self.subTest(in_vlan_a=in_vlan_a, in_vlan_z=in_vlan_z):
                    # pylint: disable=protected-access
                    flow_mod = evc._prepare_push_flow(interface_a, interface_z,
                                                      in_vlan_a, out_vlan_a,
                                                      in_vlan_z)

                    expected_flow_mod = {
                        'match': {'in_port': interface_a.port_number},
                        'cookie': evc.get_cookie(),
                        'actions': [
                            {'action_type': 'push_vlan', 'tag_type': 's'},
                            {'action_type': 'set_vlan', 'vlan_id': out_vlan_a},
                            {
                                'action_type': 'output',
                                'port': interface_z.port_number
                            }
                        ]
                    }
                    if in_vlan_a and in_vlan_z:
                        expected_flow_mod['match']['dl_vlan'] = in_vlan_a
                        expected_flow_mod['actions'].insert(0, {
                            'action_type': 'set_vlan', 'vlan_id': in_vlan_z
                        })
                    elif in_vlan_a:
                        expected_flow_mod['match']['dl_vlan'] = in_vlan_a
                        expected_flow_mod['actions'].insert(0, {
                            'action_type': 'pop_vlan'
                        })
                    elif in_vlan_z:
                        expected_flow_mod['actions'].insert(0, {
                            'action_type': 'set_vlan', 'vlan_id': in_vlan_z
                        })
                        expected_flow_mod['actions'].insert(0, {
                            'action_type': 'push_vlan', 'tag_type': 'c'
                        })
                    self.assertEqual(expected_flow_mod, flow_mod)
Пример #2
0
    def test_prepare_push_flow(self):
        """Test prepare push flow method."""
        attributes = {
            "controller": get_controller_mock(),
            "name": "custom_name",
            "uni_a": get_uni_mocked(interface_port=1, is_valid=True),
            "uni_z": get_uni_mocked(interface_port=2, is_valid=True),
        }
        evc = EVC(**attributes)
        interface_a = evc.uni_a.interface
        interface_z = evc.uni_z.interface
        out_vlan_a = 20

        for in_vlan_a in (10, None):
            with self.subTest(in_vlan_a=in_vlan_a):
                # pylint: disable=protected-access
                flow_mod = evc._prepare_push_flow(interface_a, interface_z,
                                                  in_vlan_a, out_vlan_a)

                expected_flow_mod = {
                    "match": {
                        "in_port": interface_a.port_number
                    },
                    "cookie":
                    evc.get_cookie(),
                    "actions": [
                        {
                            "action_type": "push_vlan",
                            "tag_type": "s"
                        },
                        {
                            "action_type": "set_vlan",
                            "vlan_id": out_vlan_a
                        },
                        {
                            "action_type": "output",
                            "port": interface_z.port_number,
                        },
                    ],
                }
                if in_vlan_a:
                    expected_flow_mod["match"]["dl_vlan"] = in_vlan_a
                    expected_flow_mod["actions"].insert(
                        0, {"action_type": "pop_vlan"})
                self.assertEqual(expected_flow_mod, flow_mod)
Пример #3
0
    def test_prepare_push_flow(self):
        """Test prepare push flow method."""
        attributes = {
            "controller": get_controller_mock(),
            "name": "custom_name",
            "uni_a": get_uni_mocked(interface_port=1, is_valid=True),
            "uni_z": get_uni_mocked(interface_port=2, is_valid=True),
        }
        evc = EVC(**attributes)
        interface_a = evc.uni_a.interface
        interface_z = evc.uni_z.interface
        in_vlan_a = 10
        out_vlan_a = 20
        in_vlan_z = 3

        # pylint: disable=protected-access
        flow_mod = evc._prepare_push_flow(interface_a, interface_z, in_vlan_a,
                                          out_vlan_a, in_vlan_z)

        expected_flow_mod = {
            'match': {
                'in_port': interface_a.port_number,
                'dl_vlan': in_vlan_a
            },
            'cookie':
            evc.get_cookie(),
            'actions': [{
                'action_type': 'set_vlan',
                'vlan_id': in_vlan_z
            }, {
                'action_type': 'push_vlan',
                'tag_type': 's'
            }, {
                'action_type': 'set_vlan',
                'vlan_id': out_vlan_a
            }, {
                'action_type': 'output',
                'port': interface_z.port_number
            }]
        }
        self.assertEqual(expected_flow_mod, flow_mod)