blob: bb280d264cd527c4a11b32f18ce709ef85a1af06 [file] [log] [blame]
/*
* 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.isis.io.isispacket.tlv;
import org.junit.Test;
import org.onlab.packet.Ip4Address;
import org.onlab.packet.MacAddress;
import org.onosproject.isis.controller.IsisInterfaceState;
import org.onosproject.isis.io.util.IsisConstants;
import java.util.List;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
/**
* Unit test class for TlvsToBytes.
*/
public class TlvsToBytesTest {
private final String areaAddress = "49";
private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
private final String systemName = "ROUTER";
private final String neighborId = "2929.2929.2929";
private List<Byte> tlv;
private MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00");
private String prefix = "192.168.7";
/**
* Tests TlvToBytes() method.
*/
@Test
public void testTlvToBytes() throws Exception {
TlvHeader tlvHeader = new TlvHeader();
tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
tlvHeader.setTlvLength(0);
AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
areaAddressTlv.addAddress(areaAddress);
tlv = TlvsToBytes.tlvToBytes(areaAddressTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
tlvHeader.setTlvLength(0);
ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED);
tlv = TlvsToBytes.tlvToBytes(protocolSupportedTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value());
tlvHeader.setTlvLength(0);
IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader);
ipInterfaceAddressTlv.addInterfaceAddres(ip4Address);
tlv = TlvsToBytes.tlvToBytes(ipInterfaceAddressTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.HOSTNAME.value());
tlvHeader.setTlvLength(0);
HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader);
hostNameTlv.setHostName(systemName);
tlv = TlvsToBytes.tlvToBytes(hostNameTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.ISREACHABILITY.value());
tlvHeader.setTlvLength(0);
IsReachabilityTlv isReachabilityTlv = new IsReachabilityTlv(tlvHeader);
isReachabilityTlv.setReserved(0);
MetricsOfReachability metricsOfReachability = new MetricsOfReachability();
metricsOfReachability.setDefaultMetric((byte) 10);
metricsOfReachability.setDefaultIsInternal(true);
metricsOfReachability.setDelayMetric((byte) 10);
metricsOfReachability.setDelayIsInternal(true);
metricsOfReachability.setDelayMetricSupported(true);
metricsOfReachability.setExpenseMetric((byte) 10);
metricsOfReachability.setExpenseIsInternal(true);
metricsOfReachability.setExpenseMetricSupported(true);
metricsOfReachability.setErrorMetric((byte) 10);
metricsOfReachability.setErrorIsInternal(true);
metricsOfReachability.setErrorMetricSupported(true);
metricsOfReachability.setNeighborId(neighborId);
isReachabilityTlv.addMeticsOfReachability(metricsOfReachability);
tlv = TlvsToBytes.tlvToBytes(isReachabilityTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value());
tlvHeader.setTlvLength(0);
IpInternalReachabilityTlv ipInterReacTlv = new IpInternalReachabilityTlv(tlvHeader);
MetricOfInternalReachability metricOfIntRea = new MetricOfInternalReachability();
metricOfIntRea.setDefaultMetric((byte) 10);
metricOfIntRea.setDefaultIsInternal(true);
metricOfIntRea.setDefaultDistributionDown(true);
metricOfIntRea.setDelayMetric((byte) 0);
metricOfIntRea.setDelayMetricSupported(false);
metricOfIntRea.setDelayIsInternal(true);
metricOfIntRea.setExpenseMetric((byte) 0);
metricOfIntRea.setExpenseMetricSupported(false);
metricOfIntRea.setExpenseIsInternal(true);
metricOfIntRea.setErrorMetric((byte) 0);
metricOfIntRea.setErrorMetricSupported(false);
metricOfIntRea.setExpenseIsInternal(true);
metricOfIntRea.setIpAddress(ip4Address);
metricOfIntRea.setSubnetAddres(ip4Address);
ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea);
tlv = TlvsToBytes.tlvToBytes(ipInterReacTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.PADDING.value());
tlvHeader.setTlvLength(255);
PaddingTlv paddingTlv = new PaddingTlv(tlvHeader);
tlv = TlvsToBytes.tlvToBytes(paddingTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value());
tlvHeader.setTlvLength(0);
IpExtendedReachabilityTlv extendedTlv = new IpExtendedReachabilityTlv(tlvHeader);
extendedTlv.setDown(false);
extendedTlv.setMetric(10);
extendedTlv.setPrefix(prefix);
extendedTlv.setPrefixLength(24);
extendedTlv.setSubTlvLength((byte) 0);
extendedTlv.setSubTlvPresence(false);
tlv = TlvsToBytes.tlvToBytes(extendedTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
tlvHeader.setTlvLength(0);
AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.DOWN.value());
tlv = TlvsToBytes.tlvToBytes(adjacencyStateTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value());
tlvHeader.setTlvLength(0);
IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
isisNeighborTlv.addNeighbor(macAddress);
tlv = TlvsToBytes.tlvToBytes(isisNeighborTlv);
assertThat(tlv, is(notNullValue()));
tlvHeader.setTlvType(TlvType.EXTENDEDISREACHABILITY.value());
tlvHeader.setTlvLength(0);
IsExtendedReachability reachability = new IsExtendedReachability(tlvHeader);
NeighborForExtendedIs forExtendedIs = new NeighborForExtendedIs();
forExtendedIs.setMetric(10);
forExtendedIs.setNeighborId(neighborId);
reachability.addNeighbor(forExtendedIs);
tlv = TlvsToBytes.tlvToBytes(reachability);
assertThat(tlv, is(notNullValue()));
}
}