diff options
Diffstat (limited to 'framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java')
-rw-r--r-- | framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java new file mode 100644 index 00000000..6120b7ce --- /dev/null +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/host/InterfaceIpAddressTest.java @@ -0,0 +1,246 @@ +/* + * Copyright 2014 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.net.host; + +import org.junit.Test; +import org.onlab.packet.IpAddress; +import org.onlab.packet.IpPrefix; + +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertThat; + +/** + * Tests for class {@link InterfaceIpAddress}. + */ +public class InterfaceIpAddressTest { + private static final IpAddress IP_ADDRESS = IpAddress.valueOf("1.2.3.4"); + private static final IpPrefix SUBNET_ADDRESS = + IpPrefix.valueOf("1.2.0.0/16"); + private static final IpAddress BROADCAST_ADDRESS = + IpAddress.valueOf("1.2.0.255"); // NOTE: non-default broadcast + private static final IpAddress PEER_ADDRESS = IpAddress.valueOf("5.6.7.8"); + + private static final IpAddress IP_ADDRESS2 = IpAddress.valueOf("10.2.3.4"); + private static final IpPrefix SUBNET_ADDRESS2 = + IpPrefix.valueOf("10.2.0.0/16"); + private static final IpAddress BROADCAST_ADDRESS2 = + IpAddress.valueOf("10.2.0.255"); // NOTE: non-default broadcast + private static final IpAddress PEER_ADDRESS2 = + IpAddress.valueOf("50.6.7.8"); + + /** + * Tests valid class copy constructor. + */ + @Test + public void testCopyConstructor() { + InterfaceIpAddress fromAddr; + InterfaceIpAddress toAddr; + + // Regular interface address with default broadcast address + fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); + toAddr = new InterfaceIpAddress(fromAddr); + assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress())); + assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress())); + assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress())); + assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress())); + + // Interface address with non-default broadcast address + fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, + BROADCAST_ADDRESS); + toAddr = new InterfaceIpAddress(fromAddr); + assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress())); + assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress())); + assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress())); + assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress())); + + // Point-to-point address with peer IP address + fromAddr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, + PEER_ADDRESS); + toAddr = new InterfaceIpAddress(fromAddr); + assertThat(toAddr.ipAddress(), is(fromAddr.ipAddress())); + assertThat(toAddr.subnetAddress(), is(fromAddr.subnetAddress())); + assertThat(toAddr.broadcastAddress(), is(fromAddr.broadcastAddress())); + assertThat(toAddr.peerAddress(), is(fromAddr.peerAddress())); + } + + /** + * Tests invalid class copy constructor for a null object to copy from. + */ + @Test(expected = NullPointerException.class) + public void testInvalidConstructorNullObject() { + InterfaceIpAddress fromAddr = null; + InterfaceIpAddress toAddr = new InterfaceIpAddress(fromAddr); + } + + /** + * Tests valid class constructor for regular interface address with + * default broadcast address. + */ + @Test + public void testConstructorForDefaultBroadcastAddress() { + InterfaceIpAddress addr = + new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); + assertThat(addr.ipAddress(), is(IP_ADDRESS)); + assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS)); + assertThat(addr.broadcastAddress(), nullValue()); + assertThat(addr.peerAddress(), nullValue()); + } + + /** + * Tests valid class constructor for interface address with + * non-default broadcast address. + */ + @Test + public void testConstructorForNonDefaultBroadcastAddress() { + InterfaceIpAddress addr = + new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, + BROADCAST_ADDRESS); + + assertThat(addr.ipAddress(), is(IP_ADDRESS)); + assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS)); + assertThat(addr.broadcastAddress(), is(BROADCAST_ADDRESS)); + assertThat(addr.peerAddress(), nullValue()); + } + + /** + * Tests valid class constructor for point-to-point interface address with + * peer address. + */ + @Test + public void testConstructorForPointToPointAddress() { + InterfaceIpAddress addr = + new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, + PEER_ADDRESS); + + assertThat(addr.ipAddress(), is(IP_ADDRESS)); + assertThat(addr.subnetAddress(), is(SUBNET_ADDRESS)); + assertThat(addr.broadcastAddress(), nullValue()); + assertThat(addr.peerAddress(), is(PEER_ADDRESS)); + } + + /** + * Tests getting the fields of an interface address. + */ + @Test + public void testGetFields() { + InterfaceIpAddress addr; + + // Regular interface address with default broadcast address + addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); + assertThat(addr.ipAddress().toString(), is("1.2.3.4")); + assertThat(addr.subnetAddress().toString(), is("1.2.0.0/16")); + assertThat(addr.broadcastAddress(), is(nullValue())); // TODO: Fix + assertThat(addr.peerAddress(), is(nullValue())); + + // Interface address with non-default broadcast address + addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, + BROADCAST_ADDRESS); + assertThat(addr.ipAddress().toString(), is("1.2.3.4")); + assertThat(addr.subnetAddress().toString(), is("1.2.0.0/16")); + assertThat(addr.broadcastAddress().toString(), is("1.2.0.255")); + assertThat(addr.peerAddress(), is(nullValue())); + + // Point-to-point address with peer IP address + addr = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, + PEER_ADDRESS); + assertThat(addr.ipAddress().toString(), is("1.2.3.4")); + assertThat(addr.subnetAddress().toString(), is("1.2.0.0/16")); + assertThat(addr.broadcastAddress(), is(nullValue())); + assertThat(addr.peerAddress().toString(), is("5.6.7.8")); + } + + /** + * Tests equality of {@link InterfaceIpAddress}. + */ + @Test + public void testEquality() { + InterfaceIpAddress addr1, addr2; + + // Regular interface address with default broadcast address + addr1 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); + addr2 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); + assertThat(addr1, is(addr2)); + + // Interface address with non-default broadcast address + addr1 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, + BROADCAST_ADDRESS); + addr2 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, + BROADCAST_ADDRESS); + assertThat(addr1, is(addr2)); + + // Point-to-point address with peer IP address + addr1 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, + PEER_ADDRESS); + addr2 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, + PEER_ADDRESS); + assertThat(addr1, is(addr2)); + } + + /** + * Tests non-equality of {@link InterfaceIpAddress}. + */ + @Test + public void testNonEquality() { + InterfaceIpAddress addr1, addr2, addr3, addr4; + + // Regular interface address with default broadcast address + addr1 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS); + // Interface address with non-default broadcast address + addr2 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, + BROADCAST_ADDRESS); + // Point-to-point address with peer IP address + addr3 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, + PEER_ADDRESS); + + // Test interface addresses with different properties: + // - default-broadcast vs non-default broadcast + // - regular vs point-to-point + assertThat(addr1, is(not(addr2))); + assertThat(addr1, is(not(addr3))); + assertThat(addr2, is(not(addr3))); + + // Test regular interface address with default broadcast address + addr4 = new InterfaceIpAddress(IP_ADDRESS2, SUBNET_ADDRESS); + assertThat(addr1, is(not(addr4))); + addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS2); + assertThat(addr1, is(not(addr4))); + + // Test interface address with non-default broadcast address + addr4 = new InterfaceIpAddress(IP_ADDRESS2, SUBNET_ADDRESS, + BROADCAST_ADDRESS); + assertThat(addr2, is(not(addr4))); + addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS2, + BROADCAST_ADDRESS); + assertThat(addr2, is(not(addr4))); + addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, + BROADCAST_ADDRESS2); + assertThat(addr2, is(not(addr4))); + + // Test point-to-point address with peer IP address + addr4 = new InterfaceIpAddress(IP_ADDRESS2, SUBNET_ADDRESS, null, + PEER_ADDRESS); + assertThat(addr3, is(not(addr4))); + addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS2, null, + PEER_ADDRESS); + assertThat(addr3, is(not(addr4))); + addr4 = new InterfaceIpAddress(IP_ADDRESS, SUBNET_ADDRESS, null, + PEER_ADDRESS2); + assertThat(addr3, is(not(addr4))); + } + +} |