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
11 package org.opendaylight.controller.routing.dijkstra_implementation;
13 import org.opendaylight.controller.sal.core.Bandwidth;
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.core.Property;
20 import org.opendaylight.controller.sal.core.UpdateType;
21 import org.opendaylight.controller.sal.utils.NodeConnectorCreator;
22 import org.opendaylight.controller.sal.utils.NodeCreator;
24 import java.util.HashSet;
25 import java.util.LinkedList;
26 import java.util.List;
29 import org.junit.Assert;
30 import org.junit.Test;
31 import org.opendaylight.controller.routing.dijkstra_implementation.internal.DijkstraImplementation;
33 public class DijkstraTest {
35 public void testSinglePathRouteNoBw() {
36 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 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
43 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
47 edge1 = new Edge(nc11, nc21);
48 } catch (ConstructionException e) {
51 Set<Property> props = new HashSet<Property>();
52 props.add(new Bandwidth(0));
53 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
54 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
56 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
60 edge2 = new Edge(nc22, nc31);
61 } catch (ConstructionException e) {
64 Set<Property> props2 = new HashSet<Property>();
65 props.add(new Bandwidth(0));
66 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
67 Path res = imp.getRoute(node1, node3);
69 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
70 expectedPath.add(0, edge1);
71 expectedPath.add(1, edge2);
72 Path expectedRes = null;
74 expectedRes = new Path(expectedPath);
75 } catch (ConstructionException e) {
78 if (!res.equals(expectedRes)) {
79 System.out.println("Actual Res is " + res);
80 System.out.println("Expected Res is " + expectedRes);
82 Assert.assertTrue(res.equals(expectedRes));
86 public void testShortestPathRouteNoBw() {
87 DijkstraImplementation imp = new DijkstraImplementation();
89 Node node1 = NodeCreator.createOFNode((long) 1);
90 Node node2 = NodeCreator.createOFNode((long) 2);
91 Node node3 = NodeCreator.createOFNode((long) 3);
92 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
94 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
98 edge1 = new Edge(nc11, nc21);
99 } catch (ConstructionException e) {
102 Set<Property> props = new HashSet<Property>();
103 props.add(new Bandwidth(0));
104 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
106 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
108 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
112 edge2 = new Edge(nc22, nc31);
113 } catch (ConstructionException e) {
116 Set<Property> props2 = new HashSet<Property>();
117 props.add(new Bandwidth(0));
118 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
120 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
122 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
126 edge3 = new Edge(nc12, nc32);
127 } catch (ConstructionException e) {
130 Set<Property> props3 = new HashSet<Property>();
131 props.add(new Bandwidth(0));
132 imp.edgeUpdate(edge3, UpdateType.ADDED, props3);
134 Path res = imp.getRoute(node1, node3);
136 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
137 expectedPath.add(0, edge3);
138 Path expectedRes = null;
140 expectedRes = new Path(expectedPath);
141 } catch (ConstructionException e) {
144 if (!res.equals(expectedRes)) {
145 System.out.println("Actual Res is " + res);
146 System.out.println("Expected Res is " + expectedRes);
148 Assert.assertTrue(res.equals(expectedRes));
152 public void testShortestPathRouteNoBwAfterLinkDelete() {
153 DijkstraImplementation imp = new DijkstraImplementation();
155 Node node1 = NodeCreator.createOFNode((long) 1);
156 Node node2 = NodeCreator.createOFNode((long) 2);
157 Node node3 = NodeCreator.createOFNode((long) 3);
158 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
160 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
164 edge1 = new Edge(nc11, nc21);
165 } catch (ConstructionException e) {
168 Set<Property> props = new HashSet<Property>();
169 props.add(new Bandwidth(0));
170 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
172 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
174 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
178 edge2 = new Edge(nc22, nc31);
179 } catch (ConstructionException e) {
182 Set<Property> props2 = new HashSet<Property>();
183 props.add(new Bandwidth(0));
184 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
186 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
188 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
192 edge3 = new Edge(nc12, nc32);
193 } catch (ConstructionException e) {
196 Set<Property> props3 = new HashSet<Property>();
197 props.add(new Bandwidth(0));
198 imp.edgeUpdate(edge3, UpdateType.ADDED, props3);
200 imp.edgeUpdate(edge3, UpdateType.REMOVED, props3);
202 Path res = imp.getRoute(node1, node3);
203 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
204 expectedPath.add(0, edge1);
205 expectedPath.add(1, edge2);
206 Path expectedRes = null;
208 expectedRes = new Path(expectedPath);
209 } catch (ConstructionException e) {
212 if (!res.equals(expectedRes)) {
213 System.out.println("Actual Res is " + res);
214 System.out.println("Expected Res is " + expectedRes);
216 Assert.assertTrue(res.equals(expectedRes));