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;
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);
39 public void testSinglePathRouteNoBw() {
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 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
47 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
51 edge1 = new Edge(nc11, nc21);
52 } catch (ConstructionException e) {
55 Set<Property> props = new HashSet<Property>();
56 props.add(new Bandwidth(0));
57 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
58 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
60 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
64 edge2 = new Edge(nc22, nc31);
65 } catch (ConstructionException e) {
68 Set<Property> props2 = new HashSet<Property>();
69 props.add(new Bandwidth(0));
70 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
71 Path res = imp.getRoute(node1, node3);
73 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
74 expectedPath.add(0, edge1);
75 expectedPath.add(1, edge2);
76 Path expectedRes = null;
78 expectedRes = new Path(expectedPath);
79 } catch (ConstructionException e) {
82 if (!res.equals(expectedRes)) {
83 System.out.println("Actual Res is " + res);
84 System.out.println("Expected Res is " + expectedRes);
86 Assert.assertTrue(res.equals(expectedRes));
90 public void testShortestPathRouteNoBw() {
91 DijkstraImplementation imp = new DijkstraImplementation();
93 Node node1 = NodeCreator.createOFNode((long) 1);
94 Node node2 = NodeCreator.createOFNode((long) 2);
95 Node node3 = NodeCreator.createOFNode((long) 3);
96 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
98 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
102 edge1 = new Edge(nc11, nc21);
103 } catch (ConstructionException e) {
106 Set<Property> props = new HashSet<Property>();
107 props.add(new Bandwidth(0));
108 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
110 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
112 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
116 edge2 = new Edge(nc22, nc31);
117 } catch (ConstructionException e) {
120 Set<Property> props2 = new HashSet<Property>();
121 props.add(new Bandwidth(0));
122 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
124 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
126 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
130 edge3 = new Edge(nc12, nc32);
131 } catch (ConstructionException e) {
134 Set<Property> props3 = new HashSet<Property>();
135 props.add(new Bandwidth(0));
136 imp.edgeUpdate(edge3, UpdateType.ADDED, props3);
138 Path res = imp.getRoute(node1, node3);
140 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
141 expectedPath.add(0, edge3);
142 Path expectedRes = null;
144 expectedRes = new Path(expectedPath);
145 } catch (ConstructionException e) {
148 if (!res.equals(expectedRes)) {
149 System.out.println("Actual Res is " + res);
150 System.out.println("Expected Res is " + expectedRes);
152 Assert.assertTrue(res.equals(expectedRes));
156 public void testShortestPathRouteNoBwAfterLinkDelete() {
157 DijkstraImplementation imp = new DijkstraImplementation();
159 Node node1 = NodeCreator.createOFNode((long) 1);
160 Node node2 = NodeCreator.createOFNode((long) 2);
161 Node node3 = NodeCreator.createOFNode((long) 3);
162 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
164 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
168 edge1 = new Edge(nc11, nc21);
169 } catch (ConstructionException e) {
172 Set<Property> props = new HashSet<Property>();
173 props.add(new Bandwidth(0));
174 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
176 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
178 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
182 edge2 = new Edge(nc22, nc31);
183 } catch (ConstructionException e) {
186 Set<Property> props2 = new HashSet<Property>();
187 props.add(new Bandwidth(0));
188 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
190 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
192 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
196 edge3 = new Edge(nc12, nc32);
197 } catch (ConstructionException e) {
200 Set<Property> props3 = new HashSet<Property>();
201 props.add(new Bandwidth(0));
202 imp.edgeUpdate(edge3, UpdateType.ADDED, props3);
204 imp.edgeUpdate(edge3, UpdateType.REMOVED, props3);
206 Path res = imp.getRoute(node1, node3);
207 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
208 expectedPath.add(0, edge1);
209 expectedPath.add(1, edge2);
210 Path expectedRes = null;
212 expectedRes = new Path(expectedPath);
213 } catch (ConstructionException e) {
216 if (!res.equals(expectedRes)) {
217 System.out.println("Actual Res is " + res);
218 System.out.println("Expected Res is " + expectedRes);
220 Assert.assertTrue(res.equals(expectedRes));