Added getCriterion method to TrafficSelector

Change-Id: I72d89d878e1fae95d1e16d9ed473b7711895e478
This commit is contained in:
Jonathan Hart 2014-10-23 16:38:59 -07:00
parent 38948410f7
commit 936c49d147
4 changed files with 37 additions and 6 deletions

View File

@ -54,6 +54,16 @@ public final class DefaultTrafficSelector implements TrafficSelector {
return criteria; return criteria;
} }
@Override
public Criterion getCriterion(Criterion.Type type) {
for (Criterion c : criteria) {
if (c.type() == type) {
return c;
}
}
return null;
}
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(criteria); return Objects.hash(criteria);

View File

@ -38,6 +38,15 @@ public interface TrafficSelector {
*/ */
Set<Criterion> criteria(); Set<Criterion> 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. * Builder of traffic selector entities.
*/ */

View File

@ -6,12 +6,11 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; 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_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_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.RULE_UPDATED;
import static org.onlab.onos.net.flow.FlowRuleEvent.Type.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; 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.PortNumber;
import org.onlab.onos.net.device.DeviceListener; import org.onlab.onos.net.device.DeviceListener;
import org.onlab.onos.net.device.DeviceService; 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.CompletedBatchOperation;
import org.onlab.onos.net.flow.DefaultFlowEntry; import org.onlab.onos.net.flow.DefaultFlowEntry;
import org.onlab.onos.net.flow.DefaultFlowRule; 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.TrafficTreatment;
import org.onlab.onos.net.flow.criteria.Criterion; import org.onlab.onos.net.flow.criteria.Criterion;
import org.onlab.onos.net.flow.instructions.Instruction; 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.AbstractProvider;
import org.onlab.onos.net.provider.ProviderId; import org.onlab.onos.net.provider.ProviderId;
import org.onlab.onos.store.trivial.impl.SimpleFlowRuleStore; import org.onlab.onos.store.trivial.impl.SimpleFlowRuleStore;
@ -582,6 +581,12 @@ public class FlowRuleManagerTest {
return null; return null;
} }
@Override
public Criterion getCriterion(
org.onlab.onos.net.flow.criteria.Criterion.Type type) {
return null;
}
@Override @Override
public int hashCode() { public int hashCode() {
return testval; return testval;
@ -594,6 +599,7 @@ public class FlowRuleManagerTest {
} }
return false; return false;
} }
} }
private class TestTreatment implements TrafficTreatment { private class TestTreatment implements TrafficTreatment {

View File

@ -1,5 +1,7 @@
package org.onlab.onos.net.intent; package org.onlab.onos.net.intent;
import static org.onlab.onos.net.NetTestTools.createPath;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; 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.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment; import org.onlab.onos.net.flow.TrafficTreatment;
import org.onlab.onos.net.flow.criteria.Criterion; 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.flow.instructions.Instruction;
import org.onlab.onos.net.topology.LinkWeight; import org.onlab.onos.net.topology.LinkWeight;
import org.onlab.onos.net.topology.PathService; import org.onlab.onos.net.topology.PathService;
import static org.onlab.onos.net.NetTestTools.createPath;
/** /**
* Common mocks used by the intent framework tests. * Common mocks used by the intent framework tests.
*/ */
@ -30,6 +31,11 @@ public class IntentTestsMocks {
public Set<Criterion> criteria() { public Set<Criterion> criteria() {
return new HashSet<>(); return new HashSet<>();
} }
@Override
public Criterion getCriterion(Type type) {
return null;
}
} }
/** /**