diff --git a/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java b/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java
index 2f66bcb..8f272c5 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java
@@ -1,33 +1,32 @@
 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.Iterator;
 
-import junit.framework.TestCase;
 import net.floodlightcontroller.core.ISwitchStorage;
 import net.floodlightcontroller.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.Direction;
 import com.tinkerpop.blueprints.Vertex;
 import com.tinkerpop.gremlin.java.GremlinPipeline;
 
-public class SwitchStorageImplTest extends TestCase {
+public class SwitchStorageImplTest {
 
-	private static ISwitchStorage switchStorage;
-	private static TitanGraph titanGraph;
+	private ISwitchStorage switchStorage;
+	private TitanGraph titanGraph;
 	
 	@Before
-	protected void setUp() throws Exception {
-		super.setUp();
-		
-		TestDatabaseManager.deleteTestDatabase();
-		
+	public void setUp() throws Exception {
 		titanGraph = TestDatabaseManager.getTestDatabase();
 		TestDatabaseManager.populateTestData(titanGraph);
 		
@@ -35,13 +34,11 @@
 	}
 
 	@After
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		//TODO reenable once test debugging is finished
-		TestDatabaseManager.deleteTestDatabase();
+	public void tearDown() throws Exception {
+		titanGraph.shutdown();
 	}
 
-	@Test
+	@Ignore @Test
 	public void testUpdate() {
 		fail("Not yet implemented");
 	}
@@ -71,17 +68,17 @@
 		assertEquals(addedPort.getProperty("number"), portNumber);
 	}
 
-	@Test
+	@Ignore @Test
 	public void testGetPorts() {
 		fail("Not yet implemented");
 	}
 
-	@Test
+	@Ignore @Test
 	public void testGetPortStringShort() {
 		fail("Not yet implemented");
 	}
 
-	@Test
+	@Ignore @Test
 	public void testGetPortStringString() {
 		fail("Not yet implemented");
 	}
@@ -103,8 +100,6 @@
 	}
 
 	
-	//FIXME something causes this test to fail when run in the suite. Probably something
-	//to do with not properly refreshing our DB connection for each test
 	@Test
 	public void testDeleteSwitch() {
 		String dpid = "00:00:00:00:00:00:0a:01";
@@ -115,11 +110,6 @@
 		assertFalse(it.hasNext());
 	}
 
-	//TODO there's an issue with the datatypes for things link port numbers.
-	//There should be a standard type in the DB for everything, however there
-	//are discrepancies for example when I read data in from a file port numbers
-	//are ints but if they're put in by the API they're shorts.
-	
 	@Test
 	public void testDeletePortByPortNum() {
 		//FIXME fails because query for the port is wrong in SwitchStorageImpl
@@ -131,25 +121,26 @@
 		
 		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", (int)portNum);
+		pipe.start(sw).out("on").has("number", portNum);
 		assertFalse(pipe.hasNext());
 	}
 
-	@Test
+	@Ignore @Test
 	public void testDeletePortStringString() {
 		fail("Not yet implemented");
 	}
 
-	@Test
+	@Ignore @Test
 	public void testGetActiveSwitches() {
 		fail("Not yet implemented");
 	}
-
 }
diff --git a/src/test/java/net/floodlightcontroller/core/internal/TestDatabaseManager.java b/src/test/java/net/floodlightcontroller/core/internal/TestDatabaseManager.java
index c6872a0..cea67c3 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/TestDatabaseManager.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/TestDatabaseManager.java
@@ -1,15 +1,17 @@
 package net.floodlightcontroller.core.internal;
 
-import java.io.ByteArrayInputStream;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Iterator;
 import java.util.Set;
 
-import org.apache.commons.io.FileUtils;
-
 import junit.framework.Assert;
 
+import org.apache.commons.io.FileUtils;
+
 import com.thinkaurelius.titan.core.TitanFactory;
 import com.thinkaurelius.titan.core.TitanGraph;
 import com.tinkerpop.blueprints.TransactionalGraph.Conclusion;
