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)
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)
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)