blob: dd34e905e14f74d62b2a1cd8fb45c881bc6fa267 [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
Toshio Koide066506e2014-02-20 19:52:09 -080017/**
18 * @author Toshio Koide (t-koide@onlab.us)
19 */
Toshio Koidec406e792014-02-14 16:52:42 -080020public class PathIntentTest {
21 NetworkGraph g;
22
23 @Before
24 public void setUp() throws Exception {
25 MockNetworkGraph graph = new MockNetworkGraph();
26 graph.createSampleTopology();
27 g = graph;
28 }
29
30 @After
31 public void tearDown() throws Exception {
32 }
33
34 @Test
Toshio Koidea10c0372014-02-20 17:28:10 -080035 public void testCreateFirstId() {
36 String id = PathIntent.createFirstId("100");
Toshio Koide52a6bca2014-02-21 21:28:22 -080037 assertEquals("100___0", id);
Toshio Koidea10c0372014-02-20 17:28:10 -080038 }
39
40 @Test
41 public void testCreateNextId() {
Toshio Koide52a6bca2014-02-21 21:28:22 -080042 String id = PathIntent.createNextId("100___999");
43 assertEquals("100___1000", id);
Toshio Koidea10c0372014-02-20 17:28:10 -080044 }
45
46 @Test
Toshio Koidec406e792014-02-14 16:52:42 -080047 public void test() {
Toshio Koidebc116be2014-02-19 23:56:48 -080048 KryoFactory factory = new KryoFactory();
49 Kryo kryo = factory.newKryo();
Toshio Koidec406e792014-02-14 16:52:42 -080050 Output output = new Output(1024);
51
52 ConstrainedShortestPathIntent cspIntent1 =
53 new ConstrainedShortestPathIntent("1", 2L, 3L, 4L, 5L, 6L, 7L, 1000.0);
54
55 Path path = new Path();
Toshio Koided9fa2a82014-02-19 17:35:18 -080056 path.add(new LinkEvent(g.getSwitch(1L).getPort(1L).getOutgoingLink()));
57 path.add(new LinkEvent(g.getSwitch(2L).getPort(1L).getOutgoingLink()));
58 path.add(new LinkEvent(g.getSwitch(3L).getPort(1L).getOutgoingLink()));
Toshio Koidec406e792014-02-14 16:52:42 -080059
60 PathIntent pathIntent1 = new PathIntent("11", path, 123.45, cspIntent1);
61
62 kryo.writeObject(output, pathIntent1);
63 output.close();
64
65 Input input = new Input(output.toBytes());
66
67 // create pathIntent from bytes
68
69 PathIntent pathIntent2 =
70 kryo.readObject(input, PathIntent.class);
71 input.close();
72
73 // check
Toshio Koided9fa2a82014-02-19 17:35:18 -080074
Toshio Koidec406e792014-02-14 16:52:42 -080075 assertEquals("11", pathIntent2.getId());
Toshio Koided9fa2a82014-02-19 17:35:18 -080076 Path path2 = pathIntent2.getPath();
Toshio Koidec406e792014-02-14 16:52:42 -080077
Toshio Koided9fa2a82014-02-19 17:35:18 -080078 assertEquals(Long.valueOf(1L), path2.get(0).getSrc().getDpid());
79 assertEquals(Long.valueOf(1L), path2.get(0).getSrc().getNumber());
80 assertEquals(Long.valueOf(2L), path2.get(0).getDst().getDpid());
81 assertEquals(Long.valueOf(2L), path2.get(0).getDst().getNumber());
Toshio Koidec406e792014-02-14 16:52:42 -080082
Toshio Koided9fa2a82014-02-19 17:35:18 -080083 assertEquals(Long.valueOf(2L), path2.get(1).getSrc().getDpid());
84 assertEquals(Long.valueOf(1L), path2.get(1).getSrc().getNumber());
85 assertEquals(Long.valueOf(3L), path2.get(1).getDst().getDpid());
86 assertEquals(Long.valueOf(2L), path2.get(1).getDst().getNumber());
Toshio Koidec406e792014-02-14 16:52:42 -080087
Toshio Koided9fa2a82014-02-19 17:35:18 -080088 assertEquals(Long.valueOf(3L), path2.get(2).getSrc().getDpid());
89 assertEquals(Long.valueOf(1L), path2.get(2).getSrc().getNumber());
90 assertEquals(Long.valueOf(4L), path2.get(2).getDst().getDpid());
91 assertEquals(Long.valueOf(2L), path2.get(2).getDst().getNumber());
Toshio Koidec406e792014-02-14 16:52:42 -080092
93 assertEquals(123.45, pathIntent2.getBandwidth(), 0.0);
94
Toshio Koided9fa2a82014-02-19 17:35:18 -080095 ConstrainedShortestPathIntent cspIntent2 =
Toshio Koidec406e792014-02-14 16:52:42 -080096 (ConstrainedShortestPathIntent) pathIntent2.getParentIntent();
Toshio Koided9fa2a82014-02-19 17:35:18 -080097
Toshio Koidec406e792014-02-14 16:52:42 -080098 assertEquals("1", cspIntent2.getId());
99 assertEquals(2L, cspIntent2.getSrcSwitchDpid());
100 assertEquals(3L, cspIntent2.getSrcPortNumber());
101 assertEquals(4L, cspIntent2.getSrcMac());
102 assertEquals(5L, cspIntent2.getDstSwitchDpid());
103 assertEquals(6L, cspIntent2.getDstPortNumber());
104 assertEquals(7L, cspIntent2.getDstMac());
105 assertEquals(1000.0, cspIntent2.getBandwidth(), 0.0);
106 }
107}