org.onosproject.drivers.odtn.InfineraOpenConfigDeviceDiscoveryTest.java Source code

Java tutorial

Introduction

Here is the source code for org.onosproject.drivers.odtn.InfineraOpenConfigDeviceDiscoveryTest.java

Source

/*
 * Copyright 2018-present Open Networking Foundation
 *
 * 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.odtn;

import com.google.common.io.CharSource;
import java.io.IOException;
import java.util.List;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.junit.Test;
import org.onosproject.net.device.PortDescription;
import org.onosproject.odtn.behaviour.OdtnDeviceDescriptionDiscovery;

import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.onosproject.odtn.behaviour.OdtnDeviceDescriptionDiscovery.OC_NAME;
import static org.onosproject.odtn.behaviour.OdtnDeviceDescriptionDiscovery.OC_TYPE;
import static org.onosproject.odtn.utils.tapi.TapiObjectHandler.ODTN_PORT_TYPE;

public class InfineraOpenConfigDeviceDiscoveryTest {

    @Test
    public void testToPortDescription() throws ConfigurationException, IOException {
        // CHECKSTYLE:OFF
        String input = "<data>\n" + "  <interfaces xmlns=\"http://openconfig.net/yang/interfaces\">\n"
                + "    <interface>\n" + "      <name>CARRIERCTP.1-L1-1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>CARRIERCTP.1-L1-1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>CARRIERCTP.1-L1-2</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>CARRIERCTP.1-L1-2</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>CARRIERCTP.1-L1-3</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>CARRIERCTP.1-L1-3</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>CARRIERCTP.1-L1-4</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>CARRIERCTP.1-L1-4</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>CARRIERCTP.1-L1-5</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>CARRIERCTP.1-L1-5</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>CARRIERCTP.1-L1-6</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>CARRIERCTP.1-L1-6</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>GIGECLIENTCTP.1-A-2-T1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>GIGECLIENTCTP.1-A-2-T1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>GIGECLIENTCTP.1-A-2-T2</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>GIGECLIENTCTP.1-A-2-T2</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>GIGECLIENTCTP.1-L1-1-1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>GIGECLIENTCTP.1-L1-1-1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>GIGECLIENTCTP.1-L2-1-1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>GIGECLIENTCTP.1-L2-1-1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>NCTGIGE.1-NCT-1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:ethernetCsmacd</type>\n"
                + "        <name>NCTGIGE.1-NCT-1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>NCTGIGE.1-NCT-2</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:ethernetCsmacd</type>\n"
                + "        <name>NCTGIGE.1-NCT-2</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>OCHCTP.1-L1-1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>OCHCTP.1-L1-1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>SCHCTP.1-L1-1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>SCHCTP.1-L1-1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>TRIBPTP.1-A-2-T1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>TRIBPTP.1-A-2-T1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>TRIBPTP.1-A-2-T2</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>TRIBPTP.1-A-2-T2</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "    <interface>\n" + "      <name>XTSCGPTP.1-L1</name>\n" + "      <config>\n"
                + "        <type xmlns:ianaift=\"urn:ietf:params:xml:ns:yang:iana-if-type\">ianaift:opticalTransport</type>\n"
                + "        <name>XTSCGPTP.1-L1</name>\n" + "        <description/>\n"
                + "        <enabled>true</enabled>\n" + "      </config>\n" + "    </interface>\n"
                + "  </interfaces>\n" + "</data>\n";
        // CHECKSTYLE:ON

        InfineraOpenConfigDeviceDiscovery sut = new InfineraOpenConfigDeviceDiscovery();

        XMLConfiguration cfg = new XMLConfiguration();
        cfg.load(CharSource.wrap(input).openStream());

        List<PortDescription> ports = sut.discoverPorts(cfg);

        assertThat(ports, hasSize(4));

        PortDescription portDescription;
        portDescription = ports.get(0);
        assertThat(portDescription.portNumber().toLong(), is(1L));
        assertThat(portDescription.portNumber().name(), is("GIGECLIENTCTP.1-A-2-T1"));
        assertThat(portDescription.annotations().value(OC_NAME), is("GIGECLIENTCTP.1-A-2-T1"));
        assertThat(portDescription.annotations().value(OC_TYPE), is("GIGECLIENTCTP.1-A-2-T1"));
        assertThat(portDescription.annotations().value(ODTN_PORT_TYPE),
                is(OdtnDeviceDescriptionDiscovery.OdtnPortType.CLIENT.value()));

        portDescription = ports.get(3);
        assertThat(portDescription.portNumber().toLong(), is(102L));
        assertThat(portDescription.portNumber().name(), is("GIGECLIENTCTP.1-L2-1-1"));
        assertThat(portDescription.annotations().value(OC_NAME), is("GIGECLIENTCTP.1-L2-1-1"));
        assertThat(portDescription.annotations().value(OC_TYPE), is("GIGECLIENTCTP.1-L2-1-1"));
        assertThat(portDescription.annotations().value(ODTN_PORT_TYPE),
                is(OdtnDeviceDescriptionDiscovery.OdtnPortType.LINE.value()));
    }
}