Implement serialization/deserialization feature for each Intent classes
Change-Id: I63db34914d8df76d5a000831da1e03e03383e62f
diff --git a/src/test/java/net/onrc/onos/intent/ConstrainedShortestPathIntentTest.java b/src/test/java/net/onrc/onos/intent/ConstrainedShortestPathIntentTest.java
new file mode 100644
index 0000000..8160ca8
--- /dev/null
+++ b/src/test/java/net/onrc/onos/intent/ConstrainedShortestPathIntentTest.java
@@ -0,0 +1,42 @@
+package net.onrc.onos.intent;
+
+import static org.junit.Assert.*;
+import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ConstrainedShortestPathIntentTest {
+ NetworkGraph g;
+
+ @Before
+ public void setUp() throws Exception {
+ MockNetworkGraph graph = new MockNetworkGraph();
+ graph.createSampleTopology();
+ g = graph;
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void test() {
+ ConstrainedShortestPathIntent intent1 =
+ new ConstrainedShortestPathIntent(g, "1", 1L, 20L, 1L, 4L, 20L, 4L, 1000.0);
+
+ byte b[] = intent1.toBytes();
+
+ ConstrainedShortestPathIntent intent2 =
+ ConstrainedShortestPathIntent.fromBytes(g, b);
+
+ assertEquals("1", intent2.getId());
+ assertEquals(Long.valueOf(1), intent2.getSourcePort().getSwitch().getDpid());
+ assertEquals(Long.valueOf(20), intent2.getSourcePort().getNumber());
+ assertEquals(1L, intent2.getSourceMac().toLong());
+ assertEquals(Long.valueOf(4), intent2.getDestinationPort().getSwitch().getDpid());
+ assertEquals(Long.valueOf(20), intent2.getDestinationPort().getNumber());
+ assertEquals(4L, intent2.getDestinationMac().toLong());
+ assertEquals(Double.valueOf(1000.0), intent2.getBandwidth());
+ }
+}
diff --git a/src/test/java/net/onrc/onos/intent/MockNetworkGraph.java b/src/test/java/net/onrc/onos/intent/MockNetworkGraph.java
new file mode 100644
index 0000000..ec0d54f
--- /dev/null
+++ b/src/test/java/net/onrc/onos/intent/MockNetworkGraph.java
@@ -0,0 +1,66 @@
+package net.onrc.onos.intent;
+
+import net.onrc.onos.ofcontroller.networkgraph.AbstractNetworkGraph;
+import net.onrc.onos.ofcontroller.networkgraph.Link;
+import net.onrc.onos.ofcontroller.networkgraph.LinkImpl;
+import net.onrc.onos.ofcontroller.networkgraph.Switch;
+import net.onrc.onos.ofcontroller.networkgraph.SwitchImpl;
+
+public class MockNetworkGraph extends AbstractNetworkGraph {
+ public Switch addSwitch(Long switchId) {
+ SwitchImpl sw = new SwitchImpl(this, switchId);
+ switches.put(sw.getDpid(), sw);
+ return sw;
+
+ }
+
+ public Link addLink(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
+ return new LinkImpl(
+ this,
+ getSwitch(srcDpid).getPort(srcPortNo),
+ getSwitch(dstDpid).getPort(dstPortNo));
+ }
+
+ public Link[] addBidirectionalLinks(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
+ Link[] links = new Link[2];
+ links[0] = addLink(srcDpid, srcPortNo, dstDpid, dstPortNo);
+ links[1] = addLink(dstDpid, dstPortNo, srcDpid, srcPortNo);
+
+ return links;
+ }
+
+ public void createSampleTopology() {
+ // add 10 switches (24 ports switch)
+ for (Long dpid=1L; dpid<10L; dpid++) {
+ SwitchImpl sw = (SwitchImpl) addSwitch(dpid);
+ for (Long j=1L; j<=24L; j++) {
+ sw.addPort(j);
+ }
+ }
+
+ // add loop path
+ addBidirectionalLinks(1L, 1L, 2L, 2L);
+ addBidirectionalLinks(2L, 1L, 3L, 2L);
+ addBidirectionalLinks(3L, 1L, 4L, 2L);
+ addBidirectionalLinks(4L, 1L, 5L, 2L);
+ addBidirectionalLinks(5L, 1L, 6L, 2L);
+ addBidirectionalLinks(6L, 1L, 7L, 2L);
+ addBidirectionalLinks(7L, 1L, 8L, 2L);
+ addBidirectionalLinks(8L, 1L, 9L, 2L);
+ addBidirectionalLinks(9L, 1L, 1L, 2L);
+
+ // add other links
+ addBidirectionalLinks(1L, 3L, 5L, 3L);
+ addBidirectionalLinks(2L, 4L, 5L, 4L);
+ addBidirectionalLinks(2L, 5L, 7L, 5L);
+ addBidirectionalLinks(3L, 6L, 7L, 6L);
+ addBidirectionalLinks(3L, 7L, 8L, 7L);
+ addBidirectionalLinks(3L, 8L, 9L, 8L);
+ addBidirectionalLinks(4L, 9l, 9L, 9L);
+
+ // set capacity of all links to 1000Mbps
+ for (Link link: getLinks()) {
+ ((LinkImpl)link).setCapacity(1000.0);
+ }
+ }
+}
diff --git a/src/test/java/net/onrc/onos/intent/ShortestPathIntentTest.java b/src/test/java/net/onrc/onos/intent/ShortestPathIntentTest.java
new file mode 100644
index 0000000..a0da341
--- /dev/null
+++ b/src/test/java/net/onrc/onos/intent/ShortestPathIntentTest.java
@@ -0,0 +1,42 @@
+package net.onrc.onos.intent;
+
+import static org.junit.Assert.*;
+import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ShortestPathIntentTest {
+ NetworkGraph g;
+
+ @Before
+ public void setUp() throws Exception {
+ MockNetworkGraph graph = new MockNetworkGraph();
+ graph.createSampleTopology();
+ g = graph;
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void test() {
+ ShortestPathIntent intent1 =
+ new ShortestPathIntent(g, "1", 1L, 20L, 1L, 4L, 20L, 4L);
+
+ byte b[] = intent1.toBytes();
+
+ ShortestPathIntent intent2 =
+ ShortestPathIntent.fromBytes(g, b);
+
+ assertEquals("1", intent2.getId());
+ assertEquals(Long.valueOf(1), intent2.getSourcePort().getSwitch().getDpid());
+ assertEquals(Long.valueOf(20), intent2.getSourcePort().getNumber());
+ assertEquals(1L, intent2.getSourceMac().toLong());
+ assertEquals(Long.valueOf(4), intent2.getDestinationPort().getSwitch().getDpid());
+ assertEquals(Long.valueOf(20), intent2.getDestinationPort().getNumber());
+ assertEquals(4L, intent2.getDestinationMac().toLong());
+ }
+
+}
diff --git a/src/test/java/net/onrc/onos/intent/runtime/UseCaseTest.java b/src/test/java/net/onrc/onos/intent/runtime/UseCaseTest.java
index 93aa8ab..73eee6b 100644
--- a/src/test/java/net/onrc/onos/intent/runtime/UseCaseTest.java
+++ b/src/test/java/net/onrc/onos/intent/runtime/UseCaseTest.java
@@ -4,6 +4,7 @@
import net.onrc.onos.intent.ConstrainedShortestPathIntent;
import net.onrc.onos.intent.Intent;
+import net.onrc.onos.intent.MockNetworkGraph;
import net.onrc.onos.intent.PathIntent;
import net.onrc.onos.intent.PathIntents;
import net.onrc.onos.intent.ShortestPathIntent;
@@ -17,79 +18,13 @@
* @author Toshio Koide (t-koide@onlab.us)
*/
public class UseCaseTest {
- public class MutableNetworkGraph extends AbstractNetworkGraph {
- public Switch addSwitch(Long switchId) {
- SwitchImpl sw = new SwitchImpl(this, switchId);
- switches.put(sw.getDpid(), sw);
- return sw;
-
- }
-
- public Link addLink(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
- return new LinkImpl(
- this,
- getSwitch(srcDpid).getPort(srcPortNo),
- getSwitch(dstDpid).getPort(dstPortNo));
- }
-
- public Link[] addBidirectionalLinks(Long srcDpid, Long srcPortNo, Long dstDpid, Long dstPortNo) {
- Link[] links = new Link[2];
- links[0] = addLink(srcDpid, srcPortNo, dstDpid, dstPortNo);
- links[1] = addLink(dstDpid, dstPortNo, srcDpid, srcPortNo);
-
- return links;
- }
- }
-
NetworkGraph g;
@Before
public void setUp() {
- MutableNetworkGraph g = new MutableNetworkGraph();
-
- // add 10 switches (24 ports switch)
- for (Long dpid=1L; dpid<10L; dpid++) {
- SwitchImpl sw = (SwitchImpl) g.addSwitch(dpid);
- for (Long j=1L; j<=24L; j++) {
- sw.addPort(j);
- }
- }
-
- // add loop path
- g.addBidirectionalLinks(1L, 1L, 2L, 2L);
- g.addBidirectionalLinks(2L, 1L, 3L, 2L);
- g.addBidirectionalLinks(3L, 1L, 4L, 2L);
- g.addBidirectionalLinks(4L, 1L, 5L, 2L);
- g.addBidirectionalLinks(5L, 1L, 6L, 2L);
- g.addBidirectionalLinks(6L, 1L, 7L, 2L);
- g.addBidirectionalLinks(7L, 1L, 8L, 2L);
- g.addBidirectionalLinks(8L, 1L, 9L, 2L);
- g.addBidirectionalLinks(9L, 1L, 1L, 2L);
-
- // add other links
- g.addBidirectionalLinks(1L, 3L, 5L, 3L);
- g.addBidirectionalLinks(2L, 4L, 5L, 4L);
- g.addBidirectionalLinks(2L, 5L, 7L, 5L);
- g.addBidirectionalLinks(3L, 6L, 7L, 6L);
- g.addBidirectionalLinks(3L, 7L, 8L, 7L);
- g.addBidirectionalLinks(3L, 8L, 9L, 8L);
- g.addBidirectionalLinks(4L, 9l, 9L, 9L);
-
- // set capacity of all links to 1000Mbps
- for (Link link: g.getLinks()) {
- ((LinkImpl)link).setCapacity(1000.0);
- }
-
- /*
- // add Devices
- for (Long l=1L; l<=9L; l++) {
- DeviceImpl d = new DeviceImpl(g, MACAddress.valueOf(l));
- d.addAttachmentPoint(g.getSwitch(l).getPort(20L));
- g.addDevice(d);
- }
- */
-
- this.g = g;
+ MockNetworkGraph graph = new MockNetworkGraph();
+ graph.createSampleTopology();
+ g = graph;
}
@After