Add the switchStorageImpl unit tests.
diff --git a/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java b/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java
deleted file mode 100644
index fb6b086..0000000
--- a/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java
+++ /dev/null
@@ -1,278 +0,0 @@
-package net.floodlightcontroller.core.internal;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import net.onrc.onos.ofcontroller.core.ISwitchStorage;
-import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.openflow.protocol.OFPhysicalPort;
-
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.tinkerpop.blueprints.Vertex;
-import com.tinkerpop.gremlin.java.GremlinPipeline;
-import com.tinkerpop.pipes.PipeFunction;
-import com.tinkerpop.pipes.branch.LoopPipe.LoopBundle;
-
-import javax.script.ScriptContext;
-import javax.script.ScriptEngine;
-import javax.script.ScriptException;
-import com.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
-
-
-public class SwitchStorageImplTest {
-
-	private ISwitchStorage switchStorage;
-	private TitanGraph titanGraph;
-	
-	@Before
-	public void setUp() throws Exception {
-		titanGraph = TestDatabaseManager.getTestDatabase();
-		TestDatabaseManager.populateTestData(titanGraph);
-		
-		switchStorage = new TestableSwitchStorageImpl();
-	}
-
-	@After
-	public void tearDown() throws Exception {
-		titanGraph.shutdown();
-	}
-
-	@Ignore @Test
-	public void testUpdate() {
-		fail("Not yet implemented");
-	}
-
-	@Test
-	public void testAddPort() {
-		
-		String dpid = "00:00:00:00:00:00:0a:01";
-		short portNumber = 5;
-		
-		OFPhysicalPort portToAdd = new OFPhysicalPort();
-		portToAdd.setName("port 5 at SEA switch");
-		portToAdd.setCurrentFeatures(OFPhysicalPort.OFPortFeatures.OFPPF_100MB_FD.getValue());
-		portToAdd.setPortNumber(portNumber);
-		
-		switchStorage.addPort(dpid, portToAdd);
-		
-		Vertex sw = titanGraph.getVertices("dpid", dpid).iterator().next();
-		
-		GremlinPipeline<Vertex, Vertex> pipe = new GremlinPipeline<Vertex, Vertex>();
-		pipe.start(sw).out("on").has("number", portNumber);
-		
-		assertTrue(pipe.hasNext());
-		Vertex addedPort = pipe.next();
-		assertFalse(pipe.hasNext());
-		
-		assertEquals(addedPort.getProperty("number"), portNumber);
-	}
-
-	@Ignore @Test
-	public void testGetPorts() {
-		fail("Not yet implemented");
-	}
-
-	@Ignore @Test
-	public void testGetPortStringShort() {
-		fail("Not yet implemented");
-	}
-
-	@Ignore @Test
-	public void testGetPortStringString() {
-		fail("Not yet implemented");
-	}
-
-	@Test
-	public void testAddSwitch() {
-		String dpid = "00:00:00:00:00:00:0a:07";
-		
-		switchStorage.addSwitch(dpid);
-		
-		Iterator<Vertex> it = titanGraph.getVertices("dpid", dpid).iterator();
-		assertTrue(it.hasNext());
-		Vertex addedSwitch = it.next();
-		assertFalse(it.hasNext());
-		
-		assertEquals(addedSwitch.getProperty("type"), "switch");
-		assertEquals(addedSwitch.getProperty("dpid"), dpid);
-		assertEquals(addedSwitch.getProperty("state"), SwitchState.ACTIVE.toString());
-	}
-
-	
-	@Test
-	public void testDeleteSwitch() {
-		String dpid = "00:00:00:00:00:00:0a:01";
-		
-		switchStorage.deleteSwitch(dpid);
-		
-		Iterator<Vertex> it = titanGraph.getVertices("dpid", dpid).iterator();
-		assertFalse(it.hasNext());
-	}
-
-	@Test
-	public void testDeletePortByPortNum() {
-		//FIXME fails because query for the port is wrong in SwitchStorageImpl
-		
-		String dpid = "00:00:00:00:00:00:0a:01";
-		short portNum = 3;
-		
-		switchStorage.deletePort(dpid, portNum);
-		
-		Vertex sw = titanGraph.getVertices("dpid", dpid).iterator().next();
-		
-		/*
-		Iterator<Vertex> it = sw.getVertices(Direction.OUT, "on").iterator();
-		
-		while (it.hasNext()){
-			System.out.println(it.next());
-		}
-		*/
-		
-		GremlinPipeline<Vertex, Vertex> pipe = new GremlinPipeline<Vertex, Vertex>();
-		pipe.start(sw).out("on").has("number", portNum);
-		assertFalse(pipe.hasNext());
-	}
-
-	@Ignore @Test
-	public void testDeletePortStringString() {
-		fail("Not yet implemented");
-	}
-
-	@Ignore @Test
-	public void testGetActiveSwitches() {
-		fail("Not yet implemented");
-	}
-
-	static class MyLoopFunction implements PipeFunction<LoopBundle<Vertex>, Boolean> {
-	    String dpid;
-	    public MyLoopFunction(String dpid) {
-		super();
-		this.dpid = dpid;
-	    }
-	    public Boolean compute(LoopBundle<Vertex> bundle) {
-		Boolean output = false;
-		if (! bundle.getObject().getProperty("dpid").equals(dpid)) {
-		    output = true;
-		}
-		return output;
-	    }
-	}
-
-	@Test
-	public void testShortestPath() {
-	    String dpid_src = "00:00:00:00:00:00:0a:01";
-	    String dpid_dest = "00:00:00:00:00:00:0a:06";
-
-	    //
-	    // Implement the Shortest Path between two vertices by using
-	    // the following Gremlin CLI code:
-	    //   v_src.as("x").out("on").out("link").in("on").dedup().loop("x"){it.object.dpid != v_dest.dpid}.path(){it.dpid}{it.number}{it.number}
-	    // The equivalent code used here is:
-	    //   results = []; v_src.as("x").out("on").out("link").in("on").dedup().loop("x"){it.object.dpid != v_dest.dpid}.path().fill(results)
-	    //
-
-	    // Get the source vertex
-	    Iterator<Vertex> iter = titanGraph.getVertices("dpid", dpid_src).iterator();
-	    if (! iter.hasNext())
-		return;			// Source vertex not found
-	    Vertex v_src = iter.next();
-
-	    // Get the destination vertex
-	    iter = titanGraph.getVertices("dpid", dpid_dest).iterator();
-	    if (! iter.hasNext())
-		return;			// Destination vertex not found
-	    Vertex v_dest = iter.next();
-
-	    //
-	    // Implement the Gremlin script and run it
-	    //
-	    // NOTE: This mechanism is slower. The code is kept here
-	    // for future reference.
-	    //
-	    /*
-	    String gremlin = "v_src.as(\"x\").out(\"on\").out(\"link\").in(\"on\").dedup().loop(\"x\"){it.object.dpid != v_dest.dpid}.path().fill(results)";
-
-	    String gremlin_nopath = "v_src.as(\"x\").out(\"on\").out(\"link\").in(\"on\").dedup().loop(\"x\"){it.object.dpid != \"NO-SUCH-DPID\"}.path().fill(results)";
-
-	    ScriptEngine engine = new GremlinGroovyScriptEngine();
-	    ArrayList<ArrayList<Vertex>> results = new ArrayList<ArrayList<Vertex>>();
-	    engine.getBindings(ScriptContext.ENGINE_SCOPE).put("g", titanGraph);
-	    engine.getBindings(ScriptContext.ENGINE_SCOPE).put("v_src", v_src);
-	    engine.getBindings(ScriptContext.ENGINE_SCOPE).put("v_dest", v_dest);
-	    engine.getBindings(ScriptContext.ENGINE_SCOPE).put("results", results);
-
-	    try {
-		engine.eval(gremlin);
-	    } catch (ScriptException e) {
-		System.err.println("Caught ScriptException running Gremlin script: " + e.getMessage());
-		return;
-	    }
-
-	    for (ArrayList<Vertex> lv : results) {
-		...
-	    }
-	    */
-
-	    MyLoopFunction whileFunction = new MyLoopFunction(dpid_dest);
-	    GremlinPipeline<Vertex, Vertex> pipe = new GremlinPipeline<Vertex, Vertex>();
-	    Collection<List> results = new ArrayList<List>();
-	    GremlinPipeline<Vertex, List> path;
-	    path = pipe.start(v_src).as("x").out("on").out("link").in("on").dedup().loop("x", whileFunction).path();
-	    path.fill(results);
-
-	    //
-	    // Extract the result and compose it into a string
-	    //
-	    String results_str = "";
-	    // System.out.println("BEGIN " + results.size());
-	    for (List l : results) {
-		for (Object o: l) {
-		    Vertex v = (Vertex)(o);
-		    // System.out.println(v);
-		    String type = v.getProperty("type").toString();
-		    results_str += "[type: " + type;
-		    // System.out.println("type: " + type);
-		    if (type.equals("port")) {
-			String number = v.getProperty("number").toString();
-			// System.out.println("number: " + number);
-			results_str += " number: " + number + "]";
-		    }
-		    if (type.equals("switch")) {
-			String dpid = v.getProperty("dpid").toString();
-			// System.out.println("dpid: " + dpid);
-			results_str += " dpid: " + dpid + "]";
-		    }
-		}
-	    }
-	    // System.out.println("END\n");
-	    System.out.println(results_str);
-
-	    //
-	    // Check the result
-	    //
-	    String expected_result = "[type: switch dpid: 00:00:00:00:00:00:0a:01][type: port number: 2][type: port number: 1][type: switch dpid: 00:00:00:00:00:00:0a:03][type: port number: 2][type: port number: 2][type: switch dpid: 00:00:00:00:00:00:0a:04][type: port number: 3][type: port number: 1][type: switch dpid: 00:00:00:00:00:00:0a:06]";
-
-	    assertEquals(results_str, expected_result);
-
-	    //
-	    // Test Shortest-Path computation to non-existing destination
-	    //
-	    results.clear();
-	    MyLoopFunction noDestWhileFunction = new MyLoopFunction("NO-SUCH-DPID");
-	    path = pipe.start(v_src).as("x").out("on").out("link").in("on").dedup().loop("x", noDestWhileFunction).path();
-	    path.fill(results);
-	    assertTrue(results.size() == 0);
-	}
-}
diff --git a/src/test/java/net/floodlightcontroller/core/internal/TestDatabaseManager.java b/src/test/java/net/floodlightcontroller/core/internal/TestDatabaseManager.java
index 3d5e03b..f811c9d 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/TestDatabaseManager.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/TestDatabaseManager.java
@@ -58,8 +58,17 @@
         Iterator<Vertex> it = titanGraph.getVertices("type", "port").iterator();
         while (it.hasNext()){
         	Vertex port = it.next();
-        	Integer portNum = (Integer) port.getProperty("number");
-        	port.setProperty("number", portNum.shortValue());
+
+        	if(port.getProperty("number") instanceof Short)
+        	{
+        		Short portNum = (Short) port.getProperty("number");
+        		port.setProperty("number", portNum.shortValue());
+        	}
+        	else{
+        		Integer portNum = (Integer) port.getProperty("number");	
+        		port.setProperty("number", portNum.shortValue());
+        	}
+
         }
         titanGraph.stopTransaction(Conclusion.SUCCESS);
 	}
