Merge "BUG-4062: Flows,Groups,Meters not getting deleted during switch flap"
[openflowplugin.git] / applications / forwardingrules-manager / src / test / java / test / mock / util / FRMTest.java
1 package test.mock.util;
2
3 import org.opendaylight.openflowplugin.applications.frm.impl.ForwardingRulesManagerConfig;
4 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;
5 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
6 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableBuilder;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
8 import java.util.Collections;
9 import java.util.concurrent.ExecutionException;
10 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
11 import org.opendaylight.controller.md.sal.binding.test.AbstractDataBrokerTest;
12 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
20 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
21
22 public abstract class FRMTest extends AbstractDataBrokerTest {
23
24     public void addFlowCapableNode(NodeKey nodeKey) {
25         Nodes nodes = new NodesBuilder().setNode(Collections.<Node>emptyList()).build();
26         InstanceIdentifier<Node> flowNodeIdentifier = InstanceIdentifier.create(Nodes.class)
27                 .child(Node.class, nodeKey);
28
29         FlowCapableNodeBuilder fcnBuilder = new FlowCapableNodeBuilder();
30         NodeBuilder nodeBuilder = new NodeBuilder();
31         nodeBuilder.setKey(nodeKey);
32         nodeBuilder.addAugmentation(FlowCapableNode.class, fcnBuilder.build());
33
34         WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
35         writeTx.put(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(Nodes.class), nodes);
36         writeTx.put(LogicalDatastoreType.OPERATIONAL, flowNodeIdentifier, nodeBuilder.build());
37         writeTx.put(LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(Nodes.class), nodes);
38         writeTx.put(LogicalDatastoreType.CONFIGURATION, flowNodeIdentifier, nodeBuilder.build());
39         assertCommit(writeTx.submit());
40     }
41
42     public void removeNode(NodeKey nodeKey) throws ExecutionException, InterruptedException {
43         WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
44         writeTx.delete(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey));
45         writeTx.submit().get();
46     }
47
48     public void addTable(final TableKey tableKey, final NodeKey nodeKey) {
49         addFlowCapableNode(nodeKey);
50         final Table table = new TableBuilder().setKey(tableKey).setFlow(Collections.<Flow>emptyList()).build();
51         WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
52         InstanceIdentifier<Table> tableII = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey)
53                 .augmentation(FlowCapableNode.class).child(Table.class, tableKey);
54         writeTx.put(LogicalDatastoreType.CONFIGURATION, tableII, table);
55         assertCommit(writeTx.submit());
56     }
57
58     public ForwardingRulesManagerConfig getConfig(){
59         ForwardingRulesManagerConfig.ForwardingRulesManagerConfigBuilder cfgBuilder =
60                 new ForwardingRulesManagerConfig.ForwardingRulesManagerConfigBuilder();
61         cfgBuilder.setStaleMarkingEnabled(false);
62         return cfgBuilder.build();
63
64     }
65 }