blob: 011a49f06d4a5ca4267fd7fbc6c3a9d67ecca352 [file] [log] [blame]
package net.onrc.onos.ofcontroller.app;
import static org.junit.Assert.*;
import net.onrc.onos.ofcontroller.app.Flow.FlowState;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* This code is valid for the architectural study purpose only.
* @author Toshio Koide (t-koide@onlab.us)
*/
public class ShortestPathTest {
NetworkGraph g;
@Before
public void setUp() {
g = new NetworkGraph();
// add 10 switches (24 ports switch)
for (Integer i=1; i<10; i++) {
Switch sw = g.addSwitch("v" + i.toString());
for (Integer j=1; j<=24; j++) {
sw.addPort(j);
}
}
// add loop path
g.addBidirectionalLinks("v1", 1, "v2", 2);
g.addBidirectionalLinks("v2", 1, "v3", 2);
g.addBidirectionalLinks("v3", 1, "v4", 2);
g.addBidirectionalLinks("v4", 1, "v5", 2);
g.addBidirectionalLinks("v5", 1, "v6", 2);
g.addBidirectionalLinks("v6", 1, "v7", 2);
g.addBidirectionalLinks("v7", 1, "v8", 2);
g.addBidirectionalLinks("v8", 1, "v9", 2);
g.addBidirectionalLinks("v9", 1, "v1", 2);
// add other links
g.addBidirectionalLinks("v1", 3, "v2", 3);
g.addBidirectionalLinks("v2", 4, "v3", 4);
g.addBidirectionalLinks("v4", 5, "v3", 5);
g.addBidirectionalLinks("v5", 6, "v6", 6);
g.addBidirectionalLinks("v7", 7, "v6", 7);
g.addBidirectionalLinks("v8", 8, "v1", 8);
g.addBidirectionalLinks("v9", 9, "v1", 9);
// set capacity of all links to 1000Mbps
for (Link link: g.getLinks()) {
link.setCapacity(1000.0);
}
}
@After
public void tearDown() {
}
@Test
public void useCase1() {
// load TE algorithm
ShortestPath spf = new ShortestPath(g);
// get edge ports
SwitchPort srcPort = g.getSwitch("v1").getPort(20);
SwitchPort dstPort = g.getSwitch("v6").getPort(20);
// setup path
ShortestPathFlow flow = spf.install(srcPort, dstPort);
assertTrue(flow.isState(FlowState.PathInstalled));
// release flow
spf.release(flow);
assertTrue(flow.isState(FlowState.PathRemoved));
}
}