blob: a9a3dbf8d012e47bb2f0d3d150e1b22b28db73be [file] [log] [blame]
package net.onrc.onos.core.newintent;
import net.onrc.onos.api.flowmanager.FlowId;
import net.onrc.onos.api.flowmanager.FlowLink;
import net.onrc.onos.api.flowmanager.SingleSrcTreeFlow;
import net.onrc.onos.api.flowmanager.Tree;
import net.onrc.onos.api.newintent.IntentId;
import net.onrc.onos.api.newintent.IntentTest;
import net.onrc.onos.core.matchaction.action.OutputAction;
import net.onrc.onos.core.matchaction.match.PacketMatch;
import net.onrc.onos.core.matchaction.match.PacketMatchBuilder;
import net.onrc.onos.core.util.Dpid;
import net.onrc.onos.core.util.PortNumber;
import net.onrc.onos.core.util.SwitchPort;
import org.apache.commons.lang3.tuple.Pair;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* Suites of test of {@link SingleSrcTreeFlowIntent}.
*/
public class SingleSrcTreeFlowIntentTest extends IntentTest {
private final IntentId intentId1 = new IntentId(1L);
private final IntentId intentId2 = new IntentId(2L);
private final FlowId flowId1 = new FlowId(1L);
private final FlowId flowId2 = new FlowId(2L);
private final Dpid dpid1 = new Dpid(1);
private final Dpid dpid2 = new Dpid(2);
private final Dpid dpid3 = new Dpid(3);
private final PortNumber port1 = PortNumber.uint32(1);
private final PortNumber port2 = PortNumber.uint32(2);
private final PortNumber port3 = PortNumber.uint32(3);
private final OutputAction action1 = new OutputAction(port1);
private final OutputAction action2 = new OutputAction(port2);
private final OutputAction action3 = new OutputAction(port3);
private final PacketMatch match = new PacketMatchBuilder().build();
@Override
protected SingleSrcTreeFlowIntent createOne() {
Set<Pair<Dpid, OutputAction>> actions = new HashSet<>(Arrays.asList(
Pair.of(dpid2, action2),
Pair.of(dpid3, action3)
));
SingleSrcTreeFlow tree = new SingleSrcTreeFlow(flowId1, match,
new SwitchPort(dpid1, port3), createTree(), actions
);
return new SingleSrcTreeFlowIntent(intentId1, tree);
}
@Override
protected SingleSrcTreeFlowIntent createAnother() {
Set<Pair<Dpid, OutputAction>> actions = new HashSet<>(Arrays.asList(
Pair.of(dpid1, action1),
Pair.of(dpid3, action3)
));
SingleSrcTreeFlow tree = new SingleSrcTreeFlow(flowId2, match,
new SwitchPort(dpid2, port3), createTree(), actions
);
return new SingleSrcTreeFlowIntent(intentId2, tree);
}
private Tree createTree() {
Tree tree = new Tree();
tree.add(new FlowLink(dpid1, port1, dpid2, port2));
tree.add(new FlowLink(dpid1, port2, dpid3, port3));
return tree;
}
}