1bab0789590a1192e3c49e77aa2480fdbfa4699e
[controller.git] / opendaylight / routing / dijkstra_implementation / src / test / java / org / opendaylight / controller / routing / dijkstra_implementation / MaxThruputTest.java
1
2 /*
3  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 package org.opendaylight.controller.routing.dijkstra_implementation;
11
12 import org.junit.Test;
13
14 import org.opendaylight.controller.sal.core.ConstructionException;
15 import org.opendaylight.controller.sal.core.Edge;
16 import org.opendaylight.controller.sal.core.Node;
17 import org.opendaylight.controller.sal.core.NodeConnector;
18 import org.opendaylight.controller.sal.core.Path;
19 import org.opendaylight.controller.sal.utils.NodeConnectorCreator;
20 import org.opendaylight.controller.sal.utils.NodeCreator;
21 import java.util.LinkedList;
22 import java.util.List;
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import org.junit.Assert;
27 import org.opendaylight.controller.routing.dijkstra_implementation.internal.DijkstraImplementation;
28
29 import org.opendaylight.controller.sal.core.UpdateType;
30
31 public class MaxThruputTest {
32
33     Map<Edge, Number> LinkCostMap = new HashMap<Edge, Number>();
34
35     @Test
36     public void testMaxThruPut() {
37         DijkstraImplementation imp = new DijkstraImplementation();
38         Node node1 = NodeCreator.createOFNode((long) 1);
39         Node node2 = NodeCreator.createOFNode((long) 2);
40         Node node3 = NodeCreator.createOFNode((long) 3);
41         Node node4 = NodeCreator.createOFNode((long) 4);
42         Node node5 = NodeCreator.createOFNode((long) 5);
43         Node node6 = NodeCreator.createOFNode((long) 6);
44         NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
45                 (short) 1, node1);
46         NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
47                 (short) 1, node2);
48         NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
49                 (short) 1, node3);
50         NodeConnector nc41 = NodeConnectorCreator.createOFNodeConnector(
51                 (short) 1, node4);
52         NodeConnector nc51 = NodeConnectorCreator.createOFNodeConnector(
53                 (short) 1, node5);
54         NodeConnector nc61 = NodeConnectorCreator.createOFNodeConnector(
55                 (short) 1, node6);
56         NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
57                 (short) 2, node1);
58         NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
59                 (short) 2, node2);
60         NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
61                 (short) 2, node3);
62         NodeConnector nc42 = NodeConnectorCreator.createOFNodeConnector(
63                 (short) 2, node4);
64         NodeConnector nc52 = NodeConnectorCreator.createOFNodeConnector(
65                 (short) 2, node5);
66         NodeConnector nc62 = NodeConnectorCreator.createOFNodeConnector(
67                 (short) 2, node6);
68
69         Edge edge1 = null;
70         try {
71             edge1 = new Edge(nc11, nc21);
72         } catch (ConstructionException e) {
73             e.printStackTrace();
74         }
75         LinkCostMap.put(edge1, 10);
76         Edge edge2 = null;
77         try {
78             edge2 = new Edge(nc21, nc11);
79         } catch (ConstructionException e) {
80             e.printStackTrace();
81         }
82         LinkCostMap.put(edge2, 10);
83
84         Edge edge3 = null;
85         try {
86             edge3 = new Edge(nc22, nc31);
87         } catch (ConstructionException e) {
88             e.printStackTrace();
89         }
90         LinkCostMap.put(edge3, 30);
91         Edge edge4 = null;
92         try {
93             edge4 = new Edge(nc31, nc22);
94         } catch (ConstructionException e) {
95             e.printStackTrace();
96         }
97         LinkCostMap.put(edge4, 30);
98
99         Edge edge5 = null;
100         try {
101             edge5 = new Edge(nc32, nc41);
102         } catch (ConstructionException e) {
103             e.printStackTrace();
104         }
105         LinkCostMap.put(edge5, 10);
106         Edge edge6 = null;
107         try {
108             edge6 = new Edge(nc41, nc32);
109         } catch (ConstructionException e) {
110             e.printStackTrace();
111         }
112         LinkCostMap.put(edge6, 10);
113
114         Edge edge7 = null;
115         try {
116             edge7 = new Edge(nc12, nc51);
117         } catch (ConstructionException e) {
118             e.printStackTrace();
119         }
120         LinkCostMap.put(edge7, 20);
121         Edge edge8 = null;
122         try {
123             edge8 = new Edge(nc51, nc12);
124         } catch (ConstructionException e) {
125             e.printStackTrace();
126         }
127         LinkCostMap.put(edge8, 20);
128
129         Edge edge9 = null;
130         try {
131             edge9 = new Edge(nc52, nc61);
132         } catch (ConstructionException e) {
133             e.printStackTrace();
134         }
135         LinkCostMap.put(edge9, 20);
136         Edge edge10 = null;
137         try {
138             edge10 = new Edge(nc61, nc52);
139         } catch (ConstructionException e) {
140             e.printStackTrace();
141         }
142         LinkCostMap.put(edge10, 20);
143
144         Edge edge11 = null;
145         try {
146             edge11 = new Edge(nc62, nc42);
147         } catch (ConstructionException e) {
148             e.printStackTrace();
149         }
150         LinkCostMap.put(edge11, 20);
151         Edge edge12 = null;
152         try {
153             edge12 = new Edge(nc42, nc62);
154         } catch (ConstructionException e) {
155             e.printStackTrace();
156         }
157         LinkCostMap.put(edge12, 20);
158
159         imp.edgeUpdate(edge1, UpdateType.ADDED, null);
160         imp.edgeUpdate(edge2, UpdateType.ADDED, null);
161         imp.edgeUpdate(edge3, UpdateType.ADDED, null);
162         imp.edgeUpdate(edge4, UpdateType.ADDED, null);
163         imp.edgeUpdate(edge5, UpdateType.ADDED, null);
164         imp.edgeUpdate(edge6, UpdateType.ADDED, null);
165         imp.edgeUpdate(edge7, UpdateType.ADDED, null);
166         imp.edgeUpdate(edge8, UpdateType.ADDED, null);
167         imp.edgeUpdate(edge9, UpdateType.ADDED, null);
168         imp.edgeUpdate(edge10, UpdateType.ADDED, null);
169         imp.edgeUpdate(edge11, UpdateType.ADDED, null);
170         imp.edgeUpdate(edge12, UpdateType.ADDED, null);
171
172         imp.initMaxThroughput(LinkCostMap);
173
174         Path res = imp.getMaxThroughputRoute(node1, node3);
175         System.out.println("Max Thruput Path between n1-n3: " + res);
176
177         List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
178         expectedPath.add(0, edge7);
179         expectedPath.add(1, edge9);
180         expectedPath.add(2, edge11);
181         expectedPath.add(3, edge6);
182
183         Path expectedRes = null;
184         try {
185             expectedRes = new Path(expectedPath);
186         } catch (ConstructionException e) {
187             e.printStackTrace();
188         }
189         if (!res.equals(expectedRes)) {
190             System.out.println("Actual Res is " + res);
191             System.out.println("Expected Res is " + expectedRes);
192         }
193         Assert.assertTrue(res.equals(expectedRes));
194
195         res = imp.getRoute(node1, node3);
196         System.out.println("Shortest Path between n1-n3: " + res);
197         expectedPath.clear();
198         expectedPath.add(0, edge1);
199         expectedPath.add(1, edge3);
200
201         expectedRes = null;
202         try {
203             expectedRes = new Path(expectedPath);
204         } catch (ConstructionException e) {
205             e.printStackTrace();
206         }
207         if (!res.equals(expectedRes)) {
208             System.out.println("Actual Res is " + res);
209             System.out.println("Expected Res is " + expectedRes);
210         }
211         Assert.assertTrue(res.equals(expectedRes));
212     }
213 }