blob: 011a49f06d4a5ca4267fd7fbc6c3a9d67ecca352 [file] [log] [blame]
Toshio Koide5f260652014-01-30 14:41:12 -08001package net.onrc.onos.ofcontroller.app;
2
3import static org.junit.Assert.*;
Toshio Koide25ce96a2014-01-30 17:52:09 -08004import net.onrc.onos.ofcontroller.app.Flow.FlowState;
Toshio Koide5f260652014-01-30 14:41:12 -08005
Toshio Koide25ce96a2014-01-30 17:52:09 -08006import org.junit.After;
7import org.junit.Before;
Toshio Koide5f260652014-01-30 14:41:12 -08008import org.junit.Test;
9
10/**
11 * This code is valid for the architectural study purpose only.
12 * @author Toshio Koide (t-koide@onlab.us)
13 */
14public class ShortestPathTest {
Toshio Koide25ce96a2014-01-30 17:52:09 -080015 NetworkGraph g;
Toshio Koide5f260652014-01-30 14:41:12 -080016
Toshio Koide25ce96a2014-01-30 17:52:09 -080017 @Before
18 public void setUp() {
19 g = new NetworkGraph();
20
21 // add 10 switches (24 ports switch)
22 for (Integer i=1; i<10; i++) {
23 Switch sw = g.addSwitch("v" + i.toString());
24 for (Integer j=1; j<=24; j++) {
25 sw.addPort(j);
26 }
27 }
28
29 // add loop path
30 g.addBidirectionalLinks("v1", 1, "v2", 2);
31 g.addBidirectionalLinks("v2", 1, "v3", 2);
32 g.addBidirectionalLinks("v3", 1, "v4", 2);
33 g.addBidirectionalLinks("v4", 1, "v5", 2);
34 g.addBidirectionalLinks("v5", 1, "v6", 2);
35 g.addBidirectionalLinks("v6", 1, "v7", 2);
36 g.addBidirectionalLinks("v7", 1, "v8", 2);
37 g.addBidirectionalLinks("v8", 1, "v9", 2);
38 g.addBidirectionalLinks("v9", 1, "v1", 2);
39
40 // add other links
41 g.addBidirectionalLinks("v1", 3, "v2", 3);
42 g.addBidirectionalLinks("v2", 4, "v3", 4);
43 g.addBidirectionalLinks("v4", 5, "v3", 5);
44 g.addBidirectionalLinks("v5", 6, "v6", 6);
45 g.addBidirectionalLinks("v7", 7, "v6", 7);
46 g.addBidirectionalLinks("v8", 8, "v1", 8);
47 g.addBidirectionalLinks("v9", 9, "v1", 9);
48
49 // set capacity of all links to 1000Mbps
50 for (Link link: g.getLinks()) {
51 link.setCapacity(1000.0);
52 }
Toshio Koide5f260652014-01-30 14:41:12 -080053 }
54
Toshio Koide25ce96a2014-01-30 17:52:09 -080055 @After
56 public void tearDown() {
57 }
58
59 @Test
60 public void useCase1() {
61 // load TE algorithm
62 ShortestPath spf = new ShortestPath(g);
63
64 // get edge ports
65 SwitchPort srcPort = g.getSwitch("v1").getPort(20);
66 SwitchPort dstPort = g.getSwitch("v6").getPort(20);
67
68 // setup path
69 ShortestPathFlow flow = spf.install(srcPort, dstPort);
70 assertTrue(flow.isState(FlowState.PathInstalled));
71
72 // release flow
73 spf.release(flow);
74 assertTrue(flow.isState(FlowState.PathRemoved));
75 }
Toshio Koide5f260652014-01-30 14:41:12 -080076}