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;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
33 public class MaxThruputTest {
34 protected static final Logger logger = LoggerFactory
35 .getLogger(MaxThruputTest.class);
36 Map<Edge, Number> LinkCostMap = new HashMap<Edge, Number>();
39 public void testMaxThruPut() {
40 DijkstraImplementation imp = new DijkstraImplementation();
42 Node node1 = NodeCreator.createOFNode((long) 1);
43 Node node2 = NodeCreator.createOFNode((long) 2);
44 Node node3 = NodeCreator.createOFNode((long) 3);
45 Node node4 = NodeCreator.createOFNode((long) 4);
46 Node node5 = NodeCreator.createOFNode((long) 5);
47 Node node6 = NodeCreator.createOFNode((long) 6);
48 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
50 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
52 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
54 NodeConnector nc41 = NodeConnectorCreator.createOFNodeConnector(
56 NodeConnector nc51 = NodeConnectorCreator.createOFNodeConnector(
58 NodeConnector nc61 = NodeConnectorCreator.createOFNodeConnector(
60 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
62 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
64 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
66 NodeConnector nc42 = NodeConnectorCreator.createOFNodeConnector(
68 NodeConnector nc52 = NodeConnectorCreator.createOFNodeConnector(
70 NodeConnector nc62 = NodeConnectorCreator.createOFNodeConnector(
75 edge1 = new Edge(nc11, nc21);
76 } catch (ConstructionException e) {
79 LinkCostMap.put(edge1, 10);
82 edge2 = new Edge(nc21, nc11);
83 } catch (ConstructionException e) {
86 LinkCostMap.put(edge2, 10);
90 edge3 = new Edge(nc22, nc31);
91 } catch (ConstructionException e) {
94 LinkCostMap.put(edge3, 30);
97 edge4 = new Edge(nc31, nc22);
98 } catch (ConstructionException e) {
101 LinkCostMap.put(edge4, 30);
105 edge5 = new Edge(nc32, nc41);
106 } catch (ConstructionException e) {
109 LinkCostMap.put(edge5, 10);
112 edge6 = new Edge(nc41, nc32);
113 } catch (ConstructionException e) {
116 LinkCostMap.put(edge6, 10);
120 edge7 = new Edge(nc12, nc51);
121 } catch (ConstructionException e) {
124 LinkCostMap.put(edge7, 20);
127 edge8 = new Edge(nc51, nc12);
128 } catch (ConstructionException e) {
131 LinkCostMap.put(edge8, 20);
135 edge9 = new Edge(nc52, nc61);
136 } catch (ConstructionException e) {
139 LinkCostMap.put(edge9, 20);
142 edge10 = new Edge(nc61, nc52);
143 } catch (ConstructionException e) {
146 LinkCostMap.put(edge10, 20);
150 edge11 = new Edge(nc62, nc42);
151 } catch (ConstructionException e) {
154 LinkCostMap.put(edge11, 20);
157 edge12 = new Edge(nc42, nc62);
158 } catch (ConstructionException e) {
161 LinkCostMap.put(edge12, 20);
163 imp.edgeUpdate(edge1, UpdateType.ADDED, null);
164 imp.edgeUpdate(edge2, UpdateType.ADDED, null);
165 imp.edgeUpdate(edge3, UpdateType.ADDED, null);
166 imp.edgeUpdate(edge4, UpdateType.ADDED, null);
167 imp.edgeUpdate(edge5, UpdateType.ADDED, null);
168 imp.edgeUpdate(edge6, UpdateType.ADDED, null);
169 imp.edgeUpdate(edge7, UpdateType.ADDED, null);
170 imp.edgeUpdate(edge8, UpdateType.ADDED, null);
171 imp.edgeUpdate(edge9, UpdateType.ADDED, null);
172 imp.edgeUpdate(edge10, UpdateType.ADDED, null);
173 imp.edgeUpdate(edge11, UpdateType.ADDED, null);
174 imp.edgeUpdate(edge12, UpdateType.ADDED, null);
176 imp.initMaxThroughput(LinkCostMap);
178 Path res = imp.getMaxThroughputRoute(node1, node3);
179 System.out.println("Max Thruput Path between n1-n3: " + res);
181 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
182 expectedPath.add(0, edge7);
183 expectedPath.add(1, edge9);
184 expectedPath.add(2, edge11);
185 expectedPath.add(3, edge6);
187 Path expectedRes = null;
189 expectedRes = new Path(expectedPath);
190 } catch (ConstructionException e) {
193 if (!res.equals(expectedRes)) {
194 System.out.println("Actual Res is " + res);
195 System.out.println("Expected Res is " + expectedRes);
197 Assert.assertTrue(res.equals(expectedRes));
199 res = imp.getRoute(node1, node3);
200 System.out.println("Shortest Path between n1-n3: " + res);
201 expectedPath.clear();
202 expectedPath.add(0, edge1);
203 expectedPath.add(1, edge3);
207 expectedRes = new Path(expectedPath);
208 } catch (ConstructionException e) {
211 if (!res.equals(expectedRes)) {
212 System.out.println("Actual Res is " + res);
213 System.out.println("Expected Res is " + expectedRes);
215 Assert.assertTrue(res.equals(expectedRes));