blob: 3c76f3f795fa684190226eee7f2634a1e4624779 [file] [log] [blame]
Toshio Koidec406e792014-02-14 16:52:42 -08001package net.onrc.onos.intent;
2
Toshio Koided9fa2a82014-02-19 17:35:18 -08003import static org.junit.Assert.assertEquals;
4import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
Toshio Koidec406e792014-02-14 16:52:42 -08005import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
6import net.onrc.onos.ofcontroller.networkgraph.Path;
Toshio Koidebc116be2014-02-19 23:56:48 -08007import net.onrc.onos.ofcontroller.util.serializers.KryoFactory;
Toshio Koidec406e792014-02-14 16:52:42 -08008
9import org.junit.After;
10import org.junit.Before;
11import org.junit.Test;
12
13import com.esotericsoftware.kryo.Kryo;
14import com.esotericsoftware.kryo.io.Input;
15import com.esotericsoftware.kryo.io.Output;
16
17public class PathIntentTest {
18 NetworkGraph g;
19
20 @Before
21 public void setUp() throws Exception {
22 MockNetworkGraph graph = new MockNetworkGraph();
23 graph.createSampleTopology();
24 g = graph;
25 }
26
27 @After
28 public void tearDown() throws Exception {
29 }
30
31 @Test
Toshio Koidea10c0372014-02-20 17:28:10 -080032 public void testCreateFirstId() {
33 String id = PathIntent.createFirstId("100");
34 assertEquals("pi100___0", id);
35 }
36
37 @Test
38 public void testCreateNextId() {
39 String id = PathIntent.createNextId("pi100___999");
40 assertEquals("pi100___1000", id);
41 }
42
43 @Test
Toshio Koidec406e792014-02-14 16:52:42 -080044 public void test() {
Toshio Koidebc116be2014-02-19 23:56:48 -080045 KryoFactory factory = new KryoFactory();
46 Kryo kryo = factory.newKryo();
Toshio Koidec406e792014-02-14 16:52:42 -080047 Output output = new Output(1024);
48
49 ConstrainedShortestPathIntent cspIntent1 =
50 new ConstrainedShortestPathIntent("1", 2L, 3L, 4L, 5L, 6L, 7L, 1000.0);
51
52 Path path = new Path();
Toshio Koided9fa2a82014-02-19 17:35:18 -080053 path.add(new LinkEvent(g.getSwitch(1L).getPort(1L).getOutgoingLink()));
54 path.add(new LinkEvent(g.getSwitch(2L).getPort(1L).getOutgoingLink()));
55 path.add(new LinkEvent(g.getSwitch(3L).getPort(1L).getOutgoingLink()));
Toshio Koidec406e792014-02-14 16:52:42 -080056
57 PathIntent pathIntent1 = new PathIntent("11", path, 123.45, cspIntent1);
58
59 kryo.writeObject(output, pathIntent1);
60 output.close();
61
62 Input input = new Input(output.toBytes());
63
64 // create pathIntent from bytes
65
66 PathIntent pathIntent2 =
67 kryo.readObject(input, PathIntent.class);
68 input.close();
69
70 // check
Toshio Koided9fa2a82014-02-19 17:35:18 -080071
Toshio Koidec406e792014-02-14 16:52:42 -080072 assertEquals("11", pathIntent2.getId());
Toshio Koided9fa2a82014-02-19 17:35:18 -080073 Path path2 = pathIntent2.getPath();
Toshio Koidec406e792014-02-14 16:52:42 -080074
Toshio Koided9fa2a82014-02-19 17:35:18 -080075 assertEquals(Long.valueOf(1L), path2.get(0).getSrc().getDpid());
76 assertEquals(Long.valueOf(1L), path2.get(0).getSrc().getNumber());
77 assertEquals(Long.valueOf(2L), path2.get(0).getDst().getDpid());
78 assertEquals(Long.valueOf(2L), path2.get(0).getDst().getNumber());
Toshio Koidec406e792014-02-14 16:52:42 -080079
Toshio Koided9fa2a82014-02-19 17:35:18 -080080 assertEquals(Long.valueOf(2L), path2.get(1).getSrc().getDpid());
81 assertEquals(Long.valueOf(1L), path2.get(1).getSrc().getNumber());
82 assertEquals(Long.valueOf(3L), path2.get(1).getDst().getDpid());
83 assertEquals(Long.valueOf(2L), path2.get(1).getDst().getNumber());
Toshio Koidec406e792014-02-14 16:52:42 -080084
Toshio Koided9fa2a82014-02-19 17:35:18 -080085 assertEquals(Long.valueOf(3L), path2.get(2).getSrc().getDpid());
86 assertEquals(Long.valueOf(1L), path2.get(2).getSrc().getNumber());
87 assertEquals(Long.valueOf(4L), path2.get(2).getDst().getDpid());
88 assertEquals(Long.valueOf(2L), path2.get(2).getDst().getNumber());
Toshio Koidec406e792014-02-14 16:52:42 -080089
90 assertEquals(123.45, pathIntent2.getBandwidth(), 0.0);
91
Toshio Koided9fa2a82014-02-19 17:35:18 -080092 ConstrainedShortestPathIntent cspIntent2 =
Toshio Koidec406e792014-02-14 16:52:42 -080093 (ConstrainedShortestPathIntent) pathIntent2.getParentIntent();
Toshio Koided9fa2a82014-02-19 17:35:18 -080094
Toshio Koidec406e792014-02-14 16:52:42 -080095 assertEquals("1", cspIntent2.getId());
96 assertEquals(2L, cspIntent2.getSrcSwitchDpid());
97 assertEquals(3L, cspIntent2.getSrcPortNumber());
98 assertEquals(4L, cspIntent2.getSrcMac());
99 assertEquals(5L, cspIntent2.getDstSwitchDpid());
100 assertEquals(6L, cspIntent2.getDstPortNumber());
101 assertEquals(7L, cspIntent2.getDstMac());
102 assertEquals(1000.0, cspIntent2.getBandwidth(), 0.0);
103 }
104}