Topology interface to use Dpid, PortNumber

- Modified Switch interface to use Dpid, PortNumber instead of Long
- Modified Port interface to use Dpid, PortNumber instead of Long
- Modified Topology interface which uses Dpid, PortNumber, SwitchPort

- PortImpl#toString() format has changed: "%d:%d" -> "Dpid#toString():PortNumber#toString"

- Part of ONOS-1564

Change-Id: I8decdbb2fb0cce9e087ad49af3a087b65b8511d7
diff --git a/src/test/java/net/onrc/onos/core/topology/TopologyImplTest.java b/src/test/java/net/onrc/onos/core/topology/TopologyImplTest.java
index 2501425..cc7ac9c 100644
--- a/src/test/java/net/onrc/onos/core/topology/TopologyImplTest.java
+++ b/src/test/java/net/onrc/onos/core/topology/TopologyImplTest.java
@@ -1,14 +1,13 @@
 package net.onrc.onos.core.topology;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
+import static org.hamcrest.Matchers.*;
 
 import java.util.Iterator;
 
 import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.PortNumber;
 
 import org.junit.After;
 import org.junit.Before;
@@ -26,7 +25,9 @@
     private TopologyImpl testTopology;
     private static final Long SWITCH_HOST_PORT = 1L;
     private static final Long SWITCH_PORT_1 = 2L;
+    private static final PortNumber PORT_NUMBER_1 = new PortNumber(SWITCH_PORT_1.shortValue());
     private static final Long SWITCH_PORT_2 = 3L;
+    private static final PortNumber PORT_NUMBER_2 = new PortNumber(SWITCH_PORT_2.shortValue());
 
     // Set the test network size, it should be larger than 3
     private static final long TEST_SWITCH_NUM = 100L;
