[Falcon] link discovery -

- Support for TLV containing cluster fingerprint info
- Config for enabling extra TLV at device level
- Refactored ONOSLLDP constructor for ease of use

Change-Id: I93abe6c0ed8b7e37c80af5920649272faad8856e
diff --git a/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LldpLinkProviderTest.java b/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LldpLinkProviderTest.java
index 758c34e..28b08ea 100644
--- a/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LldpLinkProviderTest.java
+++ b/providers/lldp/src/test/java/org/onosproject/provider/lldp/impl/LldpLinkProviderTest.java
@@ -21,14 +21,22 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.onlab.packet.ChassisId;
 import org.onlab.packet.Ethernet;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.ONOSLLDP;
 import org.onosproject.cfg.ComponentConfigAdapter;
+import org.onosproject.cluster.ClusterMetadata;
+import org.onosproject.cluster.ClusterMetadataService;
+import org.onosproject.cluster.ControllerNode;
+import org.onosproject.cluster.DefaultControllerNode;
 import org.onosproject.cluster.NodeId;
+import org.onosproject.cluster.Partition;
 import org.onosproject.cluster.RoleInfo;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
@@ -80,7 +88,6 @@
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
-
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertEquals;
@@ -143,7 +150,7 @@
         provider.packetService = packetService;
         provider.providerRegistry = linkRegistry;
         provider.masterService = masterService;
-
+        provider.clusterMetadataService = new TestMetadataService();
         provider.activate(null);
     }
 
@@ -696,11 +703,9 @@
 
         @Override
         public InboundPacket inPacket() {
-            ONOSLLDP lldp = new ONOSLLDP();
-            lldp.setChassisId(device.chassisId());
-            lldp.setPortId((int) pd1.number().toLong());
-            lldp.setDevice(deviceService.getDevice(DID1).id().toString());
-
+            ONOSLLDP lldp = ONOSLLDP.onosLLDP(deviceService.getDevice(DID1).id().toString(),
+                                              device.chassisId(),
+                                              (int) pd1.number().toLong());
 
             Ethernet ethPacket = new Ethernet();
             ethPacket.setEtherType(Ethernet.TYPE_LLDP);
@@ -708,8 +713,6 @@
             ethPacket.setPayload(lldp);
             ethPacket.setPad(true);
 
-
-
             ethPacket.setSourceMACAddress("DE:AD:BE:EF:BA:11");
 
             ConnectPoint cp = new ConnectPoint(device.id(), pd3.number());
@@ -941,4 +944,26 @@
             return this;
         }
     }
+
+    private final class TestMetadataService implements ClusterMetadataService {
+        @Override
+        public ClusterMetadata getClusterMetadata() {
+            final NodeId nid = new NodeId("test-node");
+            final IpAddress addr = IpAddress.valueOf(0);
+            final Partition p = new Partition("test-pt", Sets.newHashSet(nid));
+            return ClusterMetadata.builder()
+                    .withName("test-cluster")
+                    .withControllerNodes(Sets.newHashSet(new DefaultControllerNode(nid, addr)))
+                    .withPartitions(Sets.newHashSet(p)).build();
+        }
+
+        @Override
+        public void setClusterMetadata(ClusterMetadata metadata) {
+        }
+
+        @Override
+        public ControllerNode getLocalNode() {
+            return null;
+        }
+    }
 }