aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/net/src/test/java/org/onosproject/net/host/impl/HostMonitorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/core/net/src/test/java/org/onosproject/net/host/impl/HostMonitorTest.java')
-rw-r--r--framework/src/onos/core/net/src/test/java/org/onosproject/net/host/impl/HostMonitorTest.java505
1 files changed, 0 insertions, 505 deletions
diff --git a/framework/src/onos/core/net/src/test/java/org/onosproject/net/host/impl/HostMonitorTest.java b/framework/src/onos/core/net/src/test/java/org/onosproject/net/host/impl/HostMonitorTest.java
deleted file mode 100644
index 3cd2ca2b..00000000
--- a/framework/src/onos/core/net/src/test/java/org/onosproject/net/host/impl/HostMonitorTest.java
+++ /dev/null
@@ -1,505 +0,0 @@
-/*
- * Copyright 2014-2015 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.impl;
-
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.ARP;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IPv6;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.VlanId;
-import org.onlab.packet.ndp.NeighborSolicitation;
-import org.onosproject.incubator.net.intf.Interface;
-import org.onosproject.incubator.net.intf.InterfaceService;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Host;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.edge.EdgePortService;
-import org.onosproject.net.flow.instructions.Instruction;
-import org.onosproject.net.flow.instructions.Instructions.OutputInstruction;
-import org.onosproject.net.host.HostProvider;
-import org.onosproject.net.host.InterfaceIpAddress;
-import org.onosproject.net.packet.OutboundPacket;
-import org.onosproject.net.packet.PacketServiceAdapter;
-import org.onosproject.net.provider.ProviderId;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class HostMonitorTest {
-
- private static final IpAddress TARGET_IPV4_ADDR =
- IpAddress.valueOf("10.0.0.1");
- private static final IpAddress SOURCE_IPV4_ADDR =
- IpAddress.valueOf("10.0.0.99");
- private static final InterfaceIpAddress IA1 =
- new InterfaceIpAddress(SOURCE_IPV4_ADDR, IpPrefix.valueOf("10.0.0.0/24"));
- private MacAddress sourceMac = MacAddress.valueOf(1L);
-
- private static final IpAddress TARGET_IPV6_ADDR =
- IpAddress.valueOf("1000::1");
- private static final IpAddress SOURCE_IPV6_ADDR =
- IpAddress.valueOf("1000::f");
- private static final InterfaceIpAddress IA2 =
- new InterfaceIpAddress(SOURCE_IPV6_ADDR, IpPrefix.valueOf("1000::/64"));
- private MacAddress sourceMac2 = MacAddress.valueOf(2L);
-
- private EdgePortService edgePortService;
-
- private HostMonitor hostMonitor;
-
- @Before
- public void setUp() {
- edgePortService = createMock(EdgePortService.class);
- expect(edgePortService.isEdgePoint(anyObject(ConnectPoint.class)))
- .andReturn(true).anyTimes();
- replay(edgePortService);
- }
-
- @After
- public void shutdown() {
- hostMonitor.shutdown();
- }
-
- @Test
- public void testMonitorIpv4HostExists() throws Exception {
- ProviderId id = new ProviderId("fake://", "id");
-
- Host host = createMock(Host.class);
- expect(host.providerId()).andReturn(id);
- replay(host);
-
- HostManager hostManager = createMock(HostManager.class);
- expect(hostManager.getHostsByIp(TARGET_IPV4_ADDR))
- .andReturn(Collections.singleton(host));
- replay(hostManager);
-
- HostProvider hostProvider = createMock(HostProvider.class);
- expect(hostProvider.id()).andReturn(id).anyTimes();
- hostProvider.triggerProbe(host);
- expectLastCall().once();
- replay(hostProvider);
-
- hostMonitor = new HostMonitor(null, hostManager, null, edgePortService);
-
- hostMonitor.registerHostProvider(hostProvider);
- hostMonitor.addMonitoringFor(TARGET_IPV4_ADDR);
-
- hostMonitor.run(null);
-
- verify(hostProvider);
- }
-
- @Test
- public void testMonitorIpv6HostExists() throws Exception {
- ProviderId id = new ProviderId("fake://", "id");
-
- Host host = createMock(Host.class);
- expect(host.providerId()).andReturn(id);
- replay(host);
-
- HostManager hostManager = createMock(HostManager.class);
- expect(hostManager.getHostsByIp(TARGET_IPV6_ADDR))
- .andReturn(Collections.singleton(host));
- replay(hostManager);
-
- HostProvider hostProvider = createMock(HostProvider.class);
- expect(hostProvider.id()).andReturn(id).anyTimes();
- hostProvider.triggerProbe(host);
- expectLastCall().once();
- replay(hostProvider);
-
- hostMonitor = new HostMonitor(null, hostManager, null, edgePortService);
-
- hostMonitor.registerHostProvider(hostProvider);
- hostMonitor.addMonitoringFor(TARGET_IPV6_ADDR);
-
- hostMonitor.run(null);
-
- verify(hostProvider);
- }
-
- @Test
- public void testMonitorIpv4HostDoesNotExist() throws Exception {
-
- HostManager hostManager = createMock(HostManager.class);
-
- DeviceId devId = DeviceId.deviceId("fake");
-
- Device device = createMock(Device.class);
- expect(device.id()).andReturn(devId).anyTimes();
- replay(device);
-
- PortNumber portNum = PortNumber.portNumber(1L);
-
- Port port = createMock(Port.class);
- expect(port.number()).andReturn(portNum).anyTimes();
- replay(port);
-
- TestDeviceService deviceService = new TestDeviceService();
- deviceService.addDevice(device, Collections.singleton(port));
-
- ConnectPoint cp = new ConnectPoint(devId, portNum);
-
- expect(hostManager.getHostsByIp(TARGET_IPV4_ADDR))
- .andReturn(Collections.emptySet()).anyTimes();
- replay(hostManager);
-
- InterfaceService interfaceService = createMock(InterfaceService.class);
- expect(interfaceService.getMatchingInterface(TARGET_IPV4_ADDR))
- .andReturn(new Interface(cp, Collections.singleton(IA1), sourceMac, VlanId.NONE))
- .anyTimes();
- replay(interfaceService);
-
- TestPacketService packetService = new TestPacketService();
-
-
- // Run the test
- hostMonitor = new HostMonitor(packetService, hostManager, interfaceService, edgePortService);
-
- hostMonitor.addMonitoringFor(TARGET_IPV4_ADDR);
- hostMonitor.run(null);
-
-
- // Check that a packet was sent to our PacketService and that it has
- // the properties we expect
- assertEquals(1, packetService.packets.size());
- OutboundPacket packet = packetService.packets.get(0);
-
- // Check the output port is correct
- assertEquals(1, packet.treatment().immediate().size());
- Instruction instruction = packet.treatment().immediate().get(0);
- assertTrue(instruction instanceof OutputInstruction);
- OutputInstruction oi = (OutputInstruction) instruction;
- assertEquals(portNum, oi.port());
-
- // Check the output packet is correct (well the important bits anyway)
- final byte[] pktData = new byte[packet.data().remaining()];
- packet.data().get(pktData);
- Ethernet eth = Ethernet.deserializer().deserialize(pktData, 0, pktData.length);
- assertEquals(Ethernet.VLAN_UNTAGGED, eth.getVlanID());
- ARP arp = (ARP) eth.getPayload();
- assertArrayEquals(SOURCE_IPV4_ADDR.toOctets(),
- arp.getSenderProtocolAddress());
- assertArrayEquals(sourceMac.toBytes(),
- arp.getSenderHardwareAddress());
- assertArrayEquals(TARGET_IPV4_ADDR.toOctets(),
- arp.getTargetProtocolAddress());
- }
-
- @Test
- public void testMonitorIpv6HostDoesNotExist() throws Exception {
-
- HostManager hostManager = createMock(HostManager.class);
-
- DeviceId devId = DeviceId.deviceId("fake");
-
- Device device = createMock(Device.class);
- expect(device.id()).andReturn(devId).anyTimes();
- replay(device);
-
- PortNumber portNum = PortNumber.portNumber(2L);
-
- Port port = createMock(Port.class);
- expect(port.number()).andReturn(portNum).anyTimes();
- replay(port);
-
- TestDeviceService deviceService = new TestDeviceService();
- deviceService.addDevice(device, Collections.singleton(port));
-
- ConnectPoint cp = new ConnectPoint(devId, portNum);
-
- expect(hostManager.getHostsByIp(TARGET_IPV6_ADDR))
- .andReturn(Collections.emptySet()).anyTimes();
- replay(hostManager);
-
- InterfaceService interfaceService = createMock(InterfaceService.class);
- expect(interfaceService.getMatchingInterface(TARGET_IPV6_ADDR))
- .andReturn(new Interface(cp, Collections.singleton(IA2), sourceMac2, VlanId.NONE))
- .anyTimes();
- replay(interfaceService);
-
- TestPacketService packetService = new TestPacketService();
-
-
- // Run the test
- hostMonitor = new HostMonitor(packetService, hostManager, interfaceService, edgePortService);
-
- hostMonitor.addMonitoringFor(TARGET_IPV6_ADDR);
- hostMonitor.run(null);
-
-
- // Check that a packet was sent to our PacketService and that it has
- // the properties we expect
- assertEquals(1, packetService.packets.size());
- OutboundPacket packet = packetService.packets.get(0);
-
- // Check the output port is correct
- assertEquals(1, packet.treatment().immediate().size());
- Instruction instruction = packet.treatment().immediate().get(0);
- assertTrue(instruction instanceof OutputInstruction);
- OutputInstruction oi = (OutputInstruction) instruction;
- assertEquals(portNum, oi.port());
-
- // Check the output packet is correct (well the important bits anyway)
- final byte[] pktData = new byte[packet.data().remaining()];
- packet.data().get(pktData);
- Ethernet eth = Ethernet.deserializer().deserialize(pktData, 0, pktData.length);
- assertEquals(Ethernet.VLAN_UNTAGGED, eth.getVlanID());
- IPv6 ipv6 = (IPv6) eth.getPayload();
- assertArrayEquals(SOURCE_IPV6_ADDR.toOctets(), ipv6.getSourceAddress());
-
- NeighborSolicitation ns =
- (NeighborSolicitation) ipv6.getPayload().getPayload();
- assertArrayEquals(sourceMac2.toBytes(), ns.getOptions().get(0).data());
-
- assertArrayEquals(TARGET_IPV6_ADDR.toOctets(), ns.getTargetAddress());
- }
-
- @Test
- public void testMonitorIpv4HostDoesNotExistWithVlan() throws Exception {
-
- HostManager hostManager = createMock(HostManager.class);
-
- DeviceId devId = DeviceId.deviceId("fake");
- short vlan = 5;
-
- Device device = createMock(Device.class);
- expect(device.id()).andReturn(devId).anyTimes();
- replay(device);
-
- PortNumber portNum = PortNumber.portNumber(1L);
-
- Port port = createMock(Port.class);
- expect(port.number()).andReturn(portNum).anyTimes();
- replay(port);
-
- TestDeviceService deviceService = new TestDeviceService();
- deviceService.addDevice(device, Collections.singleton(port));
-
- ConnectPoint cp = new ConnectPoint(devId, portNum);
-
- expect(hostManager.getHostsByIp(TARGET_IPV4_ADDR))
- .andReturn(Collections.emptySet()).anyTimes();
- replay(hostManager);
-
- InterfaceService interfaceService = createMock(InterfaceService.class);
- expect(interfaceService.getMatchingInterface(TARGET_IPV4_ADDR))
- .andReturn(new Interface(cp, Collections.singleton(IA1), sourceMac, VlanId.vlanId(vlan)))
- .anyTimes();
- replay(interfaceService);
-
- TestPacketService packetService = new TestPacketService();
-
-
- // Run the test
- hostMonitor = new HostMonitor(packetService, hostManager, interfaceService, edgePortService);
-
- hostMonitor.addMonitoringFor(TARGET_IPV4_ADDR);
- hostMonitor.run(null);
-
-
- // Check that a packet was sent to our PacketService and that it has
- // the properties we expect
- assertEquals(1, packetService.packets.size());
- OutboundPacket packet = packetService.packets.get(0);
-
- // Check the output port is correct
- assertEquals(1, packet.treatment().immediate().size());
- Instruction instruction = packet.treatment().immediate().get(0);
- assertTrue(instruction instanceof OutputInstruction);
- OutputInstruction oi = (OutputInstruction) instruction;
- assertEquals(portNum, oi.port());
-
- // Check the output packet is correct (well the important bits anyway)
- final byte[] pktData = new byte[packet.data().remaining()];
- packet.data().get(pktData);
- Ethernet eth = Ethernet.deserializer().deserialize(pktData, 0, pktData.length);
- assertEquals(vlan, eth.getVlanID());
- ARP arp = (ARP) eth.getPayload();
- assertArrayEquals(SOURCE_IPV4_ADDR.toOctets(),
- arp.getSenderProtocolAddress());
- assertArrayEquals(sourceMac.toBytes(),
- arp.getSenderHardwareAddress());
- assertArrayEquals(TARGET_IPV4_ADDR.toOctets(),
- arp.getTargetProtocolAddress());
- }
-
- @Test
- public void testMonitorIpv6HostDoesNotExistWithVlan() throws Exception {
-
- HostManager hostManager = createMock(HostManager.class);
-
- DeviceId devId = DeviceId.deviceId("fake");
- short vlan = 5;
-
- Device device = createMock(Device.class);
- expect(device.id()).andReturn(devId).anyTimes();
- replay(device);
-
- PortNumber portNum = PortNumber.portNumber(1L);
-
- Port port = createMock(Port.class);
- expect(port.number()).andReturn(portNum).anyTimes();
- replay(port);
-
- TestDeviceService deviceService = new TestDeviceService();
- deviceService.addDevice(device, Collections.singleton(port));
-
- ConnectPoint cp = new ConnectPoint(devId, portNum);
-
- expect(hostManager.getHostsByIp(TARGET_IPV6_ADDR))
- .andReturn(Collections.emptySet()).anyTimes();
- replay(hostManager);
-
- InterfaceService interfaceService = createMock(InterfaceService.class);
- expect(interfaceService.getMatchingInterface(TARGET_IPV6_ADDR))
- .andReturn(new Interface(cp, Collections.singleton(IA2), sourceMac2, VlanId.vlanId(vlan)))
- .anyTimes();
- replay(interfaceService);
-
- TestPacketService packetService = new TestPacketService();
-
-
- // Run the test
- hostMonitor = new HostMonitor(packetService, hostManager, interfaceService, edgePortService);
-
- hostMonitor.addMonitoringFor(TARGET_IPV6_ADDR);
- hostMonitor.run(null);
-
-
- // Check that a packet was sent to our PacketService and that it has
- // the properties we expect
- assertEquals(1, packetService.packets.size());
- OutboundPacket packet = packetService.packets.get(0);
-
- // Check the output port is correct
- assertEquals(1, packet.treatment().immediate().size());
- Instruction instruction = packet.treatment().immediate().get(0);
- assertTrue(instruction instanceof OutputInstruction);
- OutputInstruction oi = (OutputInstruction) instruction;
- assertEquals(portNum, oi.port());
-
- // Check the output packet is correct (well the important bits anyway)
- final byte[] pktData = new byte[packet.data().remaining()];
- packet.data().get(pktData);
- Ethernet eth = Ethernet.deserializer().deserialize(pktData, 0, pktData.length);
- assertEquals(vlan, eth.getVlanID());
- IPv6 ipv6 = (IPv6) eth.getPayload();
- assertArrayEquals(SOURCE_IPV6_ADDR.toOctets(), ipv6.getSourceAddress());
-
- NeighborSolicitation ns =
- (NeighborSolicitation) ipv6.getPayload().getPayload();
- assertArrayEquals(sourceMac2.toBytes(), ns.getOptions().get(0).data());
-
- assertArrayEquals(TARGET_IPV6_ADDR.toOctets(), ns.getTargetAddress());
- }
-
- class TestPacketService extends PacketServiceAdapter {
-
- List<OutboundPacket> packets = new ArrayList<>();
-
- @Override
- public void emit(OutboundPacket packet) {
- packets.add(packet);
- }
- }
-
- class TestDeviceService extends DeviceServiceAdapter {
-
- List<Device> devices = Lists.newArrayList();
- Multimap<DeviceId, Port> devicePorts = HashMultimap.create();
-
- void addDevice(Device device, Set<Port> ports) {
- devices.add(device);
- for (Port p : ports) {
- devicePorts.put(device.id(), p);
- }
- }
-
- @Override
- public int getDeviceCount() {
- return 0;
- }
-
- @Override
- public Iterable<Device> getDevices() {
- return devices;
- }
-
- @Override
- public Device getDevice(DeviceId deviceId) {
- return null;
- }
-
- @Override
- public MastershipRole getRole(DeviceId deviceId) {
- return null;
- }
-
- @Override
- public List<Port> getPorts(DeviceId deviceId) {
- List<Port> ports = Lists.newArrayList();
- for (Port p : devicePorts.get(deviceId)) {
- ports.add(p);
- }
- return ports;
- }
-
- @Override
- public Port getPort(DeviceId deviceId, PortNumber portNumber) {
- return null;
- }
-
- @Override
- public boolean isAvailable(DeviceId deviceId) {
- return false;
- }
-
- @Override
- public void addListener(DeviceListener listener) {
- }
-
- @Override
- public void removeListener(DeviceListener listener) {
- }
- }
-}