@@ -53,12 +54,12 @@
         // Create one bidirectional link b/w two switches to construct a ring topology
         for (long switchID = 1; switchID <= TEST_SWITCH_NUM; switchID++) {
             LinkImpl testLinkEast = new LinkImpl(testTopology,
-                    testTopology.getPort(switchID, SWITCH_PORT_2),
-                    testTopology.getPort(switchID % TEST_SWITCH_NUM + 1, SWITCH_PORT_1)
+                    testTopology.getPort(new Dpid(switchID), PORT_NUMBER_2),
+                    testTopology.getPort(new Dpid(switchID % TEST_SWITCH_NUM + 1), PORT_NUMBER_1)
                     );
             LinkImpl testLinkWest = new LinkImpl(testTopology,
-                    testTopology.getPort(switchID % TEST_SWITCH_NUM + 1, SWITCH_PORT_1),
-                    testTopology.getPort(switchID, SWITCH_PORT_2)
+                    testTopology.getPort(new Dpid(switchID % TEST_SWITCH_NUM + 1), PORT_NUMBER_1),
+                    testTopology.getPort(new Dpid(switchID), PORT_NUMBER_2)
                     );
             testTopology.putLink(testLinkEast);
             testTopology.putLink(testLinkWest);
@@ -76,17 +77,18 @@
     @Test
     public void testGetSwitch() {
         // Verify the switch is in the graphDB
-        assertNotNull(testTopology.getSwitch(TEST_SWITCH_NUM - 1));
+        assertNotNull(testTopology.getSwitch(new Dpid(TEST_SWITCH_NUM - 1)));
 
         // Verify there is no such switch in the graphDB
-        assertNull(testTopology.getSwitch(TEST_SWITCH_NUM + 1));
-        long swID = 0;
+        assertNull(testTopology.getSwitch(new Dpid(TEST_SWITCH_NUM + 1)));
         long index = 0;
         Iterator<Switch> itr =  testTopology.getSwitches().iterator();
         while (itr.hasNext()) {
             index++;
-            swID = itr.next().getDpid();
-            assertTrue(swID >= 1 && swID <= TEST_SWITCH_NUM);
+            Dpid swID = itr.next().getDpid();
+            assertThat(swID.value(),
+                    is(both(greaterThanOrEqualTo(1L))
+                       .and(lessThanOrEqualTo(TEST_SWITCH_NUM))));
         }
 
         // Verify the total number of switches
@@ -98,13 +100,14 @@
      */
     @Test
     public void testGetPort() {
+        PortNumber bogusPortNum = new PortNumber((short) (SWITCH_PORT_2 + 1));
         for (long switchID = 1; switchID <= TEST_SWITCH_NUM; switchID++) {
             // Verify ports are in the graphDB
-            assertNotNull(testTopology.getSwitch(switchID).getPort(SWITCH_PORT_1));
-            assertNotNull(testTopology.getSwitch(switchID).getPort(SWITCH_PORT_2));
+            assertNotNull(testTopology.getSwitch(new Dpid(switchID)).getPort(PORT_NUMBER_1));
+            assertNotNull(testTopology.getSwitch(new Dpid(switchID)).getPort(PORT_NUMBER_2));
 
             // Verify there is no such port in the graphDB
-            assertNull(testTopology.getSwitch(switchID).getPort(SWITCH_PORT_2 + 1));
+            assertNull(testTopology.getSwitch(new Dpid(switchID)).getPort(bogusPortNum));
         }
     }
 
@@ -113,11 +116,11 @@
      */
     @Test
     public void testGetLink() {
-        long sw1ID = 1L;
-        long sw2ID = 3L;
+        Dpid sw1ID = new Dpid(1L);
+        Dpid sw3ID = new Dpid(3L);
 
         // Verify there is no such link b/w these two switches
-        assertNull((testTopology.getSwitch(sw1ID)).getLinkToNeighbor(sw2ID));
+        assertNull((testTopology.getSwitch(sw1ID)).getLinkToNeighbor(sw3ID));
         long index = 0;
         Iterator<Link> itr = testTopology.getLinks().iterator();
         while (itr.hasNext()) {
@@ -125,11 +128,12 @@
             Link objectLink = itr.next();
             Switch srcSw = (objectLink.getSrcSwitch());
             Switch dstSw = (objectLink.getDstSwitch());
-            if (srcSw.getDpid() < TEST_SWITCH_NUM && dstSw.getDpid() < TEST_SWITCH_NUM) {
-                // Verify the link relationship
-                assertTrue((srcSw.getDpid() == dstSw.getDpid() - 1
-                        || (srcSw.getDpid() == dstSw.getDpid() + 1)));
-            }
+
+            // confirm link is forming a link
+            final long smallerDpid = Math.min(srcSw.getDpid().value(), dstSw.getDpid().value());
+            final long largerDpid = Math.max(srcSw.getDpid().value(), dstSw.getDpid().value());
+            assertThat(largerDpid - smallerDpid,
+                is(either(equalTo(1L)).or(equalTo(TEST_SWITCH_NUM - 1))));
         }
 
         // Verify the total number of links
@@ -141,12 +145,13 @@
      */
     @Test
     public void testGetOutgoingLink() {
+        PortNumber bogusPortNum = new PortNumber((short) (SWITCH_PORT_2 + 1));
         for (long switchID = 1; switchID <= TEST_SWITCH_NUM; switchID++) {
-            assertNotNull(testTopology.getOutgoingLink(switchID, SWITCH_PORT_1));
-            assertNotNull(testTopology.getOutgoingLink(switchID, SWITCH_PORT_2));
+            assertNotNull(testTopology.getOutgoingLink(new Dpid(switchID), PORT_NUMBER_1));
+            assertNotNull(testTopology.getOutgoingLink(new Dpid(switchID), PORT_NUMBER_2));
 
             // Verify there is no such link in the graphDB
-            assertNull(testTopology.getOutgoingLink(switchID, SWITCH_PORT_1 + 2));
+            assertNull(testTopology.getOutgoingLink(new Dpid(switchID), bogusPortNum));
         }
     }
 
@@ -155,13 +160,17 @@
      */
     @Test
     public void testGetIncomingLink() {
+        PortNumber bogusPortNum = new PortNumber((short) (SWITCH_PORT_2 + 1));
         for (long switchID = 1; switchID <= TEST_SWITCH_NUM; switchID++) {
             // Verify the links are in the graphDB
-            assertNotNull(testTopology.getIncomingLink(switchID, SWITCH_PORT_1));
-            assertNotNull(testTopology.getIncomingLink(switchID, SWITCH_PORT_2));
+            assertNotNull(testTopology.getIncomingLink(
+                                           new Dpid(switchID), PORT_NUMBER_1));
+            assertNotNull(testTopology.getIncomingLink(
+                                           new Dpid(switchID), PORT_NUMBER_2));
 
             // Verify there is no such link in the graphDB
-            assertNull(testTopology.getIncomingLink(switchID, SWITCH_PORT_1 + 2));
+            assertNull(testTopology.getIncomingLink(
+                                        new Dpid(switchID), bogusPortNum));
         }
     }
 
@@ -213,7 +222,8 @@
             testTopology.removeLink(objectLink);
 
             // Verify the link was removed successfully
-            assertNull(testTopology.getLink(srcSw.getDpid(), srcPort.getNumber(),
+            assertNull(testTopology.getLink(
+                    srcSw.getDpid(), srcPort.getNumber(),
                     dstSw.getDpid(), dstPort.getNumber()));
         }
 
@@ -227,14 +237,14 @@
     @Test
     public void testRemoveSwitch() {
         for (long switchID = 1; switchID <= TEST_SWITCH_NUM; switchID++) {
-            Iterator<Device> itr = testTopology.getSwitch(switchID).getDevices().iterator();
+            Iterator<Device> itr = testTopology.getSwitch(new Dpid(switchID)).getDevices().iterator();
             while (itr.hasNext()) {
                 testTopology.removeDevice((Device) itr);
             }
             testTopology.removeSwitch(switchID);
 
             // Verify the switch has been removed from the graphDB successfully
-            assertNull(testTopology.getSwitch(switchID));
+            assertNull(testTopology.getSwitch(new Dpid(switchID)));
         }
 
         // Verify all switches have been removed successfully