blob: 95982a80149637f586fdf3b475d1d121ee864050 [file] [log] [blame]
/*
* Copyright 2017-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.routing.bgp;
import org.hamcrest.Matchers;
import org.junit.Test;
import org.onlab.packet.Ip4Address;
import org.onlab.packet.Ip4Prefix;
import org.onlab.packet.Ip6Address;
import org.onlab.packet.Ip6Prefix;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
/**
* Unit tests for the RouteEntry class.
*/
public class RouteEntryTest {
/**
* Tests invalid class constructor for null IPv4 prefix.
*/
@Test(expected = NullPointerException.class)
public void testInvalidConstructorNullIpv4Prefix() {
Ip4Prefix prefix = null;
Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
new RouteEntry(prefix, nextHop);
}
/**
* Tests invalid class constructor for null IPv6 prefix.
*/
@Test(expected = NullPointerException.class)
public void testInvalidConstructorNullIpv6Prefix() {
Ip6Prefix prefix = null;
Ip6Address nextHop = Ip6Address.valueOf("2000::1");
new RouteEntry(prefix, nextHop);
}
/**
* Tests invalid class constructor for null IPv4 next-hop.
*/
@Test(expected = NullPointerException.class)
public void testInvalidConstructorNullIpv4NextHop() {
Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
Ip4Address nextHop = null;
new RouteEntry(prefix, nextHop);
}
/**
* Tests invalid class constructor for null IPv6 next-hop.
*/
@Test(expected = NullPointerException.class)
public void testInvalidConstructorNullIpv6NextHop() {
Ip6Prefix prefix = Ip6Prefix.valueOf("1000::/64");
Ip6Address nextHop = null;
new RouteEntry(prefix, nextHop);
}
/**
* Tests getting the fields of a route entry.
*/
@Test
public void testGetFields() {
Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
RouteEntry routeEntry = new RouteEntry(prefix, nextHop);
assertThat(routeEntry.prefix(), is(prefix));
assertThat(routeEntry.nextHop(), is(nextHop));
Ip6Prefix prefix6 = Ip6Prefix.valueOf("1000::/64");
Ip6Address nextHop6 = Ip6Address.valueOf("2000::1");
RouteEntry routeEntry6 = new RouteEntry(prefix6, nextHop6);
assertThat(routeEntry6.prefix(), is(prefix6));
assertThat(routeEntry6.nextHop(), is(nextHop6));
}
/**
* Tests equality of {@link RouteEntry}.
*/
@Test
public void testEquality() {
Ip4Prefix prefix1 = Ip4Prefix.valueOf("1.2.3.0/24");
Ip4Address nextHop1 = Ip4Address.valueOf("5.6.7.8");
RouteEntry routeEntry1 = new RouteEntry(prefix1, nextHop1);
Ip4Prefix prefix2 = Ip4Prefix.valueOf("1.2.3.0/24");
Ip4Address nextHop2 = Ip4Address.valueOf("5.6.7.8");
RouteEntry routeEntry2 = new RouteEntry(prefix2, nextHop2);
assertThat(routeEntry1, is(routeEntry2));
Ip6Prefix prefix3 = Ip6Prefix.valueOf("1000::/64");
Ip6Address nextHop3 = Ip6Address.valueOf("2000::2");
RouteEntry routeEntry3 = new RouteEntry(prefix3, nextHop3);
Ip6Prefix prefix4 = Ip6Prefix.valueOf("1000::/64");
Ip6Address nextHop4 = Ip6Address.valueOf("2000::2");
RouteEntry routeEntry4 = new RouteEntry(prefix4, nextHop4);
assertThat(routeEntry3, is(routeEntry4));
}
/**
* Tests non-equality of {@link RouteEntry}.
*/
@Test
public void testNonEquality() {
Ip4Prefix prefix1 = Ip4Prefix.valueOf("1.2.3.0/24");
Ip4Address nextHop1 = Ip4Address.valueOf("5.6.7.8");
RouteEntry routeEntry1 = new RouteEntry(prefix1, nextHop1);
Ip4Prefix prefix2 = Ip4Prefix.valueOf("1.2.3.0/25"); // Different
Ip4Address nextHop2 = Ip4Address.valueOf("5.6.7.8");
RouteEntry routeEntry2 = new RouteEntry(prefix2, nextHop2);
Ip4Prefix prefix3 = Ip4Prefix.valueOf("1.2.3.0/24");
Ip4Address nextHop3 = Ip4Address.valueOf("5.6.7.9"); // Different
RouteEntry routeEntry3 = new RouteEntry(prefix3, nextHop3);
assertThat(routeEntry1, Matchers.is(Matchers.not(routeEntry2)));
assertThat(routeEntry1, Matchers.is(Matchers.not(routeEntry3)));
Ip6Prefix prefix4 = Ip6Prefix.valueOf("1000::/64");
Ip6Address nextHop4 = Ip6Address.valueOf("2000::1");
RouteEntry routeEntry4 = new RouteEntry(prefix4, nextHop4);
Ip6Prefix prefix5 = Ip6Prefix.valueOf("1000::/65");
Ip6Address nextHop5 = Ip6Address.valueOf("2000::1");
RouteEntry routeEntry5 = new RouteEntry(prefix5, nextHop5);
Ip6Prefix prefix6 = Ip6Prefix.valueOf("1000::/64");
Ip6Address nextHop6 = Ip6Address.valueOf("2000::2");
RouteEntry routeEntry6 = new RouteEntry(prefix6, nextHop6);
assertThat(routeEntry4, Matchers.is(Matchers.not(routeEntry5)));
assertThat(routeEntry4, Matchers.is(Matchers.not(routeEntry6)));
}
/**
* Tests object string representation.
*/
@Test
public void testToString() {
Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
RouteEntry routeEntry = new RouteEntry(prefix, nextHop);
assertThat(routeEntry.toString(),
is("RouteEntry{prefix=1.2.3.0/24, nextHop=5.6.7.8}"));
Ip6Prefix prefix6 = Ip6Prefix.valueOf("1000::/64");
Ip6Address nextHop6 = Ip6Address.valueOf("2000::1");
RouteEntry routeEntry6 = new RouteEntry(prefix6, nextHop6);
assertThat(routeEntry6.toString(),
is("RouteEntry{prefix=1000::/64, nextHop=2000::1}"));
}
}