| /* |
| * Copyright 2016-present Open Networking Laboratory |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.onosproject.drivers.cisco; |
| |
| import com.google.common.collect.Lists; |
| import org.apache.commons.configuration.HierarchicalConfiguration; |
| import org.junit.Test; |
| import org.onlab.packet.VlanId; |
| import org.onosproject.drivers.utilities.XmlConfigParser; |
| import org.onosproject.net.device.DefaultDeviceInterfaceDescription; |
| import org.onosproject.net.device.DeviceInterfaceDescription; |
| |
| import java.io.InputStream; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| /** |
| * Tests the parser for Netconf XML configurations and replies from Cisco devices. |
| */ |
| public class XmlParserCiscoTest { |
| |
| private static final String INTF_NAME_1 = "GigabitEthernet0/1"; |
| private static final String INTF_NAME_2 = "GigabitEthernet0/2"; |
| private static final String INTF_NAME_3 = "GigabitEthernet0/3"; |
| private static final String INTF_NAME_4 = "GigabitEthernet0/4"; |
| private static final String INTF_NAME_5 = "GigabitEthernet0/5"; |
| private static final VlanId ACCESS_VLAN = VlanId.vlanId((short) 100); |
| private static final VlanId TRUNK_VLAN_1 = VlanId.vlanId((short) 200); |
| private static final VlanId TRUNK_VLAN_2 = VlanId.vlanId((short) 201); |
| private static final VlanId TRUNK_VLAN_3 = VlanId.vlanId((short) 300); |
| private static final VlanId TRUNK_VLAN_4 = VlanId.vlanId((short) 301); |
| private static final VlanId TRUNK_VLAN_5 = VlanId.vlanId((short) 302); |
| private static final short NO_RATE_LIMIT = -1; |
| private static final short RATE_LIMIT_1 = 75; |
| private static final short RATE_LIMIT_2 = 50; |
| private static final boolean NO_LIMIT = false; |
| private static final boolean WITH_LIMIT = true; |
| private static final String CONFIG_XML_FILE = "/testGetConfig.xml"; |
| |
| @Test |
| public void controllersConfig() { |
| InputStream streamOrig = getClass().getResourceAsStream(CONFIG_XML_FILE); |
| HierarchicalConfiguration cfgOrig = XmlConfigParser.loadXml(streamOrig); |
| List<DeviceInterfaceDescription> actualIntfs = |
| XmlParserCisco.getInterfacesFromConfig(cfgOrig); |
| assertEquals("Interfaces were not retrieved from configuration", |
| getExpectedIntfs(), actualIntfs); |
| } |
| |
| private List<DeviceInterfaceDescription> getExpectedIntfs() { |
| List<DeviceInterfaceDescription> intfs = new ArrayList<>(); |
| intfs.add(new DefaultDeviceInterfaceDescription(INTF_NAME_1, |
| DeviceInterfaceDescription.Mode.NORMAL, |
| Lists.newArrayList(), |
| NO_LIMIT, |
| NO_RATE_LIMIT)); |
| |
| List<VlanId> accessList = new ArrayList<>(); |
| accessList.add(ACCESS_VLAN); |
| intfs.add(new DefaultDeviceInterfaceDescription(INTF_NAME_2, |
| DeviceInterfaceDescription.Mode.ACCESS, |
| accessList, |
| NO_LIMIT, |
| NO_RATE_LIMIT)); |
| |
| List<VlanId> trunkList1 = new ArrayList<>(); |
| trunkList1.add(TRUNK_VLAN_1); |
| trunkList1.add(TRUNK_VLAN_2); |
| intfs.add(new DefaultDeviceInterfaceDescription(INTF_NAME_3, |
| DeviceInterfaceDescription.Mode.TRUNK, |
| trunkList1, |
| NO_LIMIT, |
| NO_RATE_LIMIT)); |
| |
| intfs.add(new DefaultDeviceInterfaceDescription(INTF_NAME_4, |
| DeviceInterfaceDescription.Mode.NORMAL, |
| Lists.newArrayList(), |
| WITH_LIMIT, |
| RATE_LIMIT_1)); |
| |
| List<VlanId> trunkList2 = new ArrayList<>(); |
| trunkList2.add(TRUNK_VLAN_3); |
| trunkList2.add(TRUNK_VLAN_4); |
| trunkList2.add(TRUNK_VLAN_5); |
| intfs.add(new DefaultDeviceInterfaceDescription(INTF_NAME_5, |
| DeviceInterfaceDescription.Mode.TRUNK, |
| trunkList2, |
| WITH_LIMIT, |
| RATE_LIMIT_2)); |
| return intfs; |
| } |
| } |