Adding a higher priority flow to trap dhcp messages from server at dhcpServerConnectPoint (agg-switch uplink)

 - The flows added previously were being ignored due to the vlan-crossconnect functionality
   in the agg-switch. The priority of those flows were too low.
 - Also added a component config to ensure that ONOS core HostLocationProvider learns
   IP addresses of hosts from dhcp ACK messages.

Change-Id: Ic4377e5ff5642bd05117d9ad286f50f94cc51ec5
diff --git a/src/test/java/org/opencord/dhcpl2relay/DhcpL2RelayTest.java b/src/test/java/org/opencord/dhcpl2relay/DhcpL2RelayTest.java
index f3aea3e..b282728 100755
--- a/src/test/java/org/opencord/dhcpl2relay/DhcpL2RelayTest.java
+++ b/src/test/java/org/opencord/dhcpl2relay/DhcpL2RelayTest.java
@@ -15,8 +15,12 @@
  */
 package org.opencord.dhcpl2relay;
 
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
+import static org.junit.Assert.assertEquals;
+
+import java.nio.ByteBuffer;
+import java.util.List;
+import java.util.Set;
+
 import org.easymock.EasyMock;
 import org.junit.After;
 import org.junit.Before;
@@ -35,7 +39,6 @@
 import org.onlab.packet.dhcp.DhcpOption;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.common.event.impl.TestEventDispatcher;
-import org.onosproject.core.CoreServiceAdapter;
 import org.onosproject.mastership.MastershipServiceAdapter;
 import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.Annotations;
@@ -54,6 +57,7 @@
 import org.onosproject.net.config.Config;
 import org.onosproject.net.config.NetworkConfigRegistryAdapter;
 import org.onosproject.net.device.DeviceServiceAdapter;
+import org.onosproject.net.flowobjective.FlowObjectiveServiceAdapter;
 import org.onosproject.net.host.HostServiceAdapter;
 import org.onosproject.net.provider.ProviderId;
 import org.opencord.dhcpl2relay.packet.DhcpOption82;
@@ -62,11 +66,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.nio.ByteBuffer;
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
 
 public class DhcpL2RelayTest extends DhcpL2RelayTestBase {
 
@@ -101,7 +102,8 @@
     public void setUp() {
         dhcpL2Relay = new DhcpL2Relay();
         dhcpL2Relay.cfgService = new TestNetworkConfigRegistry();
-        dhcpL2Relay.coreService = new CoreServiceAdapter();
+        dhcpL2Relay.coreService = new MockCoreServiceAdapter();
+        dhcpL2Relay.flowObjectiveService = new FlowObjectiveServiceAdapter();
         dhcpL2Relay.packetService = new MockPacketService();
         dhcpL2Relay.componentConfigService = mockConfigService;
         dhcpL2Relay.deviceService = new MockDeviceService();
@@ -269,18 +271,23 @@
         public boolean isEnabled() {
             return true;
         }
+        @Override
         public long portSpeed() {
             return 1000;
         }
+        @Override
         public Element element() {
             return null;
         }
+        @Override
         public PortNumber number() {
             return null;
         }
+        @Override
         public Annotations annotations() {
             return new MockAnnotations();
         }
+        @Override
         public Type type() {
             return Port.Type.FIBER;
         }
@@ -291,6 +298,7 @@
             public String value(String val) {
                 return "PON 1/1";
             }
+            @Override
             public Set<String> keys() {
                 return null;
             }
@@ -315,7 +323,9 @@
 
         @Override
         public void invalidateAll() {}
+        @Override
         public void invalidateId(String id) {}
+        @Override
         public SubscriberAndDeviceInformation getfromCache(String id) {
             return null;
         }
diff --git a/src/test/java/org/opencord/dhcpl2relay/DhcpL2RelayTestBase.java b/src/test/java/org/opencord/dhcpl2relay/DhcpL2RelayTestBase.java
index 7a1dd1a..fb519cf 100755
--- a/src/test/java/org/opencord/dhcpl2relay/DhcpL2RelayTestBase.java
+++ b/src/test/java/org/opencord/dhcpl2relay/DhcpL2RelayTestBase.java
@@ -16,6 +16,14 @@
 
 package org.opencord.dhcpl2relay;
 
+import static org.junit.Assert.fail;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
 import org.onlab.packet.BasePacket;
 import org.onlab.packet.DHCP;
 import org.onlab.packet.DHCPPacketType;
@@ -25,6 +33,9 @@
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.UDP;
 import org.onlab.packet.dhcp.DhcpOption;
+import org.onosproject.core.ApplicationId;
+import org.onosproject.core.CoreServiceAdapter;
+import org.onosproject.core.DefaultApplicationId;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.packet.DefaultInboundPacket;
 import org.onosproject.net.packet.DefaultPacketContext;
@@ -36,14 +47,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-import static org.junit.Assert.fail;
-
 
 /**
  * Common methods for AAA app testing.
@@ -73,6 +76,17 @@
     }
 
     /**
+     * Mock core service adaptor that provides an appId.
+     */
+    class MockCoreServiceAdapter extends CoreServiceAdapter {
+
+        @Override
+        public ApplicationId registerApplication(String name) {
+            return new DefaultApplicationId(10, name);
+        }
+    }
+
+    /**
      * Keeps a reference to the PacketProcessor and saves the OutboundPackets.
      */
     class MockPacketService extends PacketServiceAdapter {