diff --git a/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImplTest.java b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImplTest.java
deleted file mode 100644
index cd1651f..0000000
--- a/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImplTest.java
+++ /dev/null
@@ -1,833 +0,0 @@
-package net.floodlightcontroller.devicemanager.internal;
-
-import static org.junit.Assert.*;
-import static org.easymock.EasyMock.*;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.onrc.onos.ofcontroller.core.internal.SwitchStorageImpl;
-import net.onrc.onos.ofcontroller.devicemanager.internal.DeviceStorageImpl;
-import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBOperation;
-import net.floodlightcontroller.devicemanager.IDevice;
-import net.floodlightcontroller.devicemanager.SwitchPort;
-import net.floodlightcontroller.packet.IPv4;
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.openflow.util.HexString;
-import org.powermock.api.easymock.PowerMock;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.thinkaurelius.titan.core.TitanFactory;
-
-//Add Powermock preparation
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({TitanFactory.class, GraphDBConnection.class, GraphDBOperation.class, DeviceStorageImpl.class})
-public class DeviceStorageImplTest{ //extends FloodlightTestCase{
-	
-	protected static Logger log = LoggerFactory.getLogger(SwitchStorageImpl.class);
-	
-	String conf;
-	DeviceStorageImpl deviceImpl;
-    private GraphDBConnection mockConn;
-    private GraphDBOperation mockOpe;
-    
-	@Before
-	public void setUp() throws Exception {
-
-		PowerMock.mockStatic(GraphDBConnection.class);
-		mockConn = createMock(GraphDBConnection.class);
-		PowerMock.suppress(PowerMock.constructor(GraphDBConnection.class));
-		EasyMock.expect(GraphDBConnection.getInstance((String)EasyMock.anyObject())).andReturn(mockConn);
-		PowerMock.replay(GraphDBConnection.class);
-			
-		//PowerMock.mockStatic(GraphDBOperation.class);
-		mockOpe = PowerMock.createMock(GraphDBOperation.class);
-		PowerMock.expectNew(GraphDBOperation.class, mockConn).andReturn(mockOpe);
-		PowerMock.replay(GraphDBOperation.class);
-        // Replace the conf to dummy conf
-		// String conf = "/tmp/cassandra.titan";
-		conf = "/dummy/path/to/db";
-		
-        deviceImpl = new DeviceStorageImpl();
-	}
-
-	@After
-	public void tearDown() throws Exception {	
-		deviceImpl.close();
-		deviceImpl = null;
-	}
-	
-	private String makeIPStringFromArray(Integer[] ipaddresses){
-        String multiIntString = "";
-        for(Integer intValue : ipaddresses)
-        {
-        	if (multiIntString == null || multiIntString.isEmpty()){
-        		multiIntString = "[" + IPv4.fromIPv4Address(intValue);
-        	}
-        	else{
-           		multiIntString += "," + IPv4.fromIPv4Address(intValue);
-        	}
-        }
-        return multiIntString + "]";
-	}
-	
-
-	/**
-	 * Desc:
-	 *  Test method for addDevice method.
-	 * Codition:
-	 *  N/A
-	 * Expect:
-	 * 	Get proper IDeviceObject
-	 */
-	//@Ignore
-	@Test
-	public void testAddNewDevice() {
-		try 
-		{	   
-			//Make mockDevice
-			IDevice mockDev = createMock(Device.class);
-			// Mac addr for test device.
-			String macAddr = "99:99:99:99:99:99";
-			// IP addr for test device
-			String ip = "192.168.100.1";
-			Integer[] ipaddrs = {IPv4.toIPv4Address(ip)};
-			// Mac addr for attached switch
-			String switchMacAddr = "00:00:00:00:00:00:0a:01";		
-			long switchMacAddrL = HexString.toLong(switchMacAddr);
-			// Port number for attached switch
-			short portNum = 2; 
-			SwitchPort sp1 = new SwitchPort(switchMacAddrL, portNum);
-			SwitchPort[] sps = {sp1};
-		
-			expect(mockDev.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev.getIPv4Addresses()).andReturn(ipaddrs).anyTimes();
-			expect(mockDev.getAttachmentPoints()).andReturn(sps).anyTimes();
-			replay(mockDev);
-			
-			//Mock IPortObject 1 with dpid "00:00:00:00:00:00:0a:01" and port "1"
-			IPortObject mockIPort = createMock(IPortObject.class);
-			mockIPort.setNumber(portNum);
-			mockIPort.setType("port");
-			String iPortDesc = "port 1 at SEA Switch";
-			expect(mockIPort.getNumber()).andReturn(portNum).anyTimes();
-			expect(mockIPort.getDesc()).andReturn(iPortDesc).anyTimes();
-			replay(mockIPort);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList = new ArrayList<IPortObject>();
-			portList.add(mockIPort);
-			
-			//Expectation for mockIDeviceObject
-			IDeviceObject mockIDev = createMock(IDeviceObject.class);	
-			expect(mockIDev.getAttachedPorts()).andReturn(portList);
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			replay(mockIDev);	
-			
-			//Expectation for mockOpe
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			expect(mockOpe.newDevice()).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-
-			replay(mockOpe);				
-			
-			deviceImpl.init(conf);
-			
-			//Add the device
-	        IDeviceObject obj = deviceImpl.addDevice(mockDev);	
-			assertNotNull(obj);
-			
-			verify(mockIDev);
-			verify(mockOpe);
-			
-		} catch(Exception e) {
-			fail(e.getMessage());
-		}
-	}
-	
-	/**
-	 * Desc:
-	 * 	Test method for addDevice method.
-	 * Condition:
-	 * 	Already added device is existed.
-	 * Expect:
-	 * 	Get proper IDeviceObject still.
-	 *  Check the IDeviceObject properties set expectedly. 
-	 */
-	//@Ignore
-	@Test
-	public void testAddDeviceExisting() {
-		try 
-		{	   
-			IDevice mockDev = createMock(Device.class);
-			String macAddr = "99:99:99:99:99:99";
-			String ip = "192.168.100.1";
-			Integer[] ipaddrs = {IPv4.toIPv4Address(ip)};
-			String switchMacAddr = "00:00:00:00:00:00:0a:01";		
-			long switchMacAddrL = HexString.toLong(switchMacAddr);
-			short portNum = 2; 
-			SwitchPort sp1 = new SwitchPort(switchMacAddrL, portNum);
-			SwitchPort[] sps = {sp1};
-		
-			expect(mockDev.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev.getIPv4Addresses()).andReturn(ipaddrs).times(2);
-			expect(mockDev.getAttachmentPoints()).andReturn(sps).times(2);
-			replay(mockDev);
-			
-			//Mock IPortObject 1 with dpid "00:00:00:00:00:00:0a:01" and port "1"
-			IPortObject mockIPort = createMock(IPortObject.class);
-			mockIPort.setNumber(portNum);
-			mockIPort.setType("port");
-			String iPortDesc = "port 1 at SEA Switch";
-			expect(mockIPort.getNumber()).andReturn(portNum).anyTimes();
-			expect(mockIPort.getDesc()).andReturn(iPortDesc).anyTimes();
-			replay(mockIPort);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList = new ArrayList<IPortObject>();
-			portList.add(mockIPort);
-			
-			//Expectation for mockIDeviceObject
-			IDeviceObject mockIDev = createMock(IDeviceObject.class);	
-			expect(mockIDev.getAttachedPorts()).andReturn(portList).anyTimes();
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			replay(mockIDev);	
-			
-			//Expectation for mockOpe
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			expect(mockOpe.newDevice()).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			expect(mockOpe.searchDevice(macAddr)).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			replay(mockOpe);				
-			
-			deviceImpl.init(conf);
-			
-			//Add the device
-	        IDeviceObject obj = deviceImpl.addDevice(mockDev);	
-			assertNotNull(obj);
-			
-			//Add the same device
-	        IDeviceObject obj2 = deviceImpl.addDevice(mockDev);
-			assertNotNull(obj2);
-			
-			verify(mockIDev);
-			verify(mockOpe);
-			
-		} catch(Exception e) {
-			fail(e.getMessage());
-		}
-	}
-	
-	/**
-	 * Desc:
-	 * 	Test method for updateDevice method.
-	 * Condition:
-	 * 	The mac address and attachment point are the same. 
-	 *  All of the other parameter are different.
-	 * Expect:
-	 * 	Changed parameters are set expectedly.
-	 */
-	//@Ignore
-	@Test
-	public void testUpdateDevice() {
-		try
-		{
-			IDevice mockDev = createMock(Device.class);
-			String macAddr = "99:99:99:99:99:99";
-			String ip = "192.168.100.1";
-			Integer ipInt = IPv4.toIPv4Address(ip);
-			Integer[] ipaddrs = {ipInt};
-			String switchMacAddr = "00:00:00:00:00:00:0a:01";		
-			long switchMacAddrL = HexString.toLong(switchMacAddr);
-			short portNum = 2; 
-			SwitchPort sp1 = new SwitchPort(switchMacAddrL, portNum);
-			SwitchPort[] sps = {sp1};
-			
-			expect(mockDev.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev.getIPv4Addresses()).andReturn(ipaddrs);
-			expect(mockDev.getAttachmentPoints()).andReturn(sps);
-			replay(mockDev);
-			
-			//Dev2 (attached port is the same)
-			IDevice mockDev2 = createMock(Device.class);
-			String ip2 = "192.168.100.2";
-			Integer ipInt2 = IPv4.toIPv4Address(ip2);
-			Integer[] ipaddrs2 = {ipInt2};
-			
-			expect(mockDev2.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev2.getIPv4Addresses()).andReturn(ipaddrs2);
-			expect(mockDev2.getAttachmentPoints()).andReturn(sps);
-			replay(mockDev2);
-			
-			//Mock IPortObject 1 with dpid "00:00:00:00:00:00:0a:01" and port "1"
-			IPortObject mockIPort = createMock(IPortObject.class);
-			mockIPort.setNumber(portNum);
-			mockIPort.setType("port");
-			String iPortDesc = "port 1 at SEA Switch";
-			expect(mockIPort.getNumber()).andReturn(portNum).anyTimes();
-			expect(mockIPort.getDesc()).andReturn(iPortDesc).anyTimes();
-			replay(mockIPort);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList = new ArrayList<IPortObject>();
-			portList.add(mockIPort);
-			
-			//Expectation for mockIDeviceObject
-			IDeviceObject mockIDev = createMock(IDeviceObject.class);	
-			expect(mockIDev.getAttachedPorts()).andReturn(portList).anyTimes();
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs2));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			replay(mockIDev);	
-			
-			//Expectation for mockOpe
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			expect(mockOpe.newDevice()).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			expect(mockOpe.searchDevice(macAddr)).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			replay(mockOpe);				
-			
-			deviceImpl.init(conf);
-			
-	        IDeviceObject obj = deviceImpl.addDevice(mockDev);	
-			assertNotNull(obj);
-			
-			//update theDevice
-			IDeviceObject obj2 = deviceImpl.updateDevice(mockDev2);
-			assertNotNull(obj2);
-			
-			verify(mockIDev);
-			verify(mockOpe);
-			
-		} catch(Exception e) {
-			fail(e.getMessage());
-		}
-	}
-
-	/**
-	 * Desc:
-	 * 	Test method for testRemoveDevice method.
-	 * Condition:
-	 * 	1. Unregistered IDeviceObject argument is put. 
-	 * Expect:
-	 *  1. Nothing happen when unregistered IDeviceObject is put
-	 * 	2. IDeviceObject will be removed.
-	 */
-	//@Ignore
-	@Test
-	public void testRemoveDevice() {
-		try
-		{
-			IDevice mockDev = createMock(Device.class);
-			String macAddr = "99:99:99:99:99:99";
-			String ip = "192.168.100.1";
-			Integer ipInt = IPv4.toIPv4Address(ip);
-			Integer[] ipaddrs = {ipInt};
-			String switchMacAddr = "00:00:00:00:00:00:0a:01";		
-			long switchMacAddrL = HexString.toLong(switchMacAddr);
-			short portNum = 2; 
-			SwitchPort sp1 = new SwitchPort(switchMacAddrL, portNum);
-			SwitchPort[] sps = {sp1};
-			
-			expect(mockDev.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev.getAttachmentPoints()).andReturn(sps);
-			expect(mockDev.getIPv4Addresses()).andReturn(ipaddrs);
-			replay(mockDev);
-			
-			//Dev2 (attached port is the same)
-			IDevice mockDev2 = createMock(Device.class);
-			String macAddr2 = "33:33:33:33:33:33";
-			expect(mockDev2.getMACAddressString()).andReturn(macAddr2).anyTimes();
-			expect(mockDev2.getIPv4Addresses()).andReturn(ipaddrs);
-			expect(mockDev2.getAttachmentPoints()).andReturn(sps);
-			replay(mockDev2);
-			
-			//Mock IPortObject 1 with dpid "00:00:00:00:00:00:0a:01" and port "1"
-			IPortObject mockIPort = createMock(IPortObject.class);
-			mockIPort.setNumber(portNum);
-			mockIPort.setType("port");
-			String iPortDesc = "port 1 at SEA Switch";
-			expect(mockIPort.getNumber()).andReturn(portNum).anyTimes();
-			expect(mockIPort.getDesc()).andReturn(iPortDesc).anyTimes();
-			replay(mockIPort);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList = new ArrayList<IPortObject>();
-			portList.add(mockIPort);
-			
-			//Expectation for mockIDeviceObject
-			IDeviceObject mockIDev = createMock(IDeviceObject.class);	
-			expect(mockIDev.getAttachedPorts()).andReturn(portList);
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			replay(mockIDev);	
-			
-			//Expectation for mockOpe
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			expect(mockOpe.newDevice()).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			expect(mockOpe.searchDevice(macAddr2)).andReturn(null);
-			expect(mockOpe.searchDevice(macAddr)).andReturn(mockIDev);
-			expect(mockOpe.searchDevice(macAddr)).andReturn(mockIDev);
-			mockOpe.removeDevice(mockIDev);	
-			mockOpe.commit();
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			replay(mockOpe);				
-			
-			deviceImpl.init(conf);
-			
-	        IDeviceObject obj = deviceImpl.addDevice(mockDev);	
-			assertNotNull(obj);
-
-			deviceImpl.removeDevice(mockDev2);
-		    IDeviceObject dev = deviceImpl.getDeviceByMac(macAddr);
-		    assertNotNull(dev);
-			
-			deviceImpl.removeDevice(mockDev);		
-		    IDeviceObject dev2 = deviceImpl.getDeviceByMac(macAddr);
-		    assertNull(dev2);
-		    
-			verify(mockIDev);
-			verify(mockOpe);
-		} catch(Exception e) {
-			fail(e.getMessage());
-		}
-	}
-
-	/**
-	 * Desc:
-	 * 	Test method for getDeviceByMac
-	 * Condition:
-	 * 	1. Unregistered mac address argument is set
-	 * Expect:
-	 * 	1.Nothing happen when you put unregistered mac address
-	 *  2.Get the proper IDeviceObject.
-	 *  3.Check the IDeviceObject properties set expectedly.
-	 */
-	//@Ignore
-	@Test
-	public void testGetDeviceByMac() {
-		try
-		{
-			IDevice mockDev = createMock(Device.class);
-			String macAddr = "99:99:99:99:99:99";
-			String ip = "192.168.100.1";
-			Integer ipInt = IPv4.toIPv4Address(ip);
-			Integer[] ipaddrs = {ipInt};
-			String switchMacAddr = "00:00:00:00:00:00:0a:01";		
-			long switchMacAddrL = HexString.toLong(switchMacAddr);
-			short portNum = 2; 
-			SwitchPort sp1 = new SwitchPort(switchMacAddrL, portNum);
-			SwitchPort[] sps = {sp1};
-			
-			String dummyMac = "33:33:33:33:33:33";
-			
-			expect(mockDev.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev.getIPv4Addresses()).andReturn(ipaddrs);
-			expect(mockDev.getAttachmentPoints()).andReturn(sps);
-			replay(mockDev);
-			
-			//Mock IPortObject 1 with dpid "00:00:00:00:00:00:0a:01" and port "1"
-			IPortObject mockIPort = createMock(IPortObject.class);
-			mockIPort.setNumber(portNum);
-			mockIPort.setType("port");
-			String iPortDesc = "port 1 at SEA Switch";
-			expect(mockIPort.getNumber()).andReturn(portNum).anyTimes();
-			expect(mockIPort.getDesc()).andReturn(iPortDesc).anyTimes();
-			replay(mockIPort);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList = new ArrayList<IPortObject>();
-			portList.add(mockIPort);
-			
-			//Expectation for mockIDeviceObject
-			IDeviceObject mockIDev = createMock(IDeviceObject.class);	
-			expect(mockIDev.getAttachedPorts()).andReturn(portList);
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			replay(mockIDev);	
-			
-			//Expectation for mockOpe
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			expect(mockOpe.newDevice()).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			expect(mockOpe.searchDevice(dummyMac)).andReturn(null);
-			expect(mockOpe.searchDevice(macAddr)).andReturn(mockIDev);
-			replay(mockOpe);				
-			
-			deviceImpl.init(conf);
-			
-	        IDeviceObject obj = deviceImpl.addDevice(mockDev);	
-			assertNotNull(obj);
-			
-		    IDeviceObject dummyDev = deviceImpl.getDeviceByMac(dummyMac);
-		    assertNull(dummyDev);	
-			
-		    IDeviceObject dev = deviceImpl.getDeviceByMac(macAddr);
-		    assertNotNull(dev);
-		    
-			verify(mockIDev);
-			verify(mockOpe);   
-		} catch(Exception e) {
-			fail(e.getMessage());
-		}
-	}
-
-	/**
-	 * Desc:
-	 * 	Test method for getDeviceByIP method.
-	 * Condition:
-	 * 	1. Unregistered ip address argument is set
-	 * Expect:
-	 * 	1. Nothing happen when you put unregistered mac address
-	 * 	2. Get the proper IDeviceObject.
-	 *  3. Check the IDeviceObject properties set expectedly.
-	 */
-	//@Ignore
-	@Test
-	public void testGetDeviceByIP() {
-		try
-		{
-			IDevice mockDev = createMock(Device.class);
-			String macAddr = "99:99:99:99:99:99";
-			String ip = "192.168.100.1";
-			String ip2 = "192.168.100.2";
-			Integer ipInt = IPv4.toIPv4Address(ip);
-			Integer ipInt2 = IPv4.toIPv4Address(ip2);
-			Integer[] ipaddrs = {ipInt, ipInt2};
-			String switchMacAddr = "00:00:00:00:00:00:0a:01";		
-			long switchMacAddrL = HexString.toLong(switchMacAddr);
-			short portNum = 2; 
-			SwitchPort sp1 = new SwitchPort(switchMacAddrL, portNum);
-			SwitchPort[] sps = {sp1};
-			
-			String dummyIP = "222.222.222.222";
-			
-			expect(mockDev.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev.getIPv4Addresses()).andReturn(ipaddrs);
-			expect(mockDev.getAttachmentPoints()).andReturn(sps);
-			replay(mockDev);
-			
-			//Mock IPortObject 1 with dpid "00:00:00:00:00:00:0a:01" and port "1"
-			IPortObject mockIPort = createMock(IPortObject.class);
-			mockIPort.setNumber(portNum);
-			mockIPort.setType("port");
-			String iPortDesc = "port 1 at SEA Switch";
-			expect(mockIPort.getNumber()).andReturn(portNum).anyTimes();
-			expect(mockIPort.getDesc()).andReturn(iPortDesc).anyTimes();
-			replay(mockIPort);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList = new ArrayList<IPortObject>();
-			portList.add(mockIPort);
-			
-			//Expectation for mockIDeviceObject
-			IDeviceObject mockIDev = createMock(IDeviceObject.class);	
-			expect(mockIDev.getAttachedPorts()).andReturn(portList);
-			expect(mockIDev.getIPAddress()).andReturn(makeIPStringFromArray(ipaddrs)).times(2);
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			replay(mockIDev);	
-			
-			
-			//Make mock Iterator for IDeviceObject
-			List<IDeviceObject> deviceList = new ArrayList<IDeviceObject>();
-			deviceList.add(mockIDev);	
-			
-			//Expectation for mockOpe
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			expect(mockOpe.newDevice()).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			expect(mockOpe.getDevices()).andReturn(deviceList).times(2);
-			replay(mockOpe);				
-			
-			deviceImpl.init(conf);
-	
-	        IDeviceObject obj = deviceImpl.addDevice(mockDev);	
-			assertNotNull(obj);
-			
-		    IDeviceObject dummyDev = deviceImpl.getDeviceByIP(dummyIP);
-		    assertNull(dummyDev);
-			
-		    IDeviceObject dev = deviceImpl.getDeviceByIP(ip);
-		    assertNotNull(dev);
-		    
-			verify(mockIDev);
-			verify(mockOpe);
-			
-		} catch(Exception e) {
-			fail(e.getMessage());
-		}
-	}
-
-	/**
-	 * Desc:
-	 * 	Test method for testChangeDeviceAttachmentsIDevice
-	 * Condition:
-	 * 	1. Unexisting attachment point argument is set
-	 * Expect:
-	 * 	1. Nothing happen when you put unexisting attachment point.
-	 * 	2. Set the attachment point expectedly;
-	 */
-	//@Ignore
-	@Test
-	public void testChangeDeviceAttachmentsIDevice() {
-		try
-		{
-			IDevice mockDev = createMock(Device.class);
-			String macAddr = "99:99:99:99:99:99";
-			String ip = "192.168.100.1";
-			Integer ipInt = IPv4.toIPv4Address(ip);
-			Integer[] ipaddrs = {ipInt};
-			String switchMacAddr = "00:00:00:00:00:00:0a:01";		
-			long switchMacAddrL = HexString.toLong(switchMacAddr);
-			short portNum = 2; 
-			SwitchPort sp1 = new SwitchPort(switchMacAddrL, portNum);
-			SwitchPort[] sps = {sp1};
-			
-			expect(mockDev.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev.getIPv4Addresses()).andReturn(ipaddrs);
-			expect(mockDev.getAttachmentPoints()).andReturn(sps);
-			replay(mockDev);
-			
-			//Dev2
-			IDevice mockDev2 = createMock(Device.class);
-			String switchMacAddr2 = "00:00:00:00:00:00:0a:02";
-			long lSwitchMacAddr2 = HexString.toLong(switchMacAddr2);
-			short portNum2 = 2; 
-			SwitchPort sp2 = new SwitchPort(lSwitchMacAddr2, portNum2);
-			SwitchPort sps2[] = {sp2};
-			
-			expect(mockDev2.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev2.getIPv4Addresses()).andReturn(ipaddrs);
-			expect(mockDev2.getAttachmentPoints()).andReturn(sps2);
-			replay(mockDev2);
-			
-			//Dev3
-			IDevice mockDev3 = createMock(Device.class);
-			String switchMacAddr3 = "00:00:00:00:00:00:00:00";
-			long lSwitchMacAddr3 = HexString.toLong(switchMacAddr3);
-			short portNum3 = 1; 
-			SwitchPort sp3 = new SwitchPort(lSwitchMacAddr3, portNum3);
-			SwitchPort sps3[] = {sp3};
-			
-			expect(mockDev3.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev3.getIPv4Addresses()).andReturn(ipaddrs);
-			expect(mockDev3.getAttachmentPoints()).andReturn(sps3);
-			replay(mockDev3);
-			
-			IDeviceObject mockIDev = createMock(IDeviceObject.class);	
-			
-			//Mock IPortObject 1 with dpid "00:00:00:00:00:00:0a:01" and port "1"
-			IPortObject mockIPort = createMock(IPortObject.class);
-			mockIPort.setNumber(portNum);
-			mockIPort.setType("port");
-			String iPortDesc = "port 1 at SEA Switch";
-			expect(mockIPort.getNumber()).andReturn(portNum).anyTimes();
-			expect(mockIPort.getDesc()).andReturn(iPortDesc).anyTimes();
-			mockIPort.removeDevice(mockIDev);
-			mockIPort.removeDevice(mockIDev);
-			replay(mockIPort);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList = new ArrayList<IPortObject>();
-			portList.add(mockIPort);
-			
-			//Expectation for mockIDeviceObject
-			expect(mockIDev.getAttachedPorts()).andReturn(portList).anyTimes();
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			replay(mockIDev);	
-			
-			//Mock IPortObject 2 with dpid "00:00:00:00:00:00:0a:02" and port "2"
-			IPortObject mockIPort2 = createMock(IPortObject.class);
-			mockIPort2.setNumber(portNum2);
-			mockIPort2.setType("port");
-			String iPortDesc2 = "port 2 at LAX Switch";
-			expect(mockIPort2.getNumber()).andReturn(portNum2).anyTimes();
-			expect(mockIPort2.getDesc()).andReturn(iPortDesc2).anyTimes();
-			mockIPort2.setDevice(mockIDev);
-			replay(mockIPort2);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList2 = new ArrayList<IPortObject>();
-			portList2.add(mockIPort2);
-			
-			//Mock IPortObject 3 with dpid "00:00:00:00:00:00:00:00" and port "1"
-			IPortObject mockIPort3 = createMock(IPortObject.class);
-			mockIPort3.setNumber(portNum3);
-			mockIPort3.setType("port");
-			String iPortDesc3 = "n/a";
-			expect(mockIPort3.getNumber()).andReturn(portNum3).anyTimes();
-			expect(mockIPort3.getDesc()).andReturn(iPortDesc3).anyTimes();
-			mockIPort3.setDevice(mockIDev);
-			replay(mockIPort3);
-			
-			//Expectation for mockOpe
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			expect(mockOpe.newDevice()).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			expect(mockOpe.searchDevice(macAddr)).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr2, portNum2)).andReturn(mockIPort2);
-			mockOpe.commit();
-			expect(mockOpe.searchDevice(macAddr)).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr3, portNum3)).andReturn(null);
-			mockOpe.commit();
-			replay(mockOpe);				
-			
-			deviceImpl.init(conf);
-	
-	        IDeviceObject obj = deviceImpl.addDevice(mockDev);	
-			assertNotNull(obj);
-			
-		    deviceImpl.changeDeviceAttachments(mockDev2);
-			
-		    deviceImpl.changeDeviceAttachments(mockDev3);
-		    
-			verify(mockIDev);
-			verify(mockOpe);
-			
-		} catch(Exception e) {
-			fail(e.getMessage());
-		}
-	}
-
-	//@Ignore
-	@Test
-	public void testChangeDeviceAttachmentsIDeviceIDeviceObject() {
-		//It is tested by the testChangeDeviceAttachmentsIDevice
-		deviceImpl.init(conf);
-	}
-
-	/**
-	 * Desc:
-	 * 	Test method for testChangeDeviceIPv4Address
-	 * Condition:
-	 * 	N/A
-	 * Expect:
-	 *  1. Set the ipadress expectedly.
-	 */
-	//@Ignore
-	@Test
-	public void testChangeDeviceIPv4Address() {
-		try
-		{
-			//Dev1
-			IDevice mockDev = createMock(Device.class);
-			String macAddr = "99:99:99:99:99:99";
-			String ip = "192.168.100.1";
-			Integer ipInt = IPv4.toIPv4Address(ip);
-			Integer[] ipaddrs = {ipInt};
-			String switchMacAddr = "00:00:00:00:00:00:0a:01";		
-			long switchMacAddrL = HexString.toLong(switchMacAddr);
-			short portNum = 2; 
-			SwitchPort sp1 = new SwitchPort(switchMacAddrL, portNum);
-			SwitchPort[] sps = {sp1};
-			
-			expect(mockDev.getMACAddressString()).andReturn(macAddr).anyTimes();
-			expect(mockDev.getIPv4Addresses()).andReturn(ipaddrs);
-			expect(mockDev.getAttachmentPoints()).andReturn(sps);
-			replay(mockDev);
-			
-			//Dev2
-			IDevice mockDev2 = createMock(Device.class);
-			String ip2 = "192.168.100.2";
-			Integer ipInt2 = IPv4.toIPv4Address(ip2);
-			Integer[] ipaddrs2 = {ipInt2};
-			expect(mockDev2.getMACAddressString()).andReturn(macAddr);
-			expect(mockDev2.getIPv4Addresses()).andReturn(ipaddrs2);
-			replay(mockDev2);
-			
-			//Mock IPortObject 1 with dpid "00:00:00:00:00:00:0a:01" and port "1"
-			IPortObject mockIPort = createMock(IPortObject.class);
-			mockIPort.setNumber(portNum);
-			mockIPort.setType("port");
-			String iPortDesc = "port 1 at SEA Switch";
-			expect(mockIPort.getNumber()).andReturn(portNum).anyTimes();
-			expect(mockIPort.getDesc()).andReturn(iPortDesc).anyTimes();
-			replay(mockIPort);
-			
-			//Make Iterator for mockIport
-			List<IPortObject> portList = new ArrayList<IPortObject>();
-			portList.add(mockIPort);
-			
-			//Expectation for mockIDeviceObject
-			IDeviceObject mockIDev = createMock(IDeviceObject.class);	
-			expect(mockIDev.getAttachedPorts()).andReturn(portList);
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs));
-			mockIDev.setMACAddress(macAddr);
-			mockIDev.setType("device");
-			mockIDev.setState("ACTIVE");
-			mockIDev.setIPAddress(makeIPStringFromArray(ipaddrs2));
-			replay(mockIDev);	
-			
-			//Expectation for mockOpe
-			expect(mockOpe.searchDevice(macAddr)).andReturn(null);
-			expect(mockOpe.newDevice()).andReturn(mockIDev);
-			expect(mockOpe.searchPort(switchMacAddr, portNum)).andReturn(mockIPort);
-			mockOpe.commit();
-			expect(mockOpe.searchDevice(macAddr)).andReturn(mockIDev);
-			mockOpe.commit();
-			replay(mockOpe);				
-			
-			deviceImpl.init(conf);
-			
-	        IDeviceObject obj = deviceImpl.addDevice(mockDev);	
-			assertNotNull(obj);
-
-	        deviceImpl.changeDeviceIPv4Address(mockDev2);	
-	        
-			verify(mockIDev);
-			verify(mockOpe);
-					
-		} 
-		catch(Exception e) {
-			fail(e.getMessage());
-		}
-	}
-
-}