Vector cost proposed to TST on 2016-07-13
First part implemented: weight interface introduced and integrated, default weight implementation added.
Change-Id: Ia46f1b44139069aa171a3c13faf168351bd7cc56
diff --git a/core/common/src/test/java/org/onosproject/common/DefaultTopologyTest.java b/core/common/src/test/java/org/onosproject/common/DefaultTopologyTest.java
index 2bf8cb7..48403d5 100644
--- a/core/common/src/test/java/org/onosproject/common/DefaultTopologyTest.java
+++ b/core/common/src/test/java/org/onosproject/common/DefaultTopologyTest.java
@@ -17,6 +17,9 @@
import org.junit.Before;
import org.junit.Test;
+import org.onlab.graph.DefaultEdgeWeigher;
+import org.onlab.graph.ScalarWeight;
+import org.onlab.graph.Weight;
import org.onlab.packet.ChassisId;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DefaultDevice;
@@ -31,8 +34,9 @@
import org.onosproject.net.topology.DefaultGraphDescription;
import org.onosproject.net.topology.DefaultTopologyVertex;
import org.onosproject.net.topology.GraphDescription;
-import org.onosproject.net.topology.LinkWeight;
+import org.onosproject.net.topology.LinkWeigher;
import org.onosproject.net.topology.TopologyCluster;
+import org.onosproject.net.topology.TopologyEdge;
import org.onosproject.net.topology.TopologyVertex;
import java.util.Set;
@@ -61,9 +65,19 @@
public static final PortNumber P1 = portNumber(1);
public static final PortNumber P2 = portNumber(2);
- public static final LinkWeight WEIGHT = edge ->
- edge.src().deviceId().equals(D4) || edge.dst().deviceId().equals(D4)
- ? 2.0 : 1.0;
+ public static final class TestLinkWeigher
+ extends DefaultEdgeWeigher<TopologyVertex, TopologyEdge>
+ implements LinkWeigher {
+ @Override
+ public Weight weight(TopologyEdge edge) {
+ double value = edge.src().deviceId().equals(D4) ||
+ edge.dst().deviceId().equals(D4)
+ ? 2.0 : HOP_WEIGHT_VALUE;
+ return new ScalarWeight(value);
+ }
+ }
+ public static final LinkWeigher WEIGHER = new TestLinkWeigher();
+
private DefaultTopology dt;
@@ -105,7 +119,7 @@
paths = dt.getPaths(D1, D5);
assertTrue("no paths expected", paths.isEmpty());
- paths = dt.getPaths(D1, D3, WEIGHT);
+ paths = dt.getPaths(D1, D3, WEIGHER);
assertEquals("incorrect path count", 1, paths.size());
}
diff --git a/core/common/src/test/java/org/onosproject/store/trivial/SimpleTopologyStore.java b/core/common/src/test/java/org/onosproject/store/trivial/SimpleTopologyStore.java
index 313d08e..708e38d 100644
--- a/core/common/src/test/java/org/onosproject/store/trivial/SimpleTopologyStore.java
+++ b/core/common/src/test/java/org/onosproject/store/trivial/SimpleTopologyStore.java
@@ -29,6 +29,7 @@
import org.onosproject.net.provider.ProviderId;
import org.onosproject.net.topology.ClusterId;
import org.onosproject.net.topology.GraphDescription;
+import org.onosproject.net.topology.LinkWeigher;
import org.onosproject.net.topology.LinkWeight;
import org.onosproject.net.topology.Topology;
import org.onosproject.net.topology.TopologyCluster;
@@ -43,6 +44,7 @@
import java.util.Map;
import java.util.Set;
+import static org.onosproject.net.topology.AdapterLinkWeigher.adapt;
import static org.slf4j.LoggerFactory.getLogger;
/**
@@ -112,7 +114,13 @@
@Override
public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst,
LinkWeight weight) {
- return defaultTopology(topology).getPaths(src, dst, weight);
+ return getPaths(topology, src, dst, adapt(weight));
+ }
+
+ @Override
+ public Set<Path> getPaths(Topology topology, DeviceId src,
+ DeviceId dst, LinkWeigher weigher) {
+ return defaultTopology(topology).getPaths(src, dst, weigher);
}
@Override
@@ -123,7 +131,13 @@
@Override
public Set<DisjointPath> getDisjointPaths(Topology topology, DeviceId src, DeviceId dst,
LinkWeight weight) {
- return defaultTopology(topology).getDisjointPaths(src, dst, weight);
+ return getDisjointPaths(topology, src, dst, adapt(weight));
+ }
+
+ @Override
+ public Set<DisjointPath> getDisjointPaths(Topology topology, DeviceId src,
+ DeviceId dst, LinkWeigher weigher) {
+ return defaultTopology(topology).getDisjointPaths(src, dst, weigher);
}
@Override
@@ -135,7 +149,15 @@
@Override
public Set<DisjointPath> getDisjointPaths(Topology topology, DeviceId src, DeviceId dst,
LinkWeight weight, Map<Link, Object> riskProfile) {
- return defaultTopology(topology).getDisjointPaths(src, dst, weight, riskProfile);
+ return getDisjointPaths(topology, src, dst, adapt(weight), riskProfile);
+ }
+
+ @Override
+ public Set<DisjointPath> getDisjointPaths(Topology topology, DeviceId src,
+ DeviceId dst,
+ LinkWeigher weigher,
+ Map<Link, Object> riskProfile) {
+ return defaultTopology(topology).getDisjointPaths(src, dst, weigher, riskProfile);
}
@Override