diff options
Diffstat (limited to 'framework/src/onos/utils/misc')
5 files changed, 51 insertions, 177 deletions
diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java index 206a34c8..dfa150e3 100644 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java +++ b/framework/src/onos/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java @@ -30,8 +30,8 @@ import static com.google.common.base.MoreObjects.toStringHelper; */ public class DisjointPathPair<V extends Vertex, E extends Edge<V>> implements Path<V, E> { - private Path<V, E> primary, secondary; - boolean primaryActive = true; + private final Path<V, E> primary, secondary; + private boolean primaryActive = true; /** * Creates a disjoint path pair from two paths. @@ -88,7 +88,7 @@ public class DisjointPathPair<V extends Vertex, E extends Edge<V>> implements Pa * @return boolean representing whether it has backup */ public boolean hasBackup() { - return secondary != null && secondary.edges() != null; + return secondary != null; } @Override @@ -103,7 +103,9 @@ public class DisjointPathPair<V extends Vertex, E extends Edge<V>> implements Pa @Override public int hashCode() { - return hasBackup() ? Objects.hash(primary) + Objects.hash(secondary) : + // Note: DisjointPathPair with primary and secondary swapped + // must result in same hashCode + return hasBackup() ? primary.hashCode() + secondary.hashCode() : Objects.hash(primary); } diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java.orig b/framework/src/onos/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java.orig deleted file mode 100644 index 1cf22b6a..00000000 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java.orig +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -package org.onlab.graph; - -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import static com.google.common.collect.ImmutableSet.of; -import static com.google.common.base.MoreObjects.toStringHelper; - - -public class DisjointPathPair<V extends Vertex, E extends Edge<V>> implements Path<V, E> { - public Path<V, E> path1, path2; - boolean usingPath1 = true; - -<<<<<<< HEAD - /** - * Creates a Disjoint Path Pair from two paths. - * - * @param p1 first path - * @param p2 second path - */ -======= ->>>>>>> Disjoint Path Pairs (Suurballe) utils - public DisjointPathPair(Path<V, E> p1, Path<V, E> p2) { - path1 = p1; - path2 = p2; - } -<<<<<<< HEAD - - @Override -======= ->>>>>>> Disjoint Path Pairs (Suurballe) utils - public V src() { - return path1.src(); - } - -<<<<<<< HEAD - @Override - public V dst() { - return path1.dst(); - } - - @Override -======= - public V dst() { - return path1.dst(); - } ->>>>>>> Disjoint Path Pairs (Suurballe) utils - public double cost() { - if (!hasBackup()) { - return path1.cost(); - } - return path1.cost() + path2.cost(); - } -<<<<<<< HEAD - - @Override -======= ->>>>>>> Disjoint Path Pairs (Suurballe) utils - public List<E> edges() { - if (usingPath1 || !hasBackup()) { - return path1.edges(); - } else { - return path2.edges(); - } - } -<<<<<<< HEAD - - /** - * Checks if this path pair contains a backup/secondary path. - * - * @return boolean representing whether it has backup - */ - public boolean hasBackup() { - return path2 != null && path2.edges() != null; - } - - /** - * Switches this disjoint path pair to using its backup path, instead of - * using its primary. - */ - public void useBackup() { - usingPath1 = !usingPath1; - } - - @Override -======= - public boolean hasBackup() { - return path2 != null && path2.edges() != null; - } - public void useBackup() { - usingPath1 = !usingPath1; - } ->>>>>>> Disjoint Path Pairs (Suurballe) utils - public String toString() { - return toStringHelper(this) - .add("src", src()) - .add("dst", dst()) - .add("cost", cost()) - .add("edges", edges()) - .toString(); - } -<<<<<<< HEAD - - @Override -======= ->>>>>>> Disjoint Path Pairs (Suurballe) utils - public int hashCode() { - Set<Path<V, E>> paths; - if (!hasBackup()) { - paths = of(path1); - } else { - paths = of(path1, path2); - } - return Objects.hash(paths); - } -<<<<<<< HEAD - - @Override -======= ->>>>>>> Disjoint Path Pairs (Suurballe) utils - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DisjointPathPair) { - final DisjointPathPair other = (DisjointPathPair) obj; - return Objects.equals(this.src(), other.src()) && - Objects.equals(this.dst(), other.dst()) && - (Objects.equals(this.path1, other.path1) && - Objects.equals(this.path2, other.path2)) || - (Objects.equals(this.path1, other.path2) && - Objects.equals(this.path2, other.path1)); - } - return false; - } -<<<<<<< HEAD - - /** - * Returns number of paths inside this path pair object. - * - * @return number of paths - */ -======= ->>>>>>> Disjoint Path Pairs (Suurballe) utils - public int size() { - if (hasBackup()) { - return 2; - } - return 1; - } -} diff --git a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Frequency.java b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Frequency.java index 5669abdc..1ef71130 100644 --- a/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Frequency.java +++ b/framework/src/onos/utils/misc/src/main/java/org/onlab/util/Frequency.java @@ -18,8 +18,6 @@ package org.onlab.util; import com.google.common.base.MoreObjects; import com.google.common.collect.ComparisonChain; -import java.util.Objects; - /** * Class representing frequency. This class is intended to be used for a value whose unit is Hz * and its family (KHz, MHz, etc.). @@ -157,7 +155,7 @@ public final class Frequency implements RichComparable<Frequency> { @Override public int hashCode() { - return Objects.hash(frequency); + return Long.hashCode(frequency); } @Override diff --git a/framework/src/onos/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java b/framework/src/onos/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java new file mode 100644 index 00000000..ca6c56c4 --- /dev/null +++ b/framework/src/onos/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java @@ -0,0 +1,43 @@ +package org.onlab.graph; + +import static org.junit.Assert.*; + +import org.junit.Test; + +import com.google.common.collect.ImmutableList; +import com.google.common.testing.EqualsTester; + +/** + * Test of DisjointPathPair. + */ +public class DisjointPathPairTest { + + private static final TestVertex A = new TestVertex("A"); + private static final TestVertex B = new TestVertex("B"); + private static final TestVertex C = new TestVertex("C"); + private static final TestVertex D = new TestVertex("D"); + + private static final TestEdge AB = new TestEdge(A, B, 1.0); + private static final TestEdge BC = new TestEdge(B, C, 1.0); + private static final TestEdge AD = new TestEdge(A, D, 1.0); + private static final TestEdge DC = new TestEdge(D, C, 1.0); + + private static final Path<TestVertex, TestEdge> ABC + = new DefaultPath<>(ImmutableList.of(AB, BC), 1.0); + private static final Path<TestVertex, TestEdge> ADC + = new DefaultPath<>(ImmutableList.of(AD, DC), 1.0); + + @Test + public void testSwappingPrimarySecondaryDoesntImpactHashCode() { + assertEquals(new DisjointPathPair<>(ABC, ADC).hashCode(), + new DisjointPathPair<>(ADC, ABC).hashCode()); + } + + @Test + public void testSwappingPrimarySecondaryDoesntImpactEquality() { + new EqualsTester() + .addEqualityGroup(new DisjointPathPair<>(ABC, ADC), + new DisjointPathPair<>(ADC, ABC)); + } + +} diff --git a/framework/src/onos/utils/misc/src/test/java/org/onlab/graph/TestVertex.java b/framework/src/onos/utils/misc/src/test/java/org/onlab/graph/TestVertex.java index be92bd27..b0b92a4a 100644 --- a/framework/src/onos/utils/misc/src/test/java/org/onlab/graph/TestVertex.java +++ b/framework/src/onos/utils/misc/src/test/java/org/onlab/graph/TestVertex.java @@ -30,7 +30,7 @@ public class TestVertex implements Vertex { @Override public int hashCode() { - return Objects.hash(name); + return name.hashCode(); } @Override |