2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.routing.dijkstra_implementation;
11 import org.opendaylight.controller.sal.core.Bandwidth;
12 import org.opendaylight.controller.sal.core.ConstructionException;
13 import org.opendaylight.controller.sal.core.Edge;
14 import org.opendaylight.controller.sal.core.Node;
15 import org.opendaylight.controller.sal.core.NodeConnector;
16 import org.opendaylight.controller.sal.core.Path;
17 import org.opendaylight.controller.sal.core.Property;
18 import org.opendaylight.controller.sal.core.UpdateType;
19 import org.opendaylight.controller.sal.topology.TopoEdgeUpdate;
20 import org.opendaylight.controller.sal.utils.NodeConnectorCreator;
21 import org.opendaylight.controller.sal.utils.NodeCreator;
23 import java.util.ArrayList;
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;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
35 public class DijkstraTest {
36 protected static final Logger logger = LoggerFactory
37 .getLogger(DijkstraTest.class);
40 public void testSinglePathRouteNoBw() {
41 DijkstraImplementation imp = new DijkstraImplementation();
43 Node node1 = NodeCreator.createOFNode((long) 1);
44 Node node2 = NodeCreator.createOFNode((long) 2);
45 Node node3 = NodeCreator.createOFNode((long) 3);
46 List<TopoEdgeUpdate> topoedgeupdateList = new ArrayList<TopoEdgeUpdate>();
47 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
49 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
53 edge1 = new Edge(nc11, nc21);
54 } catch (ConstructionException e) {
57 Set<Property> props = new HashSet<Property>();
58 props.add(new Bandwidth(0));
59 TopoEdgeUpdate teu1 = new TopoEdgeUpdate(edge1, props, UpdateType.ADDED);
60 topoedgeupdateList.add(teu1);
62 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
64 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
68 edge2 = new Edge(nc22, nc31);
69 } catch (ConstructionException e) {
72 Set<Property> props2 = new HashSet<Property>();
73 props2.add(new Bandwidth(0));
74 TopoEdgeUpdate teu2 = new TopoEdgeUpdate(edge2, props2,
76 topoedgeupdateList.add(teu2);
77 imp.edgeUpdate(topoedgeupdateList);
78 Path res = imp.getRoute(node1, node3);
80 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
81 expectedPath.add(0, edge1);
82 expectedPath.add(1, edge2);
83 Path expectedRes = null;
85 expectedRes = new Path(expectedPath);
86 } catch (ConstructionException e) {
89 if (!res.equals(expectedRes)) {
90 System.out.println("Actual Res is " + res);
91 System.out.println("Expected Res is " + expectedRes);
93 Assert.assertTrue(res.equals(expectedRes));
97 public void testShortestPathRouteNoBw() {
98 DijkstraImplementation imp = new DijkstraImplementation();
99 List<TopoEdgeUpdate> topoedgeupdateList = new ArrayList<TopoEdgeUpdate>();
101 Node node1 = NodeCreator.createOFNode((long) 1);
102 Node node2 = NodeCreator.createOFNode((long) 2);
103 Node node3 = NodeCreator.createOFNode((long) 3);
104 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
106 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
110 edge1 = new Edge(nc11, nc21);
111 } catch (ConstructionException e) {
114 Set<Property> props = new HashSet<Property>();
115 props.add(new Bandwidth(0));
116 TopoEdgeUpdate teu1 = new TopoEdgeUpdate(edge1, props, UpdateType.ADDED);
117 topoedgeupdateList.add(teu1);
119 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
121 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
125 edge2 = new Edge(nc22, nc31);
126 } catch (ConstructionException e) {
129 Set<Property> props2 = new HashSet<Property>();
130 props2.add(new Bandwidth(0));
131 TopoEdgeUpdate teu2 = new TopoEdgeUpdate(edge2, props2,
133 topoedgeupdateList.add(teu2);
135 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
137 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
141 edge3 = new Edge(nc12, nc32);
142 } catch (ConstructionException e) {
145 Set<Property> props3 = new HashSet<Property>();
146 props3.add(new Bandwidth(0));
147 TopoEdgeUpdate teu3 = new TopoEdgeUpdate(edge3, props3,
149 topoedgeupdateList.add(teu3);
150 imp.edgeUpdate(topoedgeupdateList);
152 Path res = imp.getRoute(node1, node3);
154 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
155 expectedPath.add(0, edge3);
156 Path expectedRes = null;
158 expectedRes = new Path(expectedPath);
159 } catch (ConstructionException e) {
162 if (!res.equals(expectedRes)) {
163 System.out.println("Actual Res is " + res);
164 System.out.println("Expected Res is " + expectedRes);
166 Assert.assertTrue(res.equals(expectedRes));
170 public void testShortestPathRouteNoBwAfterLinkDelete() {
171 DijkstraImplementation imp = new DijkstraImplementation();
173 List<TopoEdgeUpdate> topoedgeupdateList = new ArrayList<TopoEdgeUpdate>();
174 Node node1 = NodeCreator.createOFNode((long) 1);
175 Node node2 = NodeCreator.createOFNode((long) 2);
176 Node node3 = NodeCreator.createOFNode((long) 3);
177 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
179 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
183 edge1 = new Edge(nc11, nc21);
184 } catch (ConstructionException e) {
187 Set<Property> props = new HashSet<Property>();
188 props.add(new Bandwidth(0));
189 TopoEdgeUpdate teu1 = new TopoEdgeUpdate(edge1, props, UpdateType.ADDED);
190 topoedgeupdateList.add(teu1);
192 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
194 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
198 edge2 = new Edge(nc22, nc31);
199 } catch (ConstructionException e) {
202 Set<Property> props2 = new HashSet<Property>();
203 props2.add(new Bandwidth(0));
204 TopoEdgeUpdate teu2 = new TopoEdgeUpdate(edge2, props2,
206 topoedgeupdateList.add(teu2);
208 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
210 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
214 edge3 = new Edge(nc12, nc32);
215 } catch (ConstructionException e) {
218 Set<Property> props3 = new HashSet<Property>();
219 props3.add(new Bandwidth(0));
220 TopoEdgeUpdate teu3 = new TopoEdgeUpdate(edge3, props3,
222 topoedgeupdateList.add(teu3);
223 TopoEdgeUpdate teu4 = new TopoEdgeUpdate(edge3, props3,
225 topoedgeupdateList.add(teu4);
227 imp.edgeUpdate(topoedgeupdateList);
229 Path res = imp.getRoute(node1, node3);
230 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
231 expectedPath.add(0, edge1);
232 expectedPath.add(1, edge2);
233 Path expectedRes = null;
235 expectedRes = new Path(expectedPath);
236 } catch (ConstructionException e) {
239 if (!res.equals(expectedRes)) {
240 System.out.println("Actual Res is " + res);
241 System.out.println("Expected Res is " + expectedRes);
243 Assert.assertTrue(res.equals(expectedRes));