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();
37 Node node1 = NodeCreator.createOFNode((long) 1);
38 Node node2 = NodeCreator.createOFNode((long) 2);
39 Node node3 = NodeCreator.createOFNode((long) 3);
40 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
42 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
46 edge1 = new Edge(nc11, nc21);
47 } catch (ConstructionException e) {
50 Set<Property> props = new HashSet<Property>();
51 props.add(new Bandwidth(0));
52 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
53 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
55 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
59 edge2 = new Edge(nc22, nc31);
60 } catch (ConstructionException e) {
63 Set<Property> props2 = new HashSet<Property>();
64 props.add(new Bandwidth(0));
65 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
66 Path res = imp.getRoute(node1, node3);
68 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
69 expectedPath.add(0, edge1);
70 expectedPath.add(1, edge2);
71 Path expectedRes = null;
73 expectedRes = new Path(expectedPath);
74 } catch (ConstructionException e) {
77 if (!res.equals(expectedRes)) {
78 System.out.println("Actual Res is " + res);
79 System.out.println("Expected Res is " + expectedRes);
81 Assert.assertTrue(res.equals(expectedRes));
85 public void testShortestPathRouteNoBw() {
86 DijkstraImplementation imp = new DijkstraImplementation();
87 Node node1 = NodeCreator.createOFNode((long) 1);
88 Node node2 = NodeCreator.createOFNode((long) 2);
89 Node node3 = NodeCreator.createOFNode((long) 3);
90 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
92 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
96 edge1 = new Edge(nc11, nc21);
97 } catch (ConstructionException e) {
100 Set<Property> props = new HashSet<Property>();
101 props.add(new Bandwidth(0));
102 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
104 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
106 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
110 edge2 = new Edge(nc22, nc31);
111 } catch (ConstructionException e) {
114 Set<Property> props2 = new HashSet<Property>();
115 props.add(new Bandwidth(0));
116 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
118 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
120 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
124 edge3 = new Edge(nc12, nc32);
125 } catch (ConstructionException e) {
128 Set<Property> props3 = new HashSet<Property>();
129 props.add(new Bandwidth(0));
130 imp.edgeUpdate(edge3, UpdateType.ADDED, props3);
132 Path res = imp.getRoute(node1, node3);
134 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
135 expectedPath.add(0, edge3);
136 Path expectedRes = null;
138 expectedRes = new Path(expectedPath);
139 } catch (ConstructionException e) {
142 if (!res.equals(expectedRes)) {
143 System.out.println("Actual Res is " + res);
144 System.out.println("Expected Res is " + expectedRes);
146 Assert.assertTrue(res.equals(expectedRes));
150 public void testShortestPathRouteNoBwAfterLinkDelete() {
151 DijkstraImplementation imp = new DijkstraImplementation();
152 Node node1 = NodeCreator.createOFNode((long) 1);
153 Node node2 = NodeCreator.createOFNode((long) 2);
154 Node node3 = NodeCreator.createOFNode((long) 3);
155 NodeConnector nc11 = NodeConnectorCreator.createOFNodeConnector(
157 NodeConnector nc21 = NodeConnectorCreator.createOFNodeConnector(
161 edge1 = new Edge(nc11, nc21);
162 } catch (ConstructionException e) {
165 Set<Property> props = new HashSet<Property>();
166 props.add(new Bandwidth(0));
167 imp.edgeUpdate(edge1, UpdateType.ADDED, props);
169 NodeConnector nc22 = NodeConnectorCreator.createOFNodeConnector(
171 NodeConnector nc31 = NodeConnectorCreator.createOFNodeConnector(
175 edge2 = new Edge(nc22, nc31);
176 } catch (ConstructionException e) {
179 Set<Property> props2 = new HashSet<Property>();
180 props.add(new Bandwidth(0));
181 imp.edgeUpdate(edge2, UpdateType.ADDED, props2);
183 NodeConnector nc12 = NodeConnectorCreator.createOFNodeConnector(
185 NodeConnector nc32 = NodeConnectorCreator.createOFNodeConnector(
189 edge3 = new Edge(nc12, nc32);
190 } catch (ConstructionException e) {
193 Set<Property> props3 = new HashSet<Property>();
194 props.add(new Bandwidth(0));
195 imp.edgeUpdate(edge3, UpdateType.ADDED, props3);
197 imp.edgeUpdate(edge3, UpdateType.REMOVED, props3);
199 Path res = imp.getRoute(node1, node3);
200 List<Edge> expectedPath = (List<Edge>) new LinkedList<Edge>();
201 expectedPath.add(0, edge1);
202 expectedPath.add(1, edge2);
203 Path expectedRes = null;
205 expectedRes = new Path(expectedPath);
206 } catch (ConstructionException e) {
209 if (!res.equals(expectedRes)) {
210 System.out.println("Actual Res is " + res);
211 System.out.println("Expected Res is " + expectedRes);
213 Assert.assertTrue(res.equals(expectedRes));