From 4f2f96961300090544e811cd513a53c1424b6842 Mon Sep 17 00:00:00 2001 From: Ryan Izard <rizard@g.clemson.edu> Date: Fri, 31 Oct 2014 12:07:29 -0400 Subject: [PATCH] VirtualNetworkFilter unit tests complete. Found bug in Entity in devicemanger package where null doesn't mean no switch or port anymore; DatapathId.NONE and OFPort.ZERO do instead. An object will always be there (not null), but it's contents will specify whether the Entity has a switch port or not. --- .../devicemanager/internal/Entity.java | 4 +--- .../core/test/PacketFactory.java | 19 ++++++++++++++----- .../devicemanager/test/MockDeviceManager.java | 2 +- .../VirtualNetworkFilterTest.java | 4 +++- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java index 202a19d3a..79c0199fe 100644 --- a/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java +++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java @@ -98,8 +98,6 @@ public class Entity implements Comparable<Entity> { */ protected Date activeSince; - private int hashCode = 0; - // ************ // Constructors // ************ @@ -157,7 +155,7 @@ public class Entity implements Comparable<Entity> { @JsonIgnore public boolean hasSwitchPort() { - return (switchDPID != null && switchPort != null); + return (switchDPID != null && !switchDPID.equals(DatapathId.NONE) && switchPort != null && !switchPort.equals(OFPort.ZERO)); } public Date getLastSeenTimestamp() { diff --git a/src/test/java/net/floodlightcontroller/core/test/PacketFactory.java b/src/test/java/net/floodlightcontroller/core/test/PacketFactory.java index a4779c1d3..a5fc93bad 100644 --- a/src/test/java/net/floodlightcontroller/core/test/PacketFactory.java +++ b/src/test/java/net/floodlightcontroller/core/test/PacketFactory.java @@ -24,6 +24,8 @@ import net.floodlightcontroller.core.IOFSwitch; import org.projectfloodlight.openflow.protocol.OFFactory; import org.projectfloodlight.openflow.protocol.OFPacketIn; import org.projectfloodlight.openflow.protocol.OFPacketInReason; +import org.projectfloodlight.openflow.protocol.OFVersion; +import org.projectfloodlight.openflow.protocol.match.MatchField; import org.projectfloodlight.openflow.types.IpProtocol; import org.projectfloodlight.openflow.types.MacAddress; import org.projectfloodlight.openflow.types.OFPort; @@ -53,12 +55,19 @@ public class PacketFactory { MacAddress hostMac) { byte[] serializedPacket = DhcpDiscoveryRequestEthernet(hostMac).serialize(); OFFactory factory = sw.getOFFactory(); - OFPacketIn packetIn = factory.buildPacketIn() - .setInPort(OFPort.of(1)) + OFPacketIn.Builder packetInBuilder = factory.buildPacketIn(); + if (factory.getVersion() == OFVersion.OF_10) { + packetInBuilder + .setInPort(OFPort.of(1)) .setData(serializedPacket) - .setReason(OFPacketInReason.NO_MATCH) - .build(); - return packetIn; + .setReason(OFPacketInReason.NO_MATCH); + } else { + packetInBuilder + .setMatch(factory.buildMatch().setExact(MatchField.IN_PORT, OFPort.of(1)).build()) + .setData(serializedPacket) + .setReason(OFPacketInReason.NO_MATCH); + } + return packetInBuilder.build(); } /** diff --git a/src/test/java/net/floodlightcontroller/devicemanager/test/MockDeviceManager.java b/src/test/java/net/floodlightcontroller/devicemanager/test/MockDeviceManager.java index 780e7eb81..a015f5fdc 100644 --- a/src/test/java/net/floodlightcontroller/devicemanager/test/MockDeviceManager.java +++ b/src/test/java/net/floodlightcontroller/devicemanager/test/MockDeviceManager.java @@ -90,7 +90,7 @@ public class MockDeviceManager extends DeviceManagerImpl { ipv4Address = null; if (vlan == null) { - v = VlanVid.ofVlan(-1); + v = VlanVid.ofVlan(-1); // TODO @Ryan there is now a ZERO vlan for OF1.3 that should probably be used here. } else { v = VlanVid.ofVlan(vlan); } diff --git a/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java b/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java index 466776fce..36ae09daf 100644 --- a/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java +++ b/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java @@ -144,15 +144,17 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase { getMockFloodlightProvider().startUp(fmc); vns.startUp(fmc); entityClassifier.startUp(fmc); - + expect(topology.isAttachmentPointPort(DatapathId.of(0), OFPort.ZERO)).andReturn(anyBoolean()).anyTimes(); topology.addListener(deviceService); expectLastCall().times(1); replay(topology); + // Mock switches //fastWilcards mocked as this constant sw1 = EasyMock.createNiceMock(IOFSwitch.class); expect(sw1.getId()).andReturn(DatapathId.of(1L)).anyTimes(); expect(sw1.hasAttribute(IOFSwitch.PROP_SUPPORTS_OFPP_TABLE)).andReturn(true).anyTimes(); + expect(sw1.getOFFactory()).andReturn(OFFactories.getFactory(OFVersion.OF_13)).anyTimes(); replay(sw1); // Mock packets -- GitLab