3 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
10 package org.opendaylight.controller.routing.dijkstra_implementation;
12 import org.junit.Test;
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;
26 import org.junit.Assert;
27 import org.opendaylight.controller.routing.dijkstra_implementation.internal.DijkstraImplementation;
29 import org.opendaylight.controller.sal.core.UpdateType;
31 public class MaxThruputTest {
33 Map<Edge, Number> LinkCostMap = new HashMap<Edge, Number>();
36 public void testMaxThruPut() {
37 DijkstraImplementation imp = new DijkstraImplementation();
39 Node node1 = NodeCreator.createOFNode((long) 1);
40 Node node2 = NodeCreator.createOFNode((long) 2);
41 Node node3 = NodeCreator.createOFNode((long) 3);
42 Node node4 = NodeCreator.createOFNode((long) 4);
43 Node node5 = NodeCreator.createOFNode((long) 5);
44 Node node6 = NodeCreator.createOFNode((long) 6);
45 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
47 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
49 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
51 NodeConnector nc41 = NodeConnectorCreator.createOFNodeConnector(
53 NodeConnector nc51 = NodeConnectorCreator.createOFNodeConnector(
55 NodeConnector nc61 = NodeConnectorCreator.createOFNodeConnector(
57 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
59 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
61 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
63 NodeConnector nc42 = NodeConnectorCreator.createOFNodeConnector(
65 NodeConnector nc52 = NodeConnectorCreator.createOFNodeConnector(
67 NodeConnector nc62 = NodeConnectorCreator.createOFNodeConnector(
72 edge1 = new Edge(nc11, nc21);
73 } catch (ConstructionException e) {
76 LinkCostMap.put(edge1, 10);
79 edge2 = new Edge(nc21, nc11);
80 } catch (ConstructionException e) {
83 LinkCostMap.put(edge2, 10);
87 edge3 = new Edge(nc22, nc31);
88 } catch (ConstructionException e) {
91 LinkCostMap.put(edge3, 30);
94 edge4 = new Edge(nc31, nc22);
95 } catch (ConstructionException e) {
98 LinkCostMap.put(edge4, 30);
102 edge5 = new Edge(nc32, nc41);
103 } catch (ConstructionException e) {
106 LinkCostMap.put(edge5, 10);
109 edge6 = new Edge(nc41, nc32);
110 } catch (ConstructionException e) {
113 LinkCostMap.put(edge6, 10);
117 edge7 = new Edge(nc12, nc51);
118 } catch (ConstructionException e) {
121 LinkCostMap.put(edge7, 20);
124 edge8 = new Edge(nc51, nc12);
125 } catch (ConstructionException e) {
128 LinkCostMap.put(edge8, 20);
132 edge9 = new Edge(nc52, nc61);
133 } catch (ConstructionException e) {
136 LinkCostMap.put(edge9, 20);
139 edge10 = new Edge(nc61, nc52);
140 } catch (ConstructionException e) {
143 LinkCostMap.put(edge10, 20);
147 edge11 = new Edge(nc62, nc42);
148 } catch (ConstructionException e) {
151 LinkCostMap.put(edge11, 20);
154 edge12 = new Edge(nc42, nc62);
155 } catch (ConstructionException e) {
158 LinkCostMap.put(edge12, 20);
160 imp.edgeUpdate(edge1, UpdateType.ADDED, null);
161 imp.edgeUpdate(edge2, UpdateType.ADDED, null);
162 imp.edgeUpdate(edge3, UpdateType.ADDED, null);
163 imp.edgeUpdate(edge4, UpdateType.ADDED, null);
164 imp.edgeUpdate(edge5, UpdateType.ADDED, null);
165 imp.edgeUpdate(edge6, UpdateType.ADDED, null);
166 imp.edgeUpdate(edge7, UpdateType.ADDED, null);
167 imp.edgeUpdate(edge8, UpdateType.ADDED, null);
168 imp.edgeUpdate(edge9, UpdateType.ADDED, null);
169 imp.edgeUpdate(edge10, UpdateType.ADDED, null);
170 imp.edgeUpdate(edge11, UpdateType.ADDED, null);
171 imp.edgeUpdate(edge12, UpdateType.ADDED, null);
173 imp.initMaxThroughput(LinkCostMap);
175 Path res = imp.getMaxThroughputRoute(node1, node3);
176 System.out.println("Max Thruput Path between n1-n3: " + res);
178 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
179 expectedPath.add(0, edge7);
180 expectedPath.add(1, edge9);
181 expectedPath.add(2, edge11);
182 expectedPath.add(3, edge6);
184 Path expectedRes = null;
186 expectedRes = new Path(expectedPath);
187 } catch (ConstructionException e) {
190 if (!res.equals(expectedRes)) {
191 System.out.println("Actual Res is " + res);
192 System.out.println("Expected Res is " + expectedRes);
194 Assert.assertTrue(res.equals(expectedRes));
196 res = imp.getRoute(node1, node3);
197 System.out.println("Shortest Path between n1-n3: " + res);
198 expectedPath.clear();
199 expectedPath.add(0, edge1);
200 expectedPath.add(1, edge3);
204 expectedRes = new Path(expectedPath);
205 } catch (ConstructionException e) {
208 if (!res.equals(expectedRes)) {
209 System.out.println("Actual Res is " + res);
210 System.out.println("Expected Res is " + expectedRes);
212 Assert.assertTrue(res.equals(expectedRes));