[ONOS-700][ONOS-1801]refactor tunnel subsystem api.
1.use more abstract and more flexible entity[TunnelPoint] to represent
for source or destination point of tunnel,instead of Label
2.suport for muti-producer
3.use Order entity to record tunnel-order relationship
4.modify Tunnel entity to add more properties.
5.rename Label and LabelId to OpticalTunnelPoint and OpticalLogicId in
order to keep code style consistently,at the same time
OpticalTunnelPoint implements TunnelPoint
6.add junit test

Change-Id: I371afcef5501e468a43758c5982e7a93b443b114
diff --git a/core/api/src/test/java/org/onosproject/net/tunnel/DefaultTunnelTest.java b/core/api/src/test/java/org/onosproject/net/tunnel/DefaultTunnelTest.java
new file mode 100644
index 0000000..7ea5be2
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/net/tunnel/DefaultTunnelTest.java
@@ -0,0 +1,47 @@
+package org.onosproject.net.tunnel;
+
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
+
+import org.junit.Test;
+import org.onlab.packet.IpAddress;
+import org.onosproject.core.DefaultGroupId;
+import org.onosproject.net.provider.ProviderId;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test of the default tunnel model entity.
+ */
+public class DefaultTunnelTest {
+    /**
+     * Checks that the Order class is immutable.
+     */
+    @Test
+    public void testImmutability() {
+        assertThatClassIsImmutable(DefaultTunnel.class);
+    }
+
+    @Test
+    public void testEquality() {
+        TunnelEndPoint src = IpTunnelEndPoint.ipTunnelPoint(IpAddress
+                .valueOf(23423));
+        TunnelEndPoint dst = IpTunnelEndPoint.ipTunnelPoint(IpAddress
+                .valueOf(32421));
+        DefaultGroupId groupId = new DefaultGroupId(92034);
+        TunnelName tunnelName = TunnelName.tunnelName("TunnelName");
+        TunnelId tunnelId = TunnelId.valueOf(41654654);
+        ProviderId producerName1 = new ProviderId("producer1", "13");
+        ProviderId producerName2 = new ProviderId("producer2", "13");
+        Tunnel p1 = new DefaultTunnel(producerName1, src, dst, Tunnel.Type.VXLAN,
+                                      Tunnel.State.ACTIVE, groupId, tunnelId,
+                                      tunnelName);
+        Tunnel p2 = new DefaultTunnel(producerName1, src, dst, Tunnel.Type.VXLAN,
+                                      Tunnel.State.ACTIVE, groupId, tunnelId,
+                                      tunnelName);
+        Tunnel p3 = new DefaultTunnel(producerName2, src, dst, Tunnel.Type.OCH,
+                                      Tunnel.State.ACTIVE, groupId, tunnelId,
+                                      tunnelName);
+        new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3)
+                .testEquals();
+    }
+}