Merge branch 'dev1'
Conflicts:
src/main/java/net/onrc/onos/util/GraphDBOperation.java
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
index a6c291f..f8f50a3 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
@@ -9,7 +9,7 @@
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
import net.onrc.onos.ofcontroller.linkdiscovery.ILinkStorage;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.openflow.util.HexString;
import org.slf4j.Logger;
@@ -26,7 +26,7 @@
public class LinkStorageImpl implements ILinkStorage {
protected static Logger log = LoggerFactory.getLogger(LinkStorageImpl.class);
- protected String conf;
+ protected GraphDBOperation dbop;
@Override
public void update(Link link, DM_OPERATION op) {
@@ -55,7 +55,6 @@
}
public void updateLink(Link lt, LinkInfo linkinfo, DM_OPERATION op) {
- GraphDBConnection conn = GraphDBConnection.getInstance(this.conf);
IPortObject vportSrc = null, vportDst = null;
log.trace("updateLink(): op {} {} {}", new Object[]{op, lt, linkinfo});
@@ -64,12 +63,12 @@
// get source port vertex
String dpid = HexString.toHexString(lt.getSrc());
short port = lt.getSrcPort();
- vportSrc = conn.utils().searchPort(conn, dpid, port);
+ vportSrc = dbop.searchPort(dpid, port);
// get dest port vertex
dpid = HexString.toHexString(lt.getDst());
port = lt.getDstPort();
- vportDst = conn.utils().searchPort(conn, dpid, port);
+ vportDst = dbop.searchPort(dpid, port);
if (vportSrc != null && vportDst != null) {
@@ -90,12 +89,12 @@
} else {
vportSrc.setLinkPort(vportDst);
- conn.endTx(Transaction.COMMIT);
+ dbop.commit();
log.debug("updateLink(): link added {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
}
} else {
log.error("updateLink(): failed invalid vertices {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
- conn.endTx(Transaction.ROLLBACK);
+ dbop.rollback();
}
} catch (TitanException e) {
/*
@@ -117,7 +116,6 @@
@Override
public void deleteLink(Link lt) {
- GraphDBConnection conn = GraphDBConnection.getInstance(this.conf);
IPortObject vportSrc = null, vportDst = null;
int count = 0;
@@ -127,12 +125,12 @@
// get source port vertex
String dpid = HexString.toHexString(lt.getSrc());
short port = lt.getSrcPort();
- vportSrc = conn.utils().searchPort(conn, dpid, port);
+ vportSrc = dbop.searchPort(dpid, port);
// get dst port vertex
dpid = HexString.toHexString(lt.getDst());
port = lt.getDstPort();
- vportDst = conn.utils().searchPort(conn, dpid, port);
+ vportDst = dbop.searchPort(dpid, port);
// FIXME: This needs to remove all edges
if (vportSrc != null && vportDst != null) {
@@ -146,13 +144,13 @@
}
}*/
vportSrc.removeLink(vportDst);
- conn.endTx(Transaction.COMMIT);
+ dbop.commit();
log.debug("deleteLink(): deleted edges src {} dst {}", new Object[]{
lt, vportSrc, vportDst});
} else {
log.error("deleteLink(): failed invalid vertices {} src {} dst {}", new Object[]{lt, vportSrc, vportDst});
- conn.endTx(Transaction.ROLLBACK);
+ dbop.rollback();
}
} catch (TitanException e) {
@@ -160,7 +158,7 @@
* retry till we succeed?
*/
log.error("deleteLink(): titan exception {} {}", new Object[]{lt, e.toString()});
- conn.endTx(Transaction.ROLLBACK);
+ dbop.rollback();
e.printStackTrace();
}
}
@@ -168,12 +166,11 @@
// TODO: Fix me
@Override
public List<Link> getLinks(Long dpid, short port) {
- GraphDBConnection conn = GraphDBConnection.getInstance(this.conf);
IPortObject vportSrc, vportDst;
List<Link> links = null;
Link lt;
- vportSrc = conn.utils().searchPort(conn, HexString.toHexString(dpid), port);
+ vportSrc = dbop.searchPort(HexString.toHexString(dpid), port);
if (vportSrc != null) {
for (Edge e : vportSrc.asVertex().getEdges(Direction.OUT)) {
@@ -188,9 +185,7 @@
@Override
public void init(String conf) {
//TODO extract the DB location from properties
-
- this.conf = conf;
-
+ this.dbop = new GraphDBOperation(GraphDBConnection.getInstance(conf));
}
@Override
@@ -206,10 +201,7 @@
}
public List<Link> getActiveLinks() {
-
- GraphDBConnection conn = GraphDBConnection.getInstance(this.conf);
-
- Iterable<ISwitchObject> switches = conn.utils().getActiveSwitches(conn);
+ Iterable<ISwitchObject> switches = dbop.getActiveSwitches();
List<Link> links = new ArrayList<Link>();
for (ISwitchObject sw : switches) {
diff --git a/src/main/java/net/onrc/onos/flow/FlowManagerImpl.java b/src/main/java/net/onrc/onos/flow/FlowManagerImpl.java
index d7f3e60..dafbf32 100644
--- a/src/main/java/net/onrc/onos/flow/FlowManagerImpl.java
+++ b/src/main/java/net/onrc/onos/flow/FlowManagerImpl.java
@@ -31,13 +31,14 @@
import net.onrc.onos.ofcontroller.util.Port;
import net.onrc.onos.ofcontroller.util.SwitchPort;
import net.onrc.onos.util.GraphDBConnection;
+import net.onrc.onos.util.GraphDBOperation;
import net.onrc.onos.util.LocalTopologyEventListener;
import net.onrc.onos.util.GraphDBConnection.Transaction;
public class FlowManagerImpl implements IFlowManager {
protected static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
- protected static GraphDBConnection conn;
+ protected GraphDBOperation op;
@Override
public void createFlow(IPortObject src_port, IPortObject dest_port) {
@@ -87,8 +88,8 @@
Short dst_port = flow.getDstPort();
IPortObject src = null;
IPortObject dst = null;
- src = conn.utils().searchPort(conn, src_dpid, src_port);
- dst = conn.utils().searchPort(conn, dst_dpid, dst_port);
+ src = op.searchPort(src_dpid, src_port);
+ dst = op.searchPort(dst_dpid, dst_port);
if (src != null && dst != null) {
FlowPath newFlow = this.computeFlowPath(src,dst);
installFlow(newFlow);
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
index c540e14..ea7fdf0 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
@@ -6,8 +6,7 @@
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.GenerateEvent;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.openflow.protocol.OFPhysicalPort;
import org.openflow.protocol.OFPhysicalPort.OFPortConfig;
@@ -16,7 +15,7 @@
import org.slf4j.LoggerFactory;
public class SwitchStorageImpl implements ISwitchStorage {
- protected GraphDBConnection conn;
+ protected GraphDBOperation op;
protected static Logger log = LoggerFactory.getLogger(SwitchStorageImpl.class);
@Override
@@ -41,13 +40,13 @@
}
private void setStatus(String dpid, SwitchState state) {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
sw.setState(state.toString());
- conn.endTx(Transaction.COMMIT);
+ op.commit();
log.info("SwitchStorage:setStatus dpid:{} state: {} done", dpid, state);
} else {
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.info("SwitchStorage:setStatus dpid:{} state: {} failed: switch not found", dpid, state);
}
}
@@ -64,24 +63,20 @@
}
try {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
- IPortObject p = conn.utils().searchPort(conn, dpid, port.getPortNumber());
+ IPortObject p = op.searchPort(dpid, port.getPortNumber());
log.info("SwitchStorage:addPort dpid:{} port:{}", dpid, port.getPortNumber());
if (p != null) {
log.error("SwitchStorage:addPort dpid:{} port:{} exists", dpid, port.getPortNumber());
} else {
- p = conn.utils().newPort(conn);
-
- p.setType("port");
- p.setNumber(port.getPortNumber());
+ p = op.newPort(port.getPortNumber());
p.setState("ACTIVE");
p.setPortState(port.getState());
p.setDesc(port.getName());
sw.addPort(p);
- conn.endTx(Transaction.COMMIT);
-
+ op.commit();
}
} else {
log.error("SwitchStorage:addPort dpid:{} port:{} : failed switch does not exist", dpid, port.getPortNumber());
@@ -89,7 +84,7 @@
} catch (Exception e) {
// TODO: handle exceptions
e.printStackTrace();
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error("SwitchStorage:addPort dpid:{} port:{} failed", dpid, port.getPortNumber());
}
@@ -119,7 +114,7 @@
log.info("SwitchStorage:addSwitch(): dpid {} ", dpid);
try {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
/*
* Do nothing or throw exception?
@@ -127,15 +122,13 @@
log.info("SwitchStorage:addSwitch dpid:{} already exists", dpid);
sw.setState(SwitchState.ACTIVE.toString());
- conn.endTx(Transaction.COMMIT);
+ op.commit();
} else {
- sw = conn.utils().newSwitch(conn);
+ sw = op.newSwitch(dpid);
if (sw != null) {
- sw.setType("switch");
- sw.setDPID(dpid);
sw.setState(SwitchState.ACTIVE.toString());
- conn.endTx(Transaction.COMMIT);
+ op.commit();
log.info("SwitchStorage:addSwitch dpid:{} added", dpid);
} else {
log.error("switchStorage:addSwitch dpid:{} failed -> newSwitch failed", dpid);
@@ -146,7 +139,7 @@
* retry?
*/
e.printStackTrace();
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.info("SwitchStorage:addSwitch dpid:{} failed", dpid);
}
@@ -159,17 +152,17 @@
try {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
- conn.utils().removeSwitch(conn, sw);
+ op.removeSwitch(sw);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
log.info("SwitchStorage:DeleteSwitch dpid:{} done", dpid);
}
} catch (Exception e) {
// TODO: handle exceptions
e.printStackTrace();
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error("SwitchStorage:deleteSwitch {} failed", dpid);
}
@@ -179,21 +172,21 @@
public void deletePort(String dpid, short port) {
// TODO Auto-generated method stub
try {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
- IPortObject p = conn.utils().searchPort(conn, dpid, port);
+ IPortObject p = op.searchPort(dpid, port);
if (p != null) {
log.info("SwitchStorage:deletePort dpid:{} port:{} found and deleted", dpid, port);
sw.removePort(p);
- conn.utils().removePort(conn, p);
- conn.endTx(Transaction.COMMIT);
+ op.removePort(p);
+ op.commit();
}
}
} catch (Exception e) {
// TODO: handle exceptions
e.printStackTrace();
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.info("SwitchStorage:deletePort dpid:{} port:{} failed", dpid, port);
}
}
@@ -208,9 +201,8 @@
@Override
public void init(String conf) {
-
- conn = GraphDBConnection.getInstance(conf);
-
+ GraphDBConnection conn = GraphDBConnection.getInstance(conf);
+ op = new GraphDBOperation(conn);
}
@@ -221,7 +213,7 @@
@Override
public void close() {
- conn.close();
+ op.close();
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
index a540d64..e279422 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
@@ -4,49 +4,52 @@
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoSwitchService;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TopoSwitchServiceImpl implements ITopoSwitchService {
- private GraphDBConnection conn;
+ private GraphDBOperation op;
protected static Logger log = LoggerFactory.getLogger(TopoSwitchServiceImpl.class);
+ public TopoSwitchServiceImpl(String conf) {
+ op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
+ }
+ public TopoSwitchServiceImpl() {
+ this("/tmp/cassandra.titan");
+ }
+
public void finalize() {
close();
}
@Override
public void close() {
-
- conn.close();
+ op.close();
}
@Override
public Iterable<ISwitchObject> getActiveSwitches() {
// TODO Auto-generated method stub
- conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
- conn.close(); //Commit to ensure we see latest data
- return conn.utils().getActiveSwitches(conn);
+ op.close(); //Commit to ensure we see latest data
+ return op.getActiveSwitches();
}
@Override
public Iterable<ISwitchObject> getAllSwitches() {
// TODO Auto-generated method stub
- conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
- conn.close(); //Commit to ensure we see latest data
- return conn.utils().getAllSwitches(conn);
+ op.close(); //Commit to ensure we see latest data
+ return op.getAllSwitches();
}
@Override
public Iterable<ISwitchObject> getInactiveSwitches() {
// TODO Auto-generated method stub
- conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
- conn.close(); //Commit to ensure we see latest data
- return conn.utils().getInactiveSwitches(conn);
+ op.close(); //Commit to ensure we see latest data
+ return op.getInactiveSwitches();
}
@Override
diff --git a/src/main/java/net/onrc/onos/ofcontroller/devicemanager/internal/DeviceStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/internal/DeviceStorageImpl.java
index d6c83c5..cca4794 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/devicemanager/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/internal/DeviceStorageImpl.java
@@ -14,16 +14,16 @@
import net.onrc.onos.ofcontroller.core.internal.SwitchStorageImpl;
import net.onrc.onos.ofcontroller.devicemanager.IDeviceStorage;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
public class DeviceStorageImpl implements IDeviceStorage {
- public GraphDBConnection conn;
+ public GraphDBOperation op;
protected static Logger log = LoggerFactory.getLogger(SwitchStorageImpl.class);
@Override
public void init(String conf) {
- conn = GraphDBConnection.getInstance(conf);
+ op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
}
public void finalize() {
@@ -32,7 +32,7 @@
@Override
public void close() {
- conn.close();
+ op.close();
}
@Override
@@ -40,24 +40,23 @@
// TODO Auto-generated method stub
IDeviceObject obj = null;
try {
- if ((obj = conn.utils().searchDevice(conn, device.getMACAddressString())) != null) {
+ if ((obj = op.searchDevice(device.getMACAddressString())) != null) {
log.debug("Adding device {}: found existing device",device.getMACAddressString());
} else {
- obj = conn.utils().newDevice(conn);
+ obj = op.newDevice();
log.debug("Adding device {}: creating new device",device.getMACAddressString());
}
changeDeviceAttachments(device, obj);
obj.setIPAddress(device.getIPv4Addresses().toString());
obj.setMACAddress(device.getMACAddressString());
- obj.setType("device");
obj.setState("ACTIVE");
- conn.endTx(Transaction.COMMIT);
+ op.commit();
log.debug("Adding device {}",device.getMACAddressString());
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":addDevice mac:{} failed", device.getMACAddressString());
}
@@ -74,21 +73,21 @@
// TODO Auto-generated method stub
IDeviceObject dev;
try {
- if ((dev = conn.utils().searchDevice(conn, device.getMACAddressString())) != null) {
- conn.utils().removeDevice(conn, dev);
- conn.endTx(Transaction.COMMIT);
+ if ((dev = op.searchDevice(device.getMACAddressString())) != null) {
+ op.removeDevice(dev);
+ op.commit();
log.error("DeviceStorage:removeDevice mac:{} done", device.getMACAddressString());
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error("DeviceStorage:removeDevice mac:{} failed", device.getMACAddressString());
}
}
@Override
public IDeviceObject getDeviceByMac(String mac) {
- return conn.utils().searchDevice(conn, mac);
+ return op.searchDevice(mac);
}
@Override
@@ -102,17 +101,17 @@
// TODO Auto-generated method stub
IDeviceObject obj = null;
try {
- if ((obj = conn.utils().searchDevice(conn, device.getMACAddressString())) != null) {
+ if ((obj = op.searchDevice(device.getMACAddressString())) != null) {
log.debug("Changing device ports {}: found existing device",device.getMACAddressString());
changeDeviceAttachments(device, obj);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
} else {
log.debug("failed to search device...now adding {}",device.getMACAddressString());
addDevice(device);
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":addDevice mac:{} failed", device.getMACAddressString());
}
}
@@ -122,9 +121,9 @@
List<IPortObject> attachedPorts = Lists.newArrayList(obj.getAttachedPorts());
for (SwitchPort ap : attachmentPoints) {
- IPortObject port = conn.utils().searchPort(conn,
- HexString.toHexString(ap.getSwitchDPID()),
- (short) ap.getPort());
+ IPortObject port = op.searchPort(
+ HexString.toHexString(ap.getSwitchDPID()),
+ (short) ap.getPort());
if (attachedPorts.contains(port)) {
attachedPorts.remove(port);
} else {
@@ -144,15 +143,15 @@
// TODO Auto-generated method stub
IDeviceObject obj;
try {
- if ((obj = conn.utils().searchDevice(conn, device.getMACAddressString())) != null) {
+ if ((obj = op.searchDevice(device.getMACAddressString())) != null) {
obj.setIPAddress(device.getIPv4Addresses().toString());
- conn.endTx(Transaction.COMMIT);
+ op.commit();
} else {
log.error(":changeDeviceIPv4Address mac:{} failed", device.getMACAddressString());
}
} catch (TitanException e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":changeDeviceIPv4Address mac:{} failed due to exception {}", device.getMACAddressString(),e);
}
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/devicemanager/web/TopoDevicesResource.java b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/web/TopoDevicesResource.java
index e476f02..1cd6b90 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/devicemanager/web/TopoDevicesResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/web/TopoDevicesResource.java
@@ -4,6 +4,7 @@
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
import net.onrc.onos.util.GraphDBConnection;
+import net.onrc.onos.util.GraphDBOperation;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
@@ -14,8 +15,9 @@
public Iterator<IDeviceObject> retrieve() {
GraphDBConnection conn = GraphDBConnection.getInstance("");
+ GraphDBOperation op = new GraphDBOperation(conn);
- return conn.utils().getDevices(conn).iterator();
+ return op.getDevices().iterator();
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowcache/FlowManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/FlowManager.java
index 9c38cdd..125acf3 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowcache/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/FlowManager.java
@@ -50,7 +50,7 @@
import net.onrc.onos.ofcontroller.util.Port;
import net.onrc.onos.ofcontroller.util.SwitchPort;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.openflow.protocol.OFFlowMod;
import org.openflow.protocol.OFMatch;
@@ -65,7 +65,7 @@
public class FlowManager implements IFloodlightModule, IFlowService, INetMapStorage {
- public GraphDBConnection conn;
+ protected GraphDBOperation op;
protected IRestApiService restApi;
protected volatile IFloodlightProviderService floodlightProvider;
@@ -114,7 +114,7 @@
runImpl();
} catch (Exception e) {
log.debug("Exception processing All Flow Entries from the Network MAP: ", e);
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
return;
}
}
@@ -141,7 +141,7 @@
//
boolean processed_measurement_flow = false;
Iterable<IFlowEntry> allFlowEntries =
- conn.utils().getAllSwitchNotUpdatedFlowEntries(conn);
+ op.getAllSwitchNotUpdatedFlowEntries();
for (IFlowEntry flowEntryObj : allFlowEntries) {
counterAllFlowEntries++;
@@ -154,7 +154,7 @@
continue; // Ignore the entry: not my switch
IFlowPath flowObj =
- conn.utils().getFlowPathByFlowEntry(conn, flowEntryObj);
+ op.getFlowPathByFlowEntry(flowEntryObj);
if (flowObj == null)
continue; // Should NOT happen
if (flowObj.getFlowId() == null)
@@ -192,8 +192,7 @@
//
for (IFlowEntry flowEntryObj : addFlowEntries) {
IFlowPath flowObj =
- conn.utils().getFlowPathByFlowEntry(conn,
- flowEntryObj);
+ op.getFlowPathByFlowEntry(flowEntryObj);
if (flowObj == null)
continue; // Should NOT happen
if (flowObj.getFlowId() == null)
@@ -217,16 +216,16 @@
while (! deleteFlowEntries.isEmpty()) {
IFlowEntry flowEntryObj = deleteFlowEntries.poll();
IFlowPath flowObj =
- conn.utils().getFlowPathByFlowEntry(conn, flowEntryObj);
+ op.getFlowPathByFlowEntry(flowEntryObj);
if (flowObj == null) {
log.debug("Did not find FlowPath to be deleted");
continue;
}
flowObj.removeFlowEntry(flowEntryObj);
- conn.utils().removeFlowEntry(conn, flowEntryObj);
+ op.removeFlowEntry(flowEntryObj);
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
if (processed_measurement_flow) {
long estimatedTime =
@@ -255,7 +254,7 @@
runImpl();
} catch (Exception e) {
log.debug("Exception processing All Flows from the Network MAP: ", e);
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
return;
}
}
@@ -281,7 +280,7 @@
//
Map<Long, ?> shortestPathTopo =
topoRouteService.prepareShortestPathTopo();
- Iterable<IFlowPath> allFlowPaths = conn.utils().getAllFlowPaths(conn);
+ Iterable<IFlowPath> allFlowPaths = op.getAllFlowPaths();
for (IFlowPath flowPathObj : allFlowPaths) {
counterAllFlowPaths++;
if (flowPathObj == null)
@@ -378,12 +377,12 @@
//
while (! deleteFlows.isEmpty()) {
IFlowPath flowPathObj = deleteFlows.poll();
- conn.utils().removeFlowPath(conn, flowPathObj);
+ op.removeFlowPath(flowPathObj);
}
topoRouteService.dropShortestPathTopo(shortestPathTopo);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
if (processed_measurement_flow) {
long estimatedTime =
@@ -414,16 +413,16 @@
@Override
public void init(String conf) {
- conn = GraphDBConnection.getInstance(conf);
+ op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
}
public void finalize() {
- close();
+ close();
}
@Override
public void close() {
- conn.close();
+ op.close();
}
@Override
@@ -530,19 +529,19 @@
IFlowPath flowObj = null;
boolean found = false;
try {
- if ((flowObj = conn.utils().searchFlowPath(conn, flowPath.flowId()))
+ if ((flowObj = op.searchFlowPath(flowPath.flowId()))
!= null) {
log.debug("Adding FlowPath with FlowId {}: found existing FlowPath",
flowPath.flowId().toString());
found = true;
} else {
- flowObj = conn.utils().newFlowPath(conn);
+ flowObj = op.newFlowPath();
log.debug("Adding FlowPath with FlowId {}: creating new FlowPath",
flowPath.flowId().toString());
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
@@ -555,7 +554,7 @@
if (flowObj == null) {
log.error(":addFlow FlowId:{} failed: Flow object not created",
flowPath.flowId().toString());
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
return false;
}
@@ -619,11 +618,11 @@
//
for (FlowEntry flowEntry : flowPath.dataPath().flowEntries()) {
if (addFlowEntry(flowObj, flowEntry) == null) {
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
return false;
}
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
//
// TODO: We need a proper Flow ID allocation mechanism.
@@ -657,12 +656,12 @@
boolean found = false;
try {
if ((flowEntryObj =
- conn.utils().searchFlowEntry(conn, flowEntry.flowEntryId())) != null) {
+ op.searchFlowEntry(flowEntry.flowEntryId())) != null) {
log.debug("Adding FlowEntry with FlowEntryId {}: found existing FlowEntry",
flowEntry.flowEntryId().toString());
found = true;
} else {
- flowEntryObj = conn.utils().newFlowEntry(conn);
+ flowEntryObj = op.newFlowEntry();
log.debug("Adding FlowEntry with FlowEntryId {}: creating new FlowEntry",
flowEntry.flowEntryId().toString());
}
@@ -705,12 +704,12 @@
// - flowEntry.actionOutput()
//
ISwitchObject sw =
- conn.utils().searchSwitch(conn, flowEntry.dpid().toString());
+ op.searchSwitch(flowEntry.dpid().toString());
flowEntryObj.setSwitchDpid(flowEntry.dpid().toString());
flowEntryObj.setSwitch(sw);
if (flowEntry.flowEntryMatch().matchInPort()) {
IPortObject inport =
- conn.utils().searchPort(conn, flowEntry.dpid().toString(),
+ op.searchPort(flowEntry.dpid().toString(),
flowEntry.flowEntryMatch().inPort().value());
flowEntryObj.setMatchInPort(flowEntry.flowEntryMatch().inPort().value());
flowEntryObj.setInPort(inport);
@@ -734,9 +733,8 @@
for (FlowEntryAction fa : flowEntry.flowEntryActions()) {
if (fa.actionOutput() != null) {
IPortObject outport =
- conn.utils().searchPort(conn,
- flowEntry.dpid().toString(),
- fa.actionOutput().port().value());
+ op.searchPort(flowEntry.dpid().toString(),
+ fa.actionOutput().port().value());
flowEntryObj.setActionOutput(fa.actionOutput().port().value());
flowEntryObj.setOutPort(outport);
}
@@ -774,7 +772,7 @@
new ConcurrentLinkedQueue<FlowId>();
// Get all Flow IDs
- Iterable<IFlowPath> allFlowPaths = conn.utils().getAllFlowPaths(conn);
+ Iterable<IFlowPath> allFlowPaths = op.getAllFlowPaths();
for (IFlowPath flowPathObj : allFlowPaths) {
if (flowPathObj == null)
continue;
@@ -851,7 +849,7 @@
// it has been removed from the switches.
//
try {
- if ((flowObj = conn.utils().searchFlowPath(conn, flowId))
+ if ((flowObj = op.searchFlowPath(flowId))
!= null) {
log.debug("Deleting FlowPath with FlowId {}: found existing FlowPath",
flowId.toString());
@@ -861,11 +859,11 @@
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":deleteFlow FlowId:{} failed", flowId.toString());
}
if (flowObj == null) {
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return true; // OK: No such flow
}
@@ -885,8 +883,8 @@
}
// Remove from the database empty flows
if (empty)
- conn.utils().removeFlowPath(conn, flowObj);
- conn.endTx(Transaction.COMMIT);
+ op.removeFlowPath(flowObj);
+ op.commit();
return true;
}
@@ -901,7 +899,7 @@
List<FlowId> allFlowIds = new LinkedList<FlowId>();
// Get all Flow IDs
- Iterable<IFlowPath> allFlowPaths = conn.utils().getAllFlowPaths(conn);
+ Iterable<IFlowPath> allFlowPaths = op.getAllFlowPaths();
for (IFlowPath flowPathObj : allFlowPaths) {
if (flowPathObj == null)
continue;
@@ -930,7 +928,7 @@
public boolean clearFlow(FlowId flowId) {
IFlowPath flowObj = null;
try {
- if ((flowObj = conn.utils().searchFlowPath(conn, flowId))
+ if ((flowObj = op.searchFlowPath(flowId))
!= null) {
log.debug("Clearing FlowPath with FlowId {}: found existing FlowPath",
flowId.toString());
@@ -940,11 +938,11 @@
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":clearFlow FlowId:{} failed", flowId.toString());
}
if (flowObj == null) {
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return true; // OK: No such flow
}
@@ -954,11 +952,11 @@
Iterable<IFlowEntry> flowEntries = flowObj.getFlowEntries();
for (IFlowEntry flowEntryObj : flowEntries) {
flowObj.removeFlowEntry(flowEntryObj);
- conn.utils().removeFlowEntry(conn, flowEntryObj);
+ op.removeFlowEntry(flowEntryObj);
}
// Remove the Flow itself
- conn.utils().removeFlowPath(conn, flowObj);
- conn.endTx(Transaction.COMMIT);
+ op.removeFlowPath(flowObj);
+ op.commit();
return true;
}
@@ -973,7 +971,7 @@
public FlowPath getFlow(FlowId flowId) {
IFlowPath flowObj = null;
try {
- if ((flowObj = conn.utils().searchFlowPath(conn, flowId))
+ if ((flowObj = op.searchFlowPath(flowId))
!= null) {
log.debug("Get FlowPath with FlowId {}: found existing FlowPath",
flowId.toString());
@@ -983,11 +981,11 @@
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":getFlow FlowId:{} failed", flowId.toString());
}
if (flowObj == null) {
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return null; // Flow not found
}
@@ -995,7 +993,7 @@
// Extract the Flow state
//
FlowPath flowPath = extractFlowPath(flowObj);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return flowPath;
}
@@ -1186,18 +1184,18 @@
ArrayList<FlowPath> flowPaths = new ArrayList<FlowPath>();
try {
- if ((flowPathsObj = conn.utils().getAllFlowPaths(conn)) != null) {
+ if ((flowPathsObj = op.getAllFlowPaths()) != null) {
log.debug("Get all FlowPaths: found FlowPaths");
} else {
log.debug("Get all FlowPaths: no FlowPaths found");
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":getAllFlowPaths failed");
}
if ((flowPathsObj == null) || (flowPathsObj.iterator().hasNext() == false)) {
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return flowPaths; // No Flows found
}
@@ -1210,7 +1208,7 @@
flowPaths.add(flowPath);
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return flowPaths;
}
@@ -1220,17 +1218,17 @@
ArrayList<IFlowPath> flowPathsObjArray = new ArrayList<IFlowPath>();
ArrayList<FlowPath> flowPaths = new ArrayList<FlowPath>();
- conn.endTx(Transaction.COMMIT);
+ op.commit();
try {
- if ((flowPathsObj = conn.utils().getAllFlowPaths(conn)) != null) {
+ if ((flowPathsObj = op.getAllFlowPaths()) != null) {
log.debug("Get all FlowPaths: found FlowPaths");
} else {
log.debug("Get all FlowPaths: no FlowPaths found");
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":getAllFlowPaths failed");
}
if ((flowPathsObj == null) || (flowPathsObj.iterator().hasNext() == false)) {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
index c2e8efe..1fe12c4 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
@@ -9,7 +9,7 @@
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoLinkService;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -19,25 +19,24 @@
public class TopoLinkServiceImpl implements ITopoLinkService {
- public GraphDBConnection conn;
+ protected GraphDBOperation op;
protected static Logger log = LoggerFactory.getLogger(TopoLinkServiceImpl.class);
-
public void finalize() {
close();
}
@Override
public void close() {
- conn.close();
+ op.close();
}
@Override
public List<Link> getActiveLinks() {
// TODO Auto-generated method stub
- conn = GraphDBConnection.getInstance("");
- conn.close(); //Commit to ensure we see latest data
- Iterable<ISwitchObject> switches = conn.utils().getActiveSwitches(conn);
+ op = new GraphDBOperation(GraphDBConnection.getInstance(""));
+ op.close(); //Commit to ensure we see latest data
+ Iterable<ISwitchObject> switches = op.getActiveSwitches();
List<Link> links = new ArrayList<Link>();
for (ISwitchObject sw : switches) {
GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
@@ -53,7 +52,7 @@
}
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return links;
}
@@ -61,7 +60,7 @@
public List<Link> getLinksOnSwitch(String dpid) {
// TODO Auto-generated method stub
List<Link> links = new ArrayList<Link>();
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
ExtractLink extractor = new ExtractLink();
diff --git a/src/main/java/net/onrc/onos/ofcontroller/onoslistener/OnosPublisher.java b/src/main/java/net/onrc/onos/ofcontroller/onoslistener/OnosPublisher.java
index 2b30bbf..6a9d433 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/onoslistener/OnosPublisher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/onoslistener/OnosPublisher.java
@@ -41,6 +41,8 @@
import net.onrc.onos.registry.controller.IControllerRegistryService.ControlChangeCallback;
import net.onrc.onos.registry.controller.RegistryException;
import net.onrc.onos.util.GraphDBConnection;
+import net.onrc.onos.util.GraphDBOperation;
+import net.onrc.onos.util.IDBConnection;
import net.onrc.onos.util.LocalTopologyEventListener;
public class OnosPublisher implements IDeviceListener, IOFSwitchListener,
@@ -52,7 +54,7 @@
protected static Logger log;
protected IDeviceService deviceService;
protected IControllerRegistryService registryService;
- protected GraphDBConnection conn;
+ protected GraphDBOperation op;
protected static final String DBConfigFile = "dbconf";
protected static final String CleanupEnabled = "EnableCleanup";
@@ -76,7 +78,7 @@
catch (Exception e) {
log.error("Error in cleanup thread", e);
} finally {
- conn.close();
+ op.close();
cleanupTask.reschedule(CLEANUP_TASK_INTERVAL,
TimeUnit.SECONDS);
}
@@ -95,8 +97,8 @@
}
protected void switchCleanup() {
- conn.close();
- Iterable<ISwitchObject> switches = conn.utils().getActiveSwitches(conn);
+ op.close();
+ Iterable<ISwitchObject> switches = op.getActiveSwitches();
log.debug("Checking for inactive switches");
// For each switch check if a controller exists in controller registry
@@ -119,7 +121,7 @@
e.printStackTrace();
}
}
- conn.close();
+ op.close();
}
@Override
@@ -251,7 +253,7 @@
// TODO Auto-generated method stub
Map<String, String> configMap = context.getConfigParams(this);
String conf = configMap.get(DBConfigFile);
- conn = GraphDBConnection.getInstance(conf);
+ op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
log = LoggerFactory.getLogger(OnosPublisher.class);
floodlightProvider =
@@ -285,7 +287,8 @@
linkDiscovery.addListener(this);
log.debug("Adding EventListener");
- conn.addEventListener(new LocalTopologyEventListener(conn));
+ IDBConnection conn = op.getDBConnection();
+ conn.addEventListener(new LocalTopologyEventListener((GraphDBConnection) conn));
// Setup the Cleanup task.
if (cleanupNeeded == null || !cleanupNeeded.equals("False")) {
ScheduledExecutorService ses = threadPool.getScheduledExecutor();
diff --git a/src/main/java/net/onrc/onos/ofcontroller/routing/TopoRouteService.java b/src/main/java/net/onrc/onos/ofcontroller/routing/TopoRouteService.java
index f20f7ca..a051d4c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/routing/TopoRouteService.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/routing/TopoRouteService.java
@@ -25,6 +25,7 @@
import net.onrc.onos.ofcontroller.util.SwitchPort;
import net.onrc.onos.util.GraphDBConnection;
import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.openflow.util.HexString;
import org.slf4j.Logger;
@@ -99,7 +100,7 @@
private static Logger log =
LoggerFactory.getLogger(TopoRouteService.class);
- GraphDBConnection conn;
+ protected GraphDBOperation op;
@Override
public Collection<Class<? extends IFloodlightService>> getModuleServices() {
@@ -134,7 +135,7 @@
public void init(FloodlightModuleContext context)
throws FloodlightModuleException {
// TODO: Add the appropriate initialization
- conn = GraphDBConnection.getInstance("");
+ op = new GraphDBOperation(GraphDBConnection.getInstance(""));
}
@Override
@@ -193,7 +194,7 @@
// Fetch the relevant info from the Switch and Port vertices
// from the Titan Graph.
//
- Iterable<ISwitchObject> nodes = conn.utils().getActiveSwitches(conn);
+ Iterable<ISwitchObject> nodes = op.getActiveSwitches();
for (ISwitchObject switchObj : nodes) {
Vertex nodeVertex = switchObj.asVertex();
//
@@ -253,7 +254,7 @@
}
}
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return shortestPathTopo;
}
@@ -416,9 +417,9 @@
// Get the source and destination switches
ISwitchObject srcSwitch =
- conn.utils().searchActiveSwitch(conn, dpid_src);
+ op.searchActiveSwitch(dpid_src);
ISwitchObject destSwitch =
- conn.utils().searchActiveSwitch(conn, dpid_dest);
+ op.searchActiveSwitch(dpid_dest);
if (srcSwitch == null || destSwitch == null) {
return null;
}
@@ -433,7 +434,7 @@
flowEntry.setInPort(src.port());
flowEntry.setOutPort(dest.port());
result_data_path.flowEntries().add(flowEntry);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return result_data_path;
}
@@ -552,7 +553,7 @@
result_data_path.flowEntries().add(flowEntry);
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
if (result_data_path.flowEntries().size() > 0)
return result_data_path;
diff --git a/src/main/java/net/onrc/onos/util/GraphDBOperation.java b/src/main/java/net/onrc/onos/util/GraphDBOperation.java
index de4b8b4..e097bf9 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBOperation.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBOperation.java
@@ -3,14 +3,15 @@
import java.util.ArrayList;
import java.util.List;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
-import net.onrc.onos.ofcontroller.util.FlowEntryId;
-import net.onrc.onos.ofcontroller.util.FlowId;
+import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
+import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
+import net.floodlightcontroller.util.FlowEntryId;
+import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.util.GraphDBConnection.Transaction;
import com.thinkaurelius.titan.core.TitanGraph;
import com.tinkerpop.blueprints.Vertex;
@@ -258,4 +259,20 @@
FramedGraph<TitanGraph> fg = conn.getFramedGraph();
fg.removeVertex(flowEntry.asVertex());
}
+
+ public IDBConnection getDBConnection() {
+ return conn;
+ }
+
+ public void commit() {
+ conn.endTx(Transaction.COMMIT);
+ }
+
+ public void rollback() {
+ conn.endTx(Transaction.ROLLBACK);
+ }
+
+ public void close() {
+ conn.close();
+ }
}
diff --git a/src/main/java/net/onrc/onos/util/IDBOperation.java b/src/main/java/net/onrc/onos/util/IDBOperation.java
index 6a0d52d..1a8571d 100644
--- a/src/main/java/net/onrc/onos/util/IDBOperation.java
+++ b/src/main/java/net/onrc/onos/util/IDBOperation.java
@@ -37,4 +37,9 @@
public IFlowEntry searchFlowEntry(FlowEntryId flowEntryId);
public Iterable<IFlowEntry> getAllFlowEntries();
public void removeFlowEntry(IFlowEntry flowEntry);
+
+ public IDBConnection getDBConnection();
+ public void commit();
+ public void rollback();
+ public void close();
}
diff --git a/src/test/java/net/onrc/onos/util/GraphDBOperationTest.java b/src/test/java/net/onrc/onos/util/GraphDBOperationTest.java
index 01f244c..0f8f4db 100644
--- a/src/test/java/net/onrc/onos/util/GraphDBOperationTest.java
+++ b/src/test/java/net/onrc/onos/util/GraphDBOperationTest.java
@@ -5,6 +5,10 @@
import static org.junit.Assert.*;
+import java.util.Iterator;
+
+import junit.framework.Assert;
+
import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
import net.floodlightcontroller.core.internal.TestDatabaseManager;
@@ -23,6 +27,7 @@
import com.thinkaurelius.titan.core.TitanFactory;
import com.thinkaurelius.titan.core.TitanGraph;
+import com.tinkerpop.blueprints.Vertex;
/**
* @author Toshio Koide
@@ -31,7 +36,7 @@
@RunWith(PowerMockRunner.class)
@PrepareForTest({TitanFactory.class})
public class GraphDBOperationTest {
- private static TitanGraph titanGraph;
+ private static TitanGraph testdb;
private static GraphDBConnection conn;
private static GraphDBOperation op;
@@ -55,12 +60,12 @@
@Before
public void setUp() throws Exception {
TestDatabaseManager.deleteTestDatabase();
- titanGraph = TestDatabaseManager.getTestDatabase();
+ testdb = TestDatabaseManager.getTestDatabase();
// TestDatabaseManager.populateTestData(titanGraph);
// replace return value of TitanFactory.open() to dummy DB created above
PowerMock.mockStatic(TitanFactory.class);
- EasyMock.expect(TitanFactory.open((String)EasyMock.anyObject())).andReturn(titanGraph);
+ EasyMock.expect(TitanFactory.open((String)EasyMock.anyObject())).andReturn(testdb);
PowerMock.replay(TitanFactory.class);
conn = GraphDBConnection.getInstance("/dummy/to/conf");
@@ -73,50 +78,29 @@
@After
public void tearDown() throws Exception {
conn.close();
- titanGraph.shutdown();
+ testdb.shutdown();
}
+ private Iterator<Vertex> enumerateVertices(String vertexType) {
+ return testdb.getVertices("type", vertexType).iterator();
+ }
+
/**
* Test method for {@link net.onrc.onos.util.GraphDBOperation#newSwitch(net.onrc.onos.util.GraphDBConnection)}.
*/
@Test
public final void testNewSwitch() {
- Iterable<ISwitchObject> switches;
-
- switches = op.getAllSwitches();
- assertFalse(switches.iterator().hasNext());
+ Iterator<Vertex> vertices;
+ assertFalse(enumerateVertices("switch").hasNext());
ISwitchObject sw = op.newSwitch("123");
- sw.setState(SwitchState.ACTIVE.toString());
- conn.endTx(Transaction.COMMIT);
-
- switches = op.getAllSwitches();
- assertTrue(switches.iterator().hasNext());
- ISwitchObject obtained_sw = switches.iterator().next();
- String obtained_dpid = obtained_sw.getDPID();
- assertEquals("123", obtained_dpid);
- }
+ assertEquals("123", sw.getDPID());
+ op.commit();
- /**
- * Test method for {@link net.onrc.onos.util.GraphDBOperation#removeSwitch(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject)}.
- */
- @Test
- public final void testRemoveSwitch() {
- Iterable<ISwitchObject> switches;
-
- // make sure there is no switch
- switches = op.getAllSwitches();
- assertFalse(switches.iterator().hasNext());
-
- ISwitchObject sw = op.newSwitch("123");
- sw.setState(SwitchState.ACTIVE.toString());
- conn.endTx(Transaction.COMMIT);
-
- sw = op.searchSwitch("123");
- op.removeSwitch(sw);
-
- assertNull(op.searchSwitch("123"));
+ vertices = enumerateVertices("switch");
+ assertTrue(vertices.hasNext());
+ assertEquals(vertices.next().getProperty("dpid").toString(), "123");
}
/**
@@ -124,7 +108,63 @@
*/
@Test
public final void testSearchSwitch() {
- fail("Not yet implemented");
+ ISwitchObject sw = op.newSwitch("123");
+ op.commit();
+
+ sw = op.searchSwitch("123");
+
+ assertNotNull(sw);
+ assertEquals("123", sw.getDPID());
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#searchActiveSwitch(net.onrc.onos.util.GraphDBConnection, java.lang.String)}.
+ */
+ @Test
+ public final void testSearchActiveSwitch() {
+ ISwitchObject sw = op.newSwitch("111");
+ sw.setState(SwitchState.ACTIVE.toString());
+ sw = op.newSwitch("222");
+ sw.setState(SwitchState.INACTIVE.toString());
+ op.commit();
+
+ sw = op.searchActiveSwitch("111");
+ assertNotNull(sw);
+ assertEquals("111", sw.getDPID());
+
+ sw = op.searchActiveSwitch("222");
+ assertNull(sw);
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getActiveSwitches(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testGetActiveSwitches() {
+ ISwitchObject sw = op.newSwitch("111");
+ sw.setState(SwitchState.ACTIVE.toString());
+ sw = op.newSwitch("222");
+ sw.setState(SwitchState.INACTIVE.toString());
+ op.commit();
+
+ Iterator<ISwitchObject> i = op.getActiveSwitches().iterator();
+ assertTrue(i.hasNext());
+ assertEquals("111", i.next().getDPID());
+ assertFalse(i.hasNext());
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#removeSwitch(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject)}.
+ */
+ @Test
+ public final void testRemoveSwitch() {
+ ISwitchObject sw = op.newSwitch("123");
+ op.commit();
+ sw = op.searchSwitch("123");
+
+ op.removeSwitch(sw);
+
+ assertFalse(enumerateVertices("switch").hasNext());
}
/**
@@ -264,14 +304,6 @@
}
/**
- * Test method for {@link net.onrc.onos.util.GraphDBOperation#getActiveSwitches(net.onrc.onos.util.GraphDBConnection)}.
- */
- @Test
- public final void testGetActiveSwitches() {
- fail("Not yet implemented");
- }
-
- /**
* Test method for {@link net.onrc.onos.util.GraphDBOperation#getAllSwitches(net.onrc.onos.util.GraphDBConnection)}.
*/
@Test
@@ -287,12 +319,4 @@
fail("Not yet implemented");
}
- /**
- * Test method for {@link net.onrc.onos.util.GraphDBOperation#searchActiveSwitch(net.onrc.onos.util.GraphDBConnection, java.lang.String)}.
- */
- @Test
- public final void testSearchActiveSwitch() {
- fail("Not yet implemented");
- }
-
}