From 936c49d147ec5d9824794bcb6bde73564553dba4 Mon Sep 17 00:00:00 2001 From: Jonathan Hart Date: Thu, 23 Oct 2014 16:38:59 -0700 Subject: [PATCH] Added getCriterion method to TrafficSelector Change-Id: I72d89d878e1fae95d1e16d9ed473b7711895e478 --- .../onos/net/flow/DefaultTrafficSelector.java | 10 ++++++++++ .../org/onlab/onos/net/flow/TrafficSelector.java | 9 +++++++++ .../onos/net/flow/impl/FlowRuleManagerTest.java | 14 ++++++++++---- .../onlab/onos/net/intent/IntentTestsMocks.java | 10 ++++++++-- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficSelector.java b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficSelector.java index b840318615..fa8a64c09b 100644 --- a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficSelector.java +++ b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficSelector.java @@ -54,6 +54,16 @@ public final class DefaultTrafficSelector implements TrafficSelector { return criteria; } + @Override + public Criterion getCriterion(Criterion.Type type) { + for (Criterion c : criteria) { + if (c.type() == type) { + return c; + } + } + return null; + } + @Override public int hashCode() { return Objects.hash(criteria); diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java index ab9b4a15dc..bcaf70c45e 100644 --- a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java +++ b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java @@ -38,6 +38,15 @@ public interface TrafficSelector { */ Set criteria(); + /** + * Returns the selection criterion for a particular type, if it exists in + * this traffic selector. + * + * @param type criterion type to look up + * @return the criterion of the specified type if one exists, otherwise null + */ + Criterion getCriterion(Criterion.Type type); + /** * Builder of traffic selector entities. */ diff --git a/core/net/src/test/java/org/onlab/onos/net/flow/impl/FlowRuleManagerTest.java b/core/net/src/test/java/org/onlab/onos/net/flow/impl/FlowRuleManagerTest.java index 1677af653d..659a2c41ed 100644 --- a/core/net/src/test/java/org/onlab/onos/net/flow/impl/FlowRuleManagerTest.java +++ b/core/net/src/test/java/org/onlab/onos/net/flow/impl/FlowRuleManagerTest.java @@ -6,12 +6,11 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.onlab.onos.net.flow.FlowRuleEvent.Type.RULE_ADDED; +import static org.onlab.onos.net.flow.FlowRuleEvent.Type.RULE_ADD_REQUESTED; import static org.onlab.onos.net.flow.FlowRuleEvent.Type.RULE_REMOVED; +import static org.onlab.onos.net.flow.FlowRuleEvent.Type.RULE_REMOVE_REQUESTED; import static org.onlab.onos.net.flow.FlowRuleEvent.Type.RULE_UPDATED; - -import static org.onlab.onos.net.flow.FlowRuleEvent.Type.*; - import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -39,6 +38,7 @@ import org.onlab.onos.net.Port; import org.onlab.onos.net.PortNumber; import org.onlab.onos.net.device.DeviceListener; import org.onlab.onos.net.device.DeviceService; +import org.onlab.onos.net.flow.BatchOperation; import org.onlab.onos.net.flow.CompletedBatchOperation; import org.onlab.onos.net.flow.DefaultFlowEntry; import org.onlab.onos.net.flow.DefaultFlowRule; @@ -58,7 +58,6 @@ import org.onlab.onos.net.flow.TrafficSelector; import org.onlab.onos.net.flow.TrafficTreatment; import org.onlab.onos.net.flow.criteria.Criterion; import org.onlab.onos.net.flow.instructions.Instruction; -import org.onlab.onos.net.flow.BatchOperation; import org.onlab.onos.net.provider.AbstractProvider; import org.onlab.onos.net.provider.ProviderId; import org.onlab.onos.store.trivial.impl.SimpleFlowRuleStore; @@ -582,6 +581,12 @@ public class FlowRuleManagerTest { return null; } + @Override + public Criterion getCriterion( + org.onlab.onos.net.flow.criteria.Criterion.Type type) { + return null; + } + @Override public int hashCode() { return testval; @@ -594,6 +599,7 @@ public class FlowRuleManagerTest { } return false; } + } private class TestTreatment implements TrafficTreatment { diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/IntentTestsMocks.java b/core/net/src/test/java/org/onlab/onos/net/intent/IntentTestsMocks.java index 0f020a49c7..e0e49ef3b5 100644 --- a/core/net/src/test/java/org/onlab/onos/net/intent/IntentTestsMocks.java +++ b/core/net/src/test/java/org/onlab/onos/net/intent/IntentTestsMocks.java @@ -1,5 +1,7 @@ package org.onlab.onos.net.intent; +import static org.onlab.onos.net.NetTestTools.createPath; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -12,12 +14,11 @@ import org.onlab.onos.net.Path; import org.onlab.onos.net.flow.TrafficSelector; import org.onlab.onos.net.flow.TrafficTreatment; import org.onlab.onos.net.flow.criteria.Criterion; +import org.onlab.onos.net.flow.criteria.Criterion.Type; import org.onlab.onos.net.flow.instructions.Instruction; import org.onlab.onos.net.topology.LinkWeight; import org.onlab.onos.net.topology.PathService; -import static org.onlab.onos.net.NetTestTools.createPath; - /** * Common mocks used by the intent framework tests. */ @@ -30,6 +31,11 @@ public class IntentTestsMocks { public Set criteria() { return new HashSet<>(); } + + @Override + public Criterion getCriterion(Type type) { + return null; + } } /**