@@ -19,10 +21,13 @@
 public class TestDatabaseManager {
 	private static final String testDbLocation = "/tmp/onos-testdb";
 	
-	private static final String testDbGraphML = "<?xml version=\"1.0\" ?><graphml xmlns=\"http://graphml.graphdrawing.org/xmlns\">    <key id=\"id\" for=\"node\" attr.name=\"id\" attr.type=\"string\"></key>    <key id=\"type\" for=\"node\" attr.name=\"type\" attr.type=\"string\"></key>    <key id=\"dpid\" for=\"node\" attr.name=\"dpid\" attr.type=\"string\"></key>    <key id=\"desc\" for=\"node\" attr.name=\"desc\" attr.type=\"string\"></key>    <key id=\"number\" for=\"node\" attr.name=\"number\" attr.type=\"int\"></key>    <key id=\"dl_addr\" for=\"node\" attr.name=\"dl_addr\" attr.type=\"string\"></key>    <key id=\"nw_addr\" for=\"node\" attr.name=\"nw_addr\" attr.type=\"string\"></key>    <key id=\"id\" for=\"edge\" attr.name=\"id\" attr.type=\"string\"></key>    <key id=\"source\" for=\"edge\" attr.name=\"source\" attr.type=\"string\"></key>    <key id=\"target\" for=\"edge\" attr.name=\"target\" attr.type=\"string\"></key>    <key id=\"label\" for=\"edge\" attr.name=\"label\" attr.type=\"string\"></key>    <graph id=\"G\" edgedefault=\"directed\">        <node id=\"1\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:01</data>            <data key=\"desc\">OpenFlow Switch at SEA</data>        </node>        <node id=\"2\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:02</data>            <data key=\"desc\">OpenFlow Switch at LAX</data>        </node>        <node id=\"3\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:03</data>            <data key=\"desc\">OpenFlow Switch at CHI</data>        </node>        <node id=\"4\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:04</data>            <data key=\"desc\">OpenFlow Switch at IAH</data>        </node>        <node id=\"5\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:05</data>            <data key=\"desc\">OpenFlow Switch at NYC</data>        </node>        <node id=\"6\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:06</data>            <data key=\"desc\">OpenFlow Switch at ATL</data>        </node>        <node id=\"100\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at SEA Switch</data>        </node>        <node id=\"101\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at SEA Switch</data>        </node>        <node id=\"102\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at SEA Switch</data>        </node>        <node id=\"103\">            <data key=\"type\">port</data>            <data key=\"number\">4</data>            <data key=\"desc\">port 4 at SEA Switch</data>        </node>        <node id=\"104\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at LAX Switch</data>        </node>        <node id=\"105\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at LAX Switch</data>        </node>        <node id=\"106\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at LAX Switch</data>        </node>        <node id=\"107\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at CHI Switch</data>        </node>        <node id=\"108\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at CHI Switch</data>        </node>        <node id=\"109\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at CHI Switch</data>        </node>        <node id=\"110\">            <data key=\"type\">port</data>            <data key=\"number\">4</data>            <data key=\"desc\">port 4 at CHI Switch</data>        </node>        <node id=\"111\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at IAH Switch</data>        </node>        <node id=\"112\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at IAH Switch</data>        </node>        <node id=\"113\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at IAH Switch</data>        </node>        <node id=\"114\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at NYC Switch</data>        </node>        <node id=\"115\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at NYC Switch</data>        </node>        <node id=\"116\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at NYC Switch</data>        </node>        <node id=\"117\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at ATL Switch</data>        </node>        <node id=\"118\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at ATL Switch</data>        </node>        <node id=\"119\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at ATL Switch</data>        </node>        <node id=\"1000\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">20:c9:d0:4a:e1:73</data>            <data key=\"nw_addr\">192.168.10.101</data>        </node>        <node id=\"1001\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">20:c9:d0:4a:e1:62</data>            <data key=\"nw_addr\">192.168.20.101</data>        </node>        <node id=\"1002\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">10:40:f3:e6:8d:55</data>            <data key=\"nw_addr\">192.168.10.1</data>        </node>        <node id=\"1003\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">a0:b3:cc:9c:c6:88</data>            <data key=\"nw_addr\">192.168.20.1</data>        </node>        <node id=\"1004\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">00:04:20:e2:50:a2</data>            <data key=\"nw_addr\">192.168.30.1</data>        </node>        <node id=\"1005\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">58:55:ca:c4:1b:a0</data>            <data key=\"nw_addr\">192.168.40.1</data>        </node>        <edge id=\"10000\" source=\"1\" target=\"101\" label=\"on\"></edge>        <edge id=\"10001\" source=\"1\" target=\"102\" label=\"on\"></edge>        <edge id=\"10002\" source=\"1\" target=\"103\" label=\"on\"></edge>        <edge id=\"10003\" source=\"2\" target=\"104\" label=\"on\"></edge>        <edge id=\"10004\" source=\"2\" target=\"105\" label=\"on\"></edge>        <edge id=\"10005\" source=\"2\" target=\"106\" label=\"on\"></edge>        <edge id=\"10006\" source=\"3\" target=\"107\" label=\"on\"></edge>        <edge id=\"10007\" source=\"3\" target=\"108\" label=\"on\"></edge>        <edge id=\"10008\" source=\"3\" target=\"109\" label=\"on\"></edge>        <edge id=\"10009\" source=\"3\" target=\"110\" label=\"on\"></edge>        <edge id=\"10010\" source=\"4\" target=\"111\" label=\"on\"></edge>        <edge id=\"10011\" source=\"4\" target=\"112\" label=\"on\"></edge>        <edge id=\"10012\" source=\"4\" target=\"113\" label=\"on\"></edge>        <edge id=\"10013\" source=\"5\" target=\"114\" label=\"on\"></edge>        <edge id=\"10014\" source=\"5\" target=\"115\" label=\"on\"></edge>        <edge id=\"10015\" source=\"5\" target=\"116\" label=\"on\"></edge>        <edge id=\"10016\" source=\"6\" target=\"117\" label=\"on\"></edge>        <edge id=\"10017\" source=\"6\" target=\"118\" label=\"on\"></edge>        <edge id=\"10018\" source=\"6\" target=\"119\" label=\"on\"></edge>        <edge id=\"11000\" source=\"101\" target=\"107\" label=\"link\"></edge>         <edge id=\"11003\" source=\"105\" target=\"111\" label=\"link\"></edge>        <edge id=\"11004\" source=\"107\" target=\"101\" label=\"link\"></edge>        <edge id=\"11005\" source=\"108\" target=\"112\" label=\"link\"></edge>        <edge id=\"11006\" source=\"109\" target=\"114\" label=\"link\"></edge>        <edge id=\"11007\" source=\"111\" target=\"105\" label=\"link\"></edge>        <edge id=\"11008\" source=\"112\" target=\"108\" label=\"link\"></edge>        <edge id=\"11009\" source=\"113\" target=\"117\" label=\"link\"></edge>        <edge id=\"11010\" source=\"114\" target=\"109\" label=\"link\"></edge>        <edge id=\"11011\" source=\"115\" target=\"118\" label=\"link\"></edge>        <edge id=\"11012\" source=\"117\" target=\"113\" label=\"link\"></edge>        <edge id=\"11013\" source=\"118\" target=\"115\" label=\"link\"></edge>        <edge id=\"12000\" source=\"103\" target=\"1000\" label=\"host\"></edge>        <edge id=\"12001\" source=\"103\" target=\"1001\" label=\"host\"></edge>        <edge id=\"12002\" source=\"110\" target=\"1002\" label=\"host\"></edge>        <edge id=\"12003\" source=\"116\" target=\"1003\" label=\"host\"></edge>        <edge id=\"12004\" source=\"106\" target=\"1004\" label=\"host\"></edge>        <edge id=\"12005\" source=\"119\" target=\"1005\" label=\"host\"></edge>      </graph>    </graphml>";
+	//private static final String testDbGraphML = "<?xml version=\"1.0\" ?><graphml xmlns=\"http://graphml.graphdrawing.org/xmlns\">    <key id=\"id\" for=\"node\" attr.name=\"id\" attr.type=\"string\"></key>    <key id=\"type\" for=\"node\" attr.name=\"type\" attr.type=\"string\"></key>    <key id=\"dpid\" for=\"node\" attr.name=\"dpid\" attr.type=\"string\"></key>    <key id=\"desc\" for=\"node\" attr.name=\"desc\" attr.type=\"string\"></key>    <key id=\"number\" for=\"node\" attr.name=\"number\" attr.type=\"int\"></key>    <key id=\"dl_addr\" for=\"node\" attr.name=\"dl_addr\" attr.type=\"string\"></key>    <key id=\"nw_addr\" for=\"node\" attr.name=\"nw_addr\" attr.type=\"string\"></key>    <key id=\"id\" for=\"edge\" attr.name=\"id\" attr.type=\"string\"></key>    <key id=\"source\" for=\"edge\" attr.name=\"source\" attr.type=\"string\"></key>    <key id=\"target\" for=\"edge\" attr.name=\"target\" attr.type=\"string\"></key>    <key id=\"label\" for=\"edge\" attr.name=\"label\" attr.type=\"string\"></key>    <graph id=\"G\" edgedefault=\"directed\">        <node id=\"1\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:01</data>            <data key=\"desc\">OpenFlow Switch at SEA</data>        </node>        <node id=\"2\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:02</data>            <data key=\"desc\">OpenFlow Switch at LAX</data>        </node>        <node id=\"3\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:03</data>            <data key=\"desc\">OpenFlow Switch at CHI</data>        </node>        <node id=\"4\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:04</data>            <data key=\"desc\">OpenFlow Switch at IAH</data>        </node>        <node id=\"5\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:05</data>            <data key=\"desc\">OpenFlow Switch at NYC</data>        </node>        <node id=\"6\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:06</data>            <data key=\"desc\">OpenFlow Switch at ATL</data>        </node>        <node id=\"100\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at SEA Switch</data>        </node>        <node id=\"101\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at SEA Switch</data>        </node>        <node id=\"102\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at SEA Switch</data>        </node>        <node id=\"103\">            <data key=\"type\">port</data>            <data key=\"number\">4</data>            <data key=\"desc\">port 4 at SEA Switch</data>        </node>        <node id=\"104\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at LAX Switch</data>        </node>        <node id=\"105\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at LAX Switch</data>        </node>        <node id=\"106\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at LAX Switch</data>        </node>        <node id=\"107\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at CHI Switch</data>        </node>        <node id=\"108\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at CHI Switch</data>        </node>        <node id=\"109\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at CHI Switch</data>        </node>        <node id=\"110\">            <data key=\"type\">port</data>            <data key=\"number\">4</data>            <data key=\"desc\">port 4 at CHI Switch</data>        </node>        <node id=\"111\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at IAH Switch</data>        </node>        <node id=\"112\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at IAH Switch</data>        </node>        <node id=\"113\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at IAH Switch</data>        </node>        <node id=\"114\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at NYC Switch</data>        </node>        <node id=\"115\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at NYC Switch</data>        </node>        <node id=\"116\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at NYC Switch</data>        </node>        <node id=\"117\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at ATL Switch</data>        </node>        <node id=\"118\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at ATL Switch</data>        </node>        <node id=\"119\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at ATL Switch</data>        </node>        <node id=\"1000\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">20:c9:d0:4a:e1:73</data>            <data key=\"nw_addr\">192.168.10.101</data>        </node>        <node id=\"1001\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">20:c9:d0:4a:e1:62</data>            <data key=\"nw_addr\">192.168.20.101</data>        </node>        <node id=\"1002\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">10:40:f3:e6:8d:55</data>            <data key=\"nw_addr\">192.168.10.1</data>        </node>        <node id=\"1003\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">a0:b3:cc:9c:c6:88</data>            <data key=\"nw_addr\">192.168.20.1</data>        </node>        <node id=\"1004\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">00:04:20:e2:50:a2</data>            <data key=\"nw_addr\">192.168.30.1</data>        </node>        <node id=\"1005\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">58:55:ca:c4:1b:a0</data>            <data key=\"nw_addr\">192.168.40.1</data>        </node>        <edge id=\"10000\" source=\"1\" target=\"101\" label=\"on\"></edge>        <edge id=\"10001\" source=\"1\" target=\"102\" label=\"on\"></edge>        <edge id=\"10002\" source=\"1\" target=\"103\" label=\"on\"></edge>        <edge id=\"10003\" source=\"2\" target=\"104\" label=\"on\"></edge>        <edge id=\"10004\" source=\"2\" target=\"105\" label=\"on\"></edge>        <edge id=\"10005\" source=\"2\" target=\"106\" label=\"on\"></edge>        <edge id=\"10006\" source=\"3\" target=\"107\" label=\"on\"></edge>        <edge id=\"10007\" source=\"3\" target=\"108\" label=\"on\"></edge>        <edge id=\"10008\" source=\"3\" target=\"109\" label=\"on\"></edge>        <edge id=\"10009\" source=\"3\" target=\"110\" label=\"on\"></edge>        <edge id=\"10010\" source=\"4\" target=\"111\" label=\"on\"></edge>        <edge id=\"10011\" source=\"4\" target=\"112\" label=\"on\"></edge>        <edge id=\"10012\" source=\"4\" target=\"113\" label=\"on\"></edge>        <edge id=\"10013\" source=\"5\" target=\"114\" label=\"on\"></edge>        <edge id=\"10014\" source=\"5\" target=\"115\" label=\"on\"></edge>        <edge id=\"10015\" source=\"5\" target=\"116\" label=\"on\"></edge>        <edge id=\"10016\" source=\"6\" target=\"117\" label=\"on\"></edge>        <edge id=\"10017\" source=\"6\" target=\"118\" label=\"on\"></edge>        <edge id=\"10018\" source=\"6\" target=\"119\" label=\"on\"></edge>        <edge id=\"11000\" source=\"101\" target=\"107\" label=\"link\"></edge>         <edge id=\"11003\" source=\"105\" target=\"111\" label=\"link\"></edge>        <edge id=\"11004\" source=\"107\" target=\"101\" label=\"link\"></edge>        <edge id=\"11005\" source=\"108\" target=\"112\" label=\"link\"></edge>        <edge id=\"11006\" source=\"109\" target=\"114\" label=\"link\"></edge>        <edge id=\"11007\" source=\"111\" target=\"105\" label=\"link\"></edge>        <edge id=\"11008\" source=\"112\" target=\"108\" label=\"link\"></edge>        <edge id=\"11009\" source=\"113\" target=\"117\" label=\"link\"></edge>        <edge id=\"11010\" source=\"114\" target=\"109\" label=\"link\"></edge>        <edge id=\"11011\" source=\"115\" target=\"118\" label=\"link\"></edge>        <edge id=\"11012\" source=\"117\" target=\"113\" label=\"link\"></edge>        <edge id=\"11013\" source=\"118\" target=\"115\" label=\"link\"></edge>        <edge id=\"12000\" source=\"103\" target=\"1000\" label=\"host\"></edge>        <edge id=\"12001\" source=\"103\" target=\"1001\" label=\"host\"></edge>        <edge id=\"12002\" source=\"110\" target=\"1002\" label=\"host\"></edge>        <edge id=\"12003\" source=\"116\" target=\"1003\" label=\"host\"></edge>        <edge id=\"12004\" source=\"106\" target=\"1004\" label=\"host\"></edge>        <edge id=\"12005\" source=\"119\" target=\"1005\" label=\"host\"></edge>      </graph>    </graphml>";
+	
+	private static final String testDataLocation = "titan/schema/test-network.xml";
 	
 	public static TitanGraph getTestDatabase(){
-		return TitanFactory.open(testDbLocation);
+		//return TitanFactory.open(testDbLocation);
+		return TitanFactory.openInMemoryGraph();
 	}
 	
 	public static void populateTestData(TitanGraph titanGraph){
@@ -36,13 +41,26 @@
         	titanGraph.stopTransaction(Conclusion.SUCCESS);
         }
         
-        InputStream graphMLStream = new ByteArrayInputStream(testDbGraphML.getBytes());
+        //InputStream graphMLStream = new ByteArrayInputStream(testDbGraphML.getBytes());
+        
         try {
+        	InputStream graphMLStream = new FileInputStream(testDataLocation);
 			GraphMLReader.inputGraph(titanGraph, graphMLStream);
+		} catch (FileNotFoundException e) {
+			Assert.fail("Test data file not found: " + testDataLocation);
 		} catch (IOException e) {
 			e.printStackTrace();
 			Assert.fail("IOException thrown");
 		}
+        
+        //Change the type of all port numbers to short in the database
+        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());
+        }
+        titanGraph.stopTransaction(Conclusion.SUCCESS);
 	}
 	
 	public static void deleteTestDatabase(){
diff --git a/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java b/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
index 1d0bd95..a911339 100644
--- a/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
+++ b/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
@@ -1,9 +1,12 @@
 package net.floodlightcontroller.linkdiscovery.internal;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
 import java.util.Iterator;
 import java.util.List;
 
-import junit.framework.TestCase;
 import net.floodlightcontroller.core.INetMapStorage.DM_OPERATION;
 import net.floodlightcontroller.core.internal.TestDatabaseManager;
 import net.floodlightcontroller.linkdiscovery.ILinkStorage;
@@ -11,17 +14,14 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import com.thinkaurelius.titan.core.TitanGraph;
 import com.tinkerpop.blueprints.Vertex;
 import com.tinkerpop.gremlin.java.GremlinPipeline;
 
-public class LinkStorageImplTest extends TestCase {
-	//private static final String testDbLocation = "/tmp/onos-testdb";
-	
-	//private static final String testDbGraphML = "<?xml version=\"1.0\" ?><graphml xmlns=\"http://graphml.graphdrawing.org/xmlns\">    <key id=\"id\" for=\"node\" attr.name=\"id\" attr.type=\"string\"></key>    <key id=\"type\" for=\"node\" attr.name=\"type\" attr.type=\"string\"></key>    <key id=\"dpid\" for=\"node\" attr.name=\"dpid\" attr.type=\"string\"></key>    <key id=\"desc\" for=\"node\" attr.name=\"desc\" attr.type=\"string\"></key>    <key id=\"number\" for=\"node\" attr.name=\"number\" attr.type=\"int\"></key>    <key id=\"dl_addr\" for=\"node\" attr.name=\"dl_addr\" attr.type=\"string\"></key>    <key id=\"nw_addr\" for=\"node\" attr.name=\"nw_addr\" attr.type=\"string\"></key>    <key id=\"id\" for=\"edge\" attr.name=\"id\" attr.type=\"string\"></key>    <key id=\"source\" for=\"edge\" attr.name=\"source\" attr.type=\"string\"></key>    <key id=\"target\" for=\"edge\" attr.name=\"target\" attr.type=\"string\"></key>    <key id=\"label\" for=\"edge\" attr.name=\"label\" attr.type=\"string\"></key>    <graph id=\"G\" edgedefault=\"directed\">        <node id=\"1\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:01</data>            <data key=\"desc\">OpenFlow Switch at SEA</data>        </node>        <node id=\"2\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:02</data>            <data key=\"desc\">OpenFlow Switch at LAX</data>        </node>        <node id=\"3\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:03</data>            <data key=\"desc\">OpenFlow Switch at CHI</data>        </node>        <node id=\"4\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:04</data>            <data key=\"desc\">OpenFlow Switch at IAH</data>        </node>        <node id=\"5\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:05</data>            <data key=\"desc\">OpenFlow Switch at NYC</data>        </node>        <node id=\"6\">            <data key=\"type\">switch</data>            <data key=\"dpid\">00:00:00:00:00:00:0a:06</data>            <data key=\"desc\">OpenFlow Switch at ATL</data>        </node>        <node id=\"100\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at SEA Switch</data>        </node>        <node id=\"101\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at SEA Switch</data>        </node>        <node id=\"102\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at SEA Switch</data>        </node>        <node id=\"103\">            <data key=\"type\">port</data>            <data key=\"number\">4</data>            <data key=\"desc\">port 4 at SEA Switch</data>        </node>        <node id=\"104\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at LAX Switch</data>        </node>        <node id=\"105\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at LAX Switch</data>        </node>        <node id=\"106\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at LAX Switch</data>        </node>        <node id=\"107\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at CHI Switch</data>        </node>        <node id=\"108\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at CHI Switch</data>        </node>        <node id=\"109\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at CHI Switch</data>        </node>        <node id=\"110\">            <data key=\"type\">port</data>            <data key=\"number\">4</data>            <data key=\"desc\">port 4 at CHI Switch</data>        </node>        <node id=\"111\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at IAH Switch</data>        </node>        <node id=\"112\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at IAH Switch</data>        </node>        <node id=\"113\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at IAH Switch</data>        </node>        <node id=\"114\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at NYC Switch</data>        </node>        <node id=\"115\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at NYC Switch</data>        </node>        <node id=\"116\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at NYC Switch</data>        </node>        <node id=\"117\">            <data key=\"type\">port</data>            <data key=\"number\">1</data>            <data key=\"desc\">port 1 at ATL Switch</data>        </node>        <node id=\"118\">            <data key=\"type\">port</data>            <data key=\"number\">2</data>            <data key=\"desc\">port 2 at ATL Switch</data>        </node>        <node id=\"119\">            <data key=\"type\">port</data>            <data key=\"number\">3</data>            <data key=\"desc\">port 3 at ATL Switch</data>        </node>        <node id=\"1000\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">20:c9:d0:4a:e1:73</data>            <data key=\"nw_addr\">192.168.10.101</data>        </node>        <node id=\"1001\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">20:c9:d0:4a:e1:62</data>            <data key=\"nw_addr\">192.168.20.101</data>        </node>        <node id=\"1002\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">10:40:f3:e6:8d:55</data>            <data key=\"nw_addr\">192.168.10.1</data>        </node>        <node id=\"1003\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">a0:b3:cc:9c:c6:88</data>            <data key=\"nw_addr\">192.168.20.1</data>        </node>        <node id=\"1004\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">00:04:20:e2:50:a2</data>            <data key=\"nw_addr\">192.168.30.1</data>        </node>        <node id=\"1005\">            <data key=\"type\">device</data>            <data key=\"dl_addr\">58:55:ca:c4:1b:a0</data>            <data key=\"nw_addr\">192.168.40.1</data>        </node>        <edge id=\"10000\" source=\"1\" target=\"101\" label=\"on\"></edge>        <edge id=\"10001\" source=\"1\" target=\"102\" label=\"on\"></edge>        <edge id=\"10002\" source=\"1\" target=\"103\" label=\"on\"></edge>        <edge id=\"10003\" source=\"2\" target=\"104\" label=\"on\"></edge>        <edge id=\"10004\" source=\"2\" target=\"105\" label=\"on\"></edge>        <edge id=\"10005\" source=\"2\" target=\"106\" label=\"on\"></edge>        <edge id=\"10006\" source=\"3\" target=\"107\" label=\"on\"></edge>        <edge id=\"10007\" source=\"3\" target=\"108\" label=\"on\"></edge>        <edge id=\"10008\" source=\"3\" target=\"109\" label=\"on\"></edge>        <edge id=\"10009\" source=\"3\" target=\"110\" label=\"on\"></edge>        <edge id=\"10010\" source=\"4\" target=\"111\" label=\"on\"></edge>        <edge id=\"10011\" source=\"4\" target=\"112\" label=\"on\"></edge>        <edge id=\"10012\" source=\"4\" target=\"113\" label=\"on\"></edge>        <edge id=\"10013\" source=\"5\" target=\"114\" label=\"on\"></edge>        <edge id=\"10014\" source=\"5\" target=\"115\" label=\"on\"></edge>        <edge id=\"10015\" source=\"5\" target=\"116\" label=\"on\"></edge>        <edge id=\"10016\" source=\"6\" target=\"117\" label=\"on\"></edge>        <edge id=\"10017\" source=\"6\" target=\"118\" label=\"on\"></edge>        <edge id=\"10018\" source=\"6\" target=\"119\" label=\"on\"></edge>        <edge id=\"11000\" source=\"101\" target=\"107\" label=\"link\"></edge>         <edge id=\"11003\" source=\"105\" target=\"111\" label=\"link\"></edge>        <edge id=\"11004\" source=\"107\" target=\"101\" label=\"link\"></edge>        <edge id=\"11005\" source=\"108\" target=\"112\" label=\"link\"></edge>        <edge id=\"11006\" source=\"109\" target=\"114\" label=\"link\"></edge>        <edge id=\"11007\" source=\"111\" target=\"105\" label=\"link\"></edge>        <edge id=\"11008\" source=\"112\" target=\"108\" label=\"link\"></edge>        <edge id=\"11009\" source=\"113\" target=\"117\" label=\"link\"></edge>        <edge id=\"11010\" source=\"114\" target=\"109\" label=\"link\"></edge>        <edge id=\"11011\" source=\"115\" target=\"118\" label=\"link\"></edge>        <edge id=\"11012\" source=\"117\" target=\"113\" label=\"link\"></edge>        <edge id=\"11013\" source=\"118\" target=\"115\" label=\"link\"></edge>        <edge id=\"12000\" source=\"103\" target=\"1000\" label=\"host\"></edge>        <edge id=\"12001\" source=\"103\" target=\"1001\" label=\"host\"></edge>        <edge id=\"12002\" source=\"110\" target=\"1002\" label=\"host\"></edge>        <edge id=\"12003\" source=\"116\" target=\"1003\" label=\"host\"></edge>        <edge id=\"12004\" source=\"106\" target=\"1004\" label=\"host\"></edge>        <edge id=\"12005\" source=\"119\" target=\"1005\" label=\"host\"></edge>      </graph>    </graphml>";
-	
+public class LinkStorageImplTest {
 	private static ILinkStorage linkStorage;
 	private static TitanGraph titanGraph;
 	
@@ -31,38 +31,16 @@
 	
 	@Before
 	public void setUp() throws Exception{
-		super.setUp();
-		TestDatabaseManager.deleteTestDatabase();
-		
-		//titanGraph = TitanFactory.open(testDbLocation);
 		titanGraph = TestDatabaseManager.getTestDatabase();
 		TestDatabaseManager.populateTestData(titanGraph);
 		
 		linkStorage = new TestableLinkStorageImpl(titanGraph);
 	}
 	
-	/*
-	private void populateTestData(){
-		Set<String> s = titanGraph.getIndexedKeys(Vertex.class);
-        if (!s.contains("dpid")) {
-           titanGraph.createKeyIndex("dpid", Vertex.class);
-           titanGraph.stopTransaction(Conclusion.SUCCESS);
-        }
-        if (!s.contains("type")) {
-        	titanGraph.createKeyIndex("type", Vertex.class);
-        	titanGraph.stopTransaction(Conclusion.SUCCESS);
-        }
-        
-        InputStream graphMLStream = new ByteArrayInputStream(testDbGraphML.getBytes());
-        try {
-			GraphMLReader.inputGraph(titanGraph, graphMLStream);
-		} catch (IOException e) {
-			e.printStackTrace();
-			Assert.fail("IOException thrown");
-		}
-        
+	@After
+	public void tearDown() throws Exception {		
+		titanGraph.shutdown();
 	}
-	*/
 	
 	/*
 	 * Add a link between port 1.102 and 2.104
@@ -83,7 +61,7 @@
 		Vertex sw1 = it.next();
 		assertFalse(it.hasNext());
 		
-		pipe.start(sw1).out("on").has("number", 3).out("link").in("on");
+		pipe.start(sw1).out("on").has("number", (short)3).out("link").in("on");
 		
 		assertTrue(pipe.hasNext());
 		Vertex sw2 = pipe.next();
@@ -93,9 +71,9 @@
 		assertEquals((String)sw2.getProperty("dpid"), "00:00:00:00:00:00:0a:02");
 	}
 	
-	@Test
+	//TODO enable once method is written
+	@Ignore @Test
 	public void testGetLinks(){
-		//TODO Make sure this works when the implementation is written
 		List<Link> list = linkStorage.getLinks(Long.decode("0x0000000000000a01"), 2);
 		
 		assertEquals(list.size(), 1);
@@ -107,9 +85,9 @@
 		assertEquals(l.getDstPort(), (short)1);
 	}
 	
-	@Test
+	//TODO enable once method is written
+	@Ignore @Test
 	public void testUpdateDelete(){
-		//TODO Make sure this works when the implementation is written
 		Link linkToDelete = new Link(Long.decode("0x0000000000000a01"), 2, Long.decode("0x0000000000000a03"), 1);
 		
 		linkStorage.update(linkToDelete, DM_OPERATION.DELETE);
@@ -127,10 +105,9 @@
 		assertFalse(pipe.hasNext());
 	}
 	
-	@Test
+	//TODO enable once method is written
+	@Ignore @Test
 	public void testDeleteLinks(){
-		//TODO Make sure this works when the implementation is written
-		
 		linkStorage.deleteLinks(Long.decode("0x0000000000000a01"), 2);
 		
 		//Test if it was deleted correctly with the Gremlin API
@@ -146,21 +123,4 @@
 		assertFalse(pipe.hasNext());
 	}
 	
-	@After
-	public void tearDown() throws Exception {
-		super.tearDown();
-		//TODO Reenable this once the tests are written. It's good to clean up afterwards.
-		//TestDatabaseManager.deleteTestDatabase();
-	}
-	
-	/*
-	private void deleteTestDatabase(){
-		try {
-			FileUtils.deleteDirectory(new File(testDbLocation));
-		} catch (IOException e) {
-			System.out.println("delete failed");
-			e.printStackTrace();
-		}
-	}
-	*/
 }
diff --git a/titan/schema/test-network.xml b/titan/schema/test-network.xml
new file mode 100644
index 0000000..a03a99c
--- /dev/null
+++ b/titan/schema/test-network.xml
@@ -0,0 +1,237 @@
+<?xml version="1.0" ?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns">
+
+    <key id="id" for="node" attr.name="id" attr.type="string"></key>
+    <key id="type" for="node" attr.name="type" attr.type="string"></key>
+    <key id="dpid" for="node" attr.name="dpid" attr.type="string"></key>
+    <key id="desc" for="node" attr.name="desc" attr.type="string"></key>
+    <key id="number" for="node" attr.name="number" attr.type="int"></key>
+    <key id="dl_addr" for="node" attr.name="dl_addr" attr.type="string"></key>
+    <key id="nw_addr" for="node" attr.name="nw_addr" attr.type="string"></key>
+    <key id="id" for="edge" attr.name="id" attr.type="string"></key>
+    <key id="source" for="edge" attr.name="source" attr.type="string"></key>
+    <key id="target" for="edge" attr.name="target" attr.type="string"></key>
+    <key id="label" for="edge" attr.name="label" attr.type="string"></key>
+
+    <graph id="G" edgedefault="directed">
+        <node id="1">
+            <data key="type">switch</data>
+            <data key="dpid">00:00:00:00:00:00:0a:01</data>
+            <data key="desc">OpenFlow Switch at SEA</data>
+        </node>
+        <node id="2">
+            <data key="type">switch</data>
+            <data key="dpid">00:00:00:00:00:00:0a:02</data>
+            <data key="desc">OpenFlow Switch at LAX</data>
+        </node>
+        <node id="3">
+            <data key="type">switch</data>
+            <data key="dpid">00:00:00:00:00:00:0a:03</data>
+            <data key="desc">OpenFlow Switch at CHI</data>
+        </node>
+        <node id="4">
+            <data key="type">switch</data>
+            <data key="dpid">00:00:00:00:00:00:0a:04</data>
+            <data key="desc">OpenFlow Switch at IAH</data>
+        </node>
+        <node id="5">
+            <data key="type">switch</data>
+            <data key="dpid">00:00:00:00:00:00:0a:05</data>
+            <data key="desc">OpenFlow Switch at NYC</data>
+        </node>
+        <node id="6">
+            <data key="type">switch</data>
+            <data key="dpid">00:00:00:00:00:00:0a:06</data>
+            <data key="desc">OpenFlow Switch at ATL</data>
+        </node>
+
+        <node id="100">
+            <data key="type">port</data>
+            <data key="number">1</data>
+            <data key="desc">port 1 at SEA Switch</data>
+        </node>
+        <node id="101">
+            <data key="type">port</data>
+            <data key="number">2</data>
+            <data key="desc">port 2 at SEA Switch</data>
+        </node>
+        <node id="102">
+            <data key="type">port</data>
+            <data key="number">3</data>
+            <data key="desc">port 3 at SEA Switch</data>
+        </node>
+        <node id="103">
+            <data key="type">port</data>
+            <data key="number">4</data>
+            <data key="desc">port 4 at SEA Switch</data>
+        </node>
+
+        <node id="104">
+            <data key="type">port</data>
+            <data key="number">1</data>
+            <data key="desc">port 1 at LAX Switch</data>
+        </node>
+        <node id="105">
+            <data key="type">port</data>
+            <data key="number">2</data>
+            <data key="desc">port 2 at LAX Switch</data>
+        </node>
+        <node id="106">
+            <data key="type">port</data>
+            <data key="number">3</data>
+            <data key="desc">port 3 at LAX Switch</data>
+        </node>
+
+        <node id="107">
+            <data key="type">port</data>
+            <data key="number">1</data>
+            <data key="desc">port 1 at CHI Switch</data>
+        </node>
+        <node id="108">
+            <data key="type">port</data>
+            <data key="number">2</data>
+            <data key="desc">port 2 at CHI Switch</data>
+        </node>
+        <node id="109">
+            <data key="type">port</data>
+            <data key="number">3</data>
+            <data key="desc">port 3 at CHI Switch</data>
+        </node>
+        <node id="110">
+            <data key="type">port</data>
+            <data key="number">4</data>
+            <data key="desc">port 4 at CHI Switch</data>
+        </node>
+
+        <node id="111">
+            <data key="type">port</data>
+            <data key="number">1</data>
+            <data key="desc">port 1 at IAH Switch</data>
+        </node>
+        <node id="112">
+            <data key="type">port</data>
+            <data key="number">2</data>
+            <data key="desc">port 2 at IAH Switch</data>
+        </node>
+        <node id="113">
+            <data key="type">port</data>
+            <data key="number">3</data>
+            <data key="desc">port 3 at IAH Switch</data>
+        </node>
+
+        <node id="114">
+            <data key="type">port</data>
+            <data key="number">1</data>
+            <data key="desc">port 1 at NYC Switch</data>
+        </node>
+        <node id="115">
+            <data key="type">port</data>
+            <data key="number">2</data>
+            <data key="desc">port 2 at NYC Switch</data>
+        </node>
+        <node id="116">
+            <data key="type">port</data>
+            <data key="number">3</data>
+            <data key="desc">port 3 at NYC Switch</data>
+        </node>
+
+        <node id="117">
+            <data key="type">port</data>
+            <data key="number">1</data>
+            <data key="desc">port 1 at ATL Switch</data>
+        </node>
+        <node id="118">
+            <data key="type">port</data>
+            <data key="number">2</data>
+            <data key="desc">port 2 at ATL Switch</data>
+        </node>
+        <node id="119">
+            <data key="type">port</data>
+            <data key="number">3</data>
+            <data key="desc">port 3 at ATL Switch</data>
+        </node>
+
+        <node id="1000">
+            <data key="type">device</data>
+            <data key="dl_addr">20:c9:d0:4a:e1:73</data>
+            <data key="nw_addr">192.168.10.101</data>
+        </node>
+        <node id="1001">
+            <data key="type">device</data>
+            <data key="dl_addr">20:c9:d0:4a:e1:62</data>
+            <data key="nw_addr">192.168.20.101</data>
+        </node>
+        <node id="1002">
+            <data key="type">device</data>
+            <data key="dl_addr">10:40:f3:e6:8d:55</data>
+            <data key="nw_addr">192.168.10.1</data>
+        </node>
+        <node id="1003">
+            <data key="type">device</data>
+            <data key="dl_addr">a0:b3:cc:9c:c6:88</data>
+            <data key="nw_addr">192.168.20.1</data>
+        </node>
+        <node id="1004">
+            <data key="type">device</data>
+            <data key="dl_addr">00:04:20:e2:50:a2</data>
+            <data key="nw_addr">192.168.30.1</data>
+        </node>
+        <node id="1005">
+            <data key="type">device</data>
+            <data key="dl_addr">58:55:ca:c4:1b:a0</data>
+            <data key="nw_addr">192.168.40.1</data>
+        </node>
+
+        <edge id="10000" source="1" target="101" label="on"></edge>
+        <edge id="10001" source="1" target="102" label="on"></edge>
+        <edge id="10002" source="1" target="103" label="on"></edge>
+
+        <edge id="10003" source="2" target="104" label="on"></edge>
+        <edge id="10004" source="2" target="105" label="on"></edge>
+        <edge id="10005" source="2" target="106" label="on"></edge>
+
+        <edge id="10006" source="3" target="107" label="on"></edge>
+        <edge id="10007" source="3" target="108" label="on"></edge>
+        <edge id="10008" source="3" target="109" label="on"></edge>
+        <edge id="10009" source="3" target="110" label="on"></edge>
+
+        <edge id="10010" source="4" target="111" label="on"></edge>
+        <edge id="10011" source="4" target="112" label="on"></edge>
+        <edge id="10012" source="4" target="113" label="on"></edge>
+
+        <edge id="10013" source="5" target="114" label="on"></edge>
+        <edge id="10014" source="5" target="115" label="on"></edge>
+        <edge id="10015" source="5" target="116" label="on"></edge>
+
+        <edge id="10016" source="6" target="117" label="on"></edge>
+        <edge id="10017" source="6" target="118" label="on"></edge>
+        <edge id="10018" source="6" target="119" label="on"></edge>
+
+        <edge id="11000" source="101" target="107" label="link"></edge>
+        <!--<edge id="11001" source="102" target="104" label="link"></edge>-->
+
+        <edge id="11002" source="104" target="102" label="link"></edge>
+        <edge id="11003" source="105" target="111" label="link"></edge>
+
+        <edge id="11004" source="107" target="101" label="link"></edge>
+        <edge id="11005" source="108" target="112" label="link"></edge>
+        <edge id="11006" source="109" target="114" label="link"></edge>
+
+        <edge id="11007" source="111" target="105" label="link"></edge>
+        <edge id="11008" source="112" target="108" label="link"></edge>
+        <edge id="11009" source="113" target="117" label="link"></edge>
+
+        <edge id="11010" source="114" target="109" label="link"></edge>
+        <edge id="11011" source="115" target="118" label="link"></edge>
+
+        <edge id="11012" source="117" target="113" label="link"></edge>
+        <edge id="11013" source="118" target="115" label="link"></edge>
+
+        <edge id="12000" source="103" target="1000" label="host"></edge>
+        <edge id="12001" source="103" target="1001" label="host"></edge>
+        <edge id="12002" source="110" target="1002" label="host"></edge>
+        <edge id="12003" source="116" target="1003" label="host"></edge>
+        <edge id="12004" source="106" target="1004" label="host"></edge>
+        <edge id="12005" source="119" target="1005" label="host"></edge>
+    </graph>
+</graphml>
\ No newline at end of file
diff --git a/web/restapi3.py b/web/restapi3.py
deleted file mode 100755
index 2205578..0000000
--- a/web/restapi3.py
+++ /dev/null
@@ -1,251 +0,0 @@
-#! /usr/bin/env python
-
-import os
-import sys
-import subprocess
-import json
-import argparse
-import io
-import time
-
-from flask import Flask, json, Response, render_template, make_response, request
-
-## Global Var ##
-RestIP="127.0.0.1"
-RestPort=8182
-DBName="Cassandra-Netmap"
-
-app = Flask(__name__)
-
-## Worker Functions ##
-def log_error(txt):
-  print '%s' % (txt)
-
-def portV_to_dpid(vertex):
-  try:
-    command = "curl -s http://%s:%s/graphs/%s/vertices/%d/in" % (RestIP, RestPort, DBName, vertex)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)['results']
-  except:
-    log_error("REST IF has issue")
-    exit
-
-  for v in parsedResult:
-    if v['type'] == "switch":
-      sw_dpid = v['dpid']
-      break
-
-  return sw_dpid
-
-def switchV_to_dpid(vertex):
-  try:
-    command = "curl -s http://%s:%s/graphs/%s/vertices/%d" % (RestIP, RestPort, DBName, vertex)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)['results']
-  except:
-    log_error("REST IF has issue")
-    exit
-
-  if parsedResult['type'] != "switch":
-    print "not a switch vertex"
-    exit
-  else:
-    sw_dpid = parsedResult['dpid']
-
-  return sw_dpid
-
-def portV_to_port_dpid(vertex):
-  try:
-    command = "curl -s http://%s:%s/graphs/%s/vertices/%d" % (RestIP, RestPort, DBName, vertex)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)['results']
-  except:
-    log_error("REST IF has issue")
-    exit
-
-  port_number = parsedResult['number']
-  switch_dpid = portV_to_dpid(vertex)
-
-  return (port_number, switch_dpid)
-
-def deviceV_to_attachpoint(vertex):
-  try:
-    command = "curl -s http://%s:%s/graphs/%s/vertices/%d/in" % (RestIP, RestPort, DBName, vertex)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)['results']
-  except:
-    log_error("REST IF has issue")
-    exit
-    
-  port = parsedResult[0]['number']
-  vertex = parsedResult[0]['_id']
-  dpid = portV_to_dpid(vertex)
-  return port, dpid
-
-## Rest APIs ##
-### File Fetch ###
-@app.route('/ui/img/<filename>', methods=['GET'])
-@app.route('/img/<filename>', methods=['GET'])
-@app.route('/css/<filename>', methods=['GET'])
-@app.route('/js/models/<filename>', methods=['GET'])
-@app.route('/js/views/<filename>', methods=['GET'])
-@app.route('/js/<filename>', methods=['GET'])
-@app.route('/lib/<filename>', methods=['GET'])
-@app.route('/', methods=['GET'])
-@app.route('/<filename>', methods=['GET'])
-@app.route('/tpl/<filename>', methods=['GET'])
-def return_file(filename="index.html"):
-  if request.path == "/":
-    fullpath = "./index.html"
-  else:
-    fullpath = str(request.path)[1:]
-
-  response = make_response(open(fullpath).read())
-  suffix = fullpath.split(".")[-1]
-
-  if suffix == "html" or suffix == "htm":
-    response.headers["Content-type"] = "text/html"
-  elif suffix == "js":
-    response.headers["Content-type"] = "application/javascript"
-  elif suffix == "css":
-    response.headers["Content-type"] = "text/css"
-  elif suffix == "png":
-    response.headers["Content-type"] = "image/png"
-
-  return response
-
-@app.route("/wm/device/")
-def devices():
-  try:
-    command = "curl -s http://%s:%s/graphs/%s/vertices?key=type\&value=device" % (RestIP, RestPort, DBName)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)['results']
-  except:
-    log_error("REST IF has issue")
-    exit
-
-  devices = []
-  for v in parsedResult:
-    dl_addr = v['dl_addr']
-    nw_addr = v['nw_addr']
-    vertex = v['_id']
-    mac = []
-    mac.append(dl_addr)
-    ip = []
-    ip.append(nw_addr)
-    device = {}
-    device['entryClass']="DefaultEntryClass"
-    device['mac']=mac
-    device['ipv4']=ip
-    device['vlan']=[]
-    device['lastSeen']=0
-    attachpoints =[]
-
-    port, dpid = deviceV_to_attachpoint(vertex)
-    attachpoint = {}
-    attachpoint['port']=port
-    attachpoint['switchDPID']=dpid
-    attachpoints.append(attachpoint)
-    device['attachmentPoint']=attachpoints
-    devices.append(device)
-
-  print devices
-  js = json.dumps(devices)
-  resp = Response(js, status=200, mimetype='application/json')
-  return resp
-
-#{"entityClass":"DefaultEntityClass","mac":["7c:d1:c3:e0:8c:a3"],"ipv4":["192.168.2.102","10.1.10.35"],"vlan":[],"attachmentPoint":[{"port":13,"switchDPID":"00:01:00:12:e2:78:32:44","errorStatus":null}],"lastSeen":1357333593496}
-
-
-## return fake stat for now
-@app.route("/wm/core/switch/<switchId>/<statType>/json")
-def switch_stat(switchId, statType):
-    if statType == "desc":
-        desc=[{"length":1056,"serialNumber":"None","manufacturerDescription":"Nicira Networks, Inc.","hardwareDescription":"Open vSwitch","softwareDescription":"1.4.0+build0","datapathDescription":"None"}]
-        ret = {}
-        ret[switchId]=desc
-    elif statType == "aggregate":
-        aggr = {"packetCount":0,"byteCount":0,"flowCount":0}
-        ret = {}
-        ret[switchId]=aggr
-    else:
-        ret = {} 
-
-    js = json.dumps(ret)
-    resp = Response(js, status=200, mimetype='application/json')
-    return resp
-
-@app.route("/wm/core/controller/switches/json")
-def query_switch():
-  try:
-    command = "curl -s http://%s:%s/graphs/%s/vertices?key=type\&value=switch" % (RestIP, RestPort, DBName)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)['results']
-  except:
-    log_error("REST IF has issue")
-    exit
-
-  switches_ = []
-  for v in parsedResult:
-    dpid = str(v['dpid']) ;# removing quotation
-    sw = {}
-    sw['dpid']=dpid
-    switches_.append(sw)
-
-  print switches_
-  js = json.dumps(switches_)
-  resp = Response(js, status=200, mimetype='application/json')
-  return resp
-
-@app.route("/wm/topology/links/json")
-def query_links():
-  try:
-    command = "curl -s http://%s:%s/graphs/%s/vertices?key=type\&value=port" % (RestIP, RestPort, DBName)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)['results']
-  except:
-    log_error("REST IF has issue")
-    exit
-
-  sport = []
-  switches_ = []
-  for v in parsedResult:
-    srcport = v['_id']
-    try:
-      command = "curl -s http://%s:%s/graphs/%s/vertices/%d/out?_label=link" % (RestIP, RestPort, DBName, srcport)
-      result = os.popen(command).read()
-      linkResults = json.loads(result)['results']
-    except:
-      log_error("REST IF has issue")
-      exit
-
-    for p in linkResults:
-      dstport = p['_id']
-      (sport, sdpid) = portV_to_port_dpid(srcport)
-      (dport, ddpid) = portV_to_port_dpid(dstport)
-      link = {}
-      link["src-switch"]=sdpid
-      link["src-port"]=sport
-      link["src-port-state"]=0
-      link["dst-switch"]=ddpid
-      link["dst-port"]=dport
-      link["dst-port-state"]=0
-      link["type"]="internal"
-      switches_.append(link)
-
-  print switches_
-  js = json.dumps(switches_)
-  resp = Response(js, status=200, mimetype='application/json')
-  return resp
-
-if __name__ == "__main__":
-  if len(sys.argv) > 1 and sys.argv[1] == "-d":
-    print "-- query all switches --"
-    query_switch()
-    print "-- query all links --"
-    query_links()
-    print "-- query all devices --"
-    devices()
-  else:
-    app.debug = True
-    app.run(host="0.0.0.0", port=9000)
