Search in sources :

Example 56 with NodeBuilder

use of org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder in project openflowplugin by opendaylight.

the class OpenflowpluginTestCommandProvider method _addMDFlow.

/**
 * Adds a flow.
 *
 * @param ci arguments: switchId flowType tableNum, e.g.: addMDFlow openflow:1 f1 42
 */
public void _addMDFlow(final CommandInterpreter ci) {
    final NodeBuilder tn = createTestNode(ci.nextArgument());
    final String flowtype = ci.nextArgument();
    FlowBuilder tf;
    if (flowtype.equals("fTM")) {
        tf = createtablemiss();
    } else {
        tf = createTestFlow(tn, flowtype, ci.nextArgument());
    }
    writeFlow(ci, tf, tn);
}
Also used : FlowBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder) NodeBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder)

Example 57 with NodeBuilder

use of org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder in project openflowplugin by opendaylight.

the class OpenflowpluginTestCommandProvider method _removeMDFlow.

public void _removeMDFlow(final CommandInterpreter ci) {
    final ReadWriteTransaction modification = dataBroker.newReadWriteTransaction();
    final NodeBuilder tn = createTestNode(ci.nextArgument());
    final String flowtype = ci.nextArgument();
    FlowBuilder tf;
    if (flowtype.equals("fTM")) {
        tf = createtablemiss();
    } else {
        tf = createTestFlow(tn, flowtype, ci.nextArgument());
    }
    final InstanceIdentifier<Flow> path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, tn.getKey()).augmentation(FlowCapableNode.class).child(Table.class, new TableKey(tf.getTableId())).child(Flow.class, tf.getKey());
    modification.delete(LogicalDatastoreType.CONFIGURATION, path1);
    final CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {

        @Override
        public void onSuccess(final Void notUsed) {
            ci.println("Status of Group Data Loaded Transaction: success.");
        }

        @Override
        public void onFailure(final Throwable throwable) {
            LOG.error(throwable.getMessage(), throwable);
            ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable));
        }
    }, MoreExecutors.directExecutor());
}
Also used : Table(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table) FlowCapableNode(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode) Node(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node) TableKey(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey) NodeBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder) Flow(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow) TransactionCommitFailedException(org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException) FlowBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder) ReadWriteTransaction(org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction)

Example 58 with NodeBuilder

use of org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder in project openflowplugin by opendaylight.

the class OpenflowpluginTestCommandProvider method createTestNode.

private NodeBuilder createTestNode(final String nodeId) {
    String localNodeId;
    if (nodeId == null) {
        localNodeId = OpenflowpluginTestActivator.NODE_ID;
    } else {
        localNodeId = nodeId;
    }
    final NodeBuilder builder = new NodeBuilder();
    builder.setId(new NodeId(localNodeId));
    builder.setKey(new NodeKey(builder.getId()));
    return builder;
}
Also used : NodeId(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId) NodeBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder) NodeKey(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey)

Example 59 with NodeBuilder

use of org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder in project openflowplugin by opendaylight.

the class OpenflowpluginTestCommandProvider method createTestFlow.

private FlowBuilder createTestFlow(final NodeBuilder nodeBuilder, final String flowTypeArg, final String tableId) {
    final long TEST_ID = 123;
    final FlowBuilder flow = new FlowBuilder();
    long id = TEST_ID;
    String flowType = flowTypeArg;
    if (flowType == null) {
        flowType = "f1";
    }
    flow.setPriority(2);
    switch(flowType) {
        case "f1":
            id += 1;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createDecNwTtlInstructions().build());
            break;
        case "f2":
            id += 2;
            flow.setMatch(createMatch2().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f3":
            id += 3;
            flow.setMatch(createMatch3().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f4":
            id += 4;
            flow.setMatch(createEthernetMatch().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f5":
            id += 5;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction().build());
            break;
        case "f6":
            id += 6;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createGotoTableInstructions().build());
            break;
        case "f7":
            id += 7;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createMeterInstructions().build());
            break;
        case "f8":
            id += 8;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction1().build());
            break;
        case "f9":
            id += 9;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction2().build());
            break;
        case "f10":
            id += 10;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction3().build());
            break;
        case "f11":
            id += 11;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction4().build());
            break;
        case "f12":
            id += 12;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction5().build());
            break;
        case "f13":
            id += 13;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction6().build());
            break;
        case "f14":
            id += 14;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction7().build());
            break;
        case "f15":
            id += 15;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction8().build());
            break;
        case "f16":
            id += 16;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction9().build());
            break;
        case "f17":
            id += 17;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction10().build());
            break;
        case "f18":
            id += 18;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction11().build());
            break;
        case "f19":
            id += 19;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction12().build());
            break;
        case "f20":
            id += 20;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction13().build());
            break;
        case "f21":
            id += 21;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction14().build());
            break;
        case "f22":
            id += 22;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction15().build());
            break;
        case "f23":
            id += 23;
            // f23 can be used as test-case for generating error notification
            // if the particular group is not configured - tested
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction16().build());
            break;
        case "f24":
            id += 24;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction17().build());
            break;
        case "f25":
            id += 25;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction18().build());
            break;
        case "f26":
            id += 26;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction19().build());
            break;
        case "f27":
            id += 27;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createMetadataInstructions().build());
            break;
        case "f28":
            id += 28;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction20().build());
            break;
        case "f29":
            id += 29;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction21().build());
            break;
        case "f30":
            id += 30;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction22().build());
            break;
        case "f31":
            id += 31;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction23(nodeBuilder.getId()).build());
            break;
        case "f32":
            id += 32;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction24().build());
            break;
        case "f33":
            id += 33;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction25().build());
            break;
        case "f34":
            id += 34;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction26().build());
            break;
        case "f35":
            id += 35;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction27().build());
            break;
        case "f36":
            id += 36;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction28().build());
            break;
        case "f37":
            id += 37;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction29().build());
            break;
        case "f38":
            id += 38;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction30().build());
            break;
        case "f39":
            id += 39;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction31().build());
            break;
        case "f40":
            id += 40;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction32().build());
            break;
        case "f41":
            id += 41;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction33().build());
            break;
        case "f42":
            id += 42;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction34().build());
            break;
        case "f43":
            id += 43;
            flow.setMatch(createICMPv6Match().build());
            flow.setInstructions(createDecNwTtlInstructions().build());
            break;
        case "f44":
            id += 44;
            flow.setMatch(createInphyportMatch(nodeBuilder.getId()).build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f45":
            id += 45;
            flow.setMatch(createMetadataMatch().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f46":
            id += 46;
            flow.setMatch(createL3IPv6Match().build());
            flow.setInstructions(createDecNwTtlInstructions().build());
            break;
        case "f47":
            id += 47;
            flow.setMatch(createL4SCTPMatch().build());
            flow.setInstructions(createAppyActionInstruction().build());
            break;
        case "f48":
            id += 48;
            flow.setMatch(createTunnelIDMatch().build());
            flow.setInstructions(createGotoTableInstructions().build());
            break;
        case "f49":
            id += 49;
            flow.setMatch(createVlanMatch().build());
            flow.setInstructions(createMeterInstructions().build());
            break;
        case "f50":
            id += 50;
            flow.setMatch(createPbbMatch().build());
            flow.setInstructions(createMeterInstructions().build());
            break;
        case "f51":
            id += 51;
            flow.setMatch(createVlanMatch().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f52":
            id += 52;
            flow.setMatch(createL4TCPMatch().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f53":
            id += 53;
            flow.setMatch(createL4UDPMatch().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f54":
            id += 54;
            flow.setMatch(new MatchBuilder().build());
            flow.setInstructions(createSentToControllerInstructions().build());
            flow.setPriority(0);
            break;
        case "f55":
            id += 55;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f56":
            id += 56;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createOutputInstructions("INPORT", 10).build());
            break;
        case "f57":
            id += 57;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createOutputInstructions("FLOOD", 20).build());
            break;
        case "f58":
            id += 58;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createOutputInstructions("ALL", 30).build());
            break;
        case "f59":
            id += 59;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createOutputInstructions("NORMAL", 40).build());
            break;
        case "f60":
            id += 60;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createOutputInstructions("LOCAL", 50).build());
            break;
        case "f61":
            id += 61;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createOutputInstructions("TABLE", 60).build());
            break;
        case "f62":
            id += 62;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createOutputInstructions("NONE", 70).build());
            break;
        case "f63":
            id += 63;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createStripVlanInstructions().build());
            flow.setBarrier(Boolean.TRUE);
            break;
        case "f64":
            id += 64;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction35().build());
            break;
        case "f65":
            id += 65;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction36().build());
            break;
        case "f66":
            id += 66;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction37().build());
            break;
        case "f67":
            id += 67;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createAppyActionInstruction38().build());
            break;
        case "f68":
            id += 68;
            flow.setMatch(createL4TCPMatch().build());
            flow.setInstructions(createAppyActionInstruction39().build());
            break;
        case "f69":
            id += 69;
            flow.setMatch(createL4UDPMatch().build());
            flow.setInstructions(createAppyActionInstruction40().build());
            break;
        case "f70":
            id += 70;
            flow.setMatch(createL4SCTPMatch().build());
            flow.setInstructions(createAppyActionInstruction41().build());
            break;
        case "f71":
            id += 71;
            flow.setMatch(createICMPv4Match().build());
            flow.setInstructions(createAppyActionInstruction42().build());
            break;
        case "f72":
            id += 72;
            flow.setMatch(createArpMatch().build());
            flow.setInstructions(createAppyActionInstruction43().build());
            break;
        case "f73":
            id += 73;
            flow.setMatch(createL3IPv6Match().build());
            flow.setInstructions(createAppyActionInstruction44().build());
            break;
        case "f74":
            id += 74;
            flow.setMatch(createICMPv6Match().build());
            flow.setInstructions(createAppyActionInstruction45().build());
            break;
        case "f75":
            id += 75;
            flow.setMatch(createMplsMatch().build());
            flow.setInstructions(createAppyActionInstruction46().build());
            break;
        case "f76":
            id += 76;
            flow.setMatch(createPbbMatch().build());
            flow.setInstructions(createAppyActionInstruction47().build());
            break;
        case "f77":
            id += 77;
            flow.setMatch(createTunnelIDMatch().build());
            flow.setInstructions(createAppyActionInstruction48().build());
            break;
        case "f78":
            id += 78;
            flow.setMatch(createMatch33().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f79":
            id += 79;
            flow.setMatch(createICMPv6Match1().build());
            flow.setInstructions(createDecNwTtlInstructions().build());
            break;
        case "f80":
            id += 80;
            flow.setMatch(createVlanMatch().build());
            flow.setInstructions(createAppyActionInstruction88().build());
            break;
        case "f81":
            id += 81;
            flow.setMatch(createLLDPMatch().build());
            flow.setInstructions(createSentToControllerInstructions().build());
            break;
        case "f82":
            id += 82;
            flow.setMatch(createToSMatch().build());
            flow.setInstructions(createOutputInstructions().build());
            break;
        case "f83":
            // Test TCP_Flag Match
            id += 83;
            flow.setMatch(createTcpFlagMatch().build());
            flow.setInstructions(createDropInstructions().build());
            break;
        case "f84":
            id += 84;
            // match vlan=10,dl_vlan_pcp=3
            flow.setMatch(createVlanMatch().build());
            // vlan_pcp=4
            flow.setInstructions(createAppyActionInstruction88().build());
            break;
        case "f85":
            // Test Tunnel IPv4 Src (e.g. set_field:172.16.100.200->tun_src)
            id += 85;
            flow.setMatch(createMatch3().build());
            flow.setInstructions(createTunnelIpv4SrcInstructions().build());
            break;
        case "f86":
            // Test Tunnel IPv4 Dst (e.g. set_field:172.16.100.100->tun_dst)
            id += 86;
            flow.setMatch(createMatch1().build());
            flow.setInstructions(createTunnelIpv4DstInstructions().build());
            break;
        default:
            LOG.warn("flow type not understood: {}", flowType);
    }
    final FlowKey key = new FlowKey(new FlowId(Long.toString(id)));
    if (null == flow.isBarrier()) {
        flow.setBarrier(Boolean.FALSE);
    }
    final BigInteger value = BigInteger.valueOf(10);
    flow.setCookie(new FlowCookie(value));
    flow.setCookieMask(new FlowCookie(value));
    flow.setHardTimeout(0);
    flow.setIdleTimeout(0);
    flow.setInstallHw(false);
    flow.setStrict(false);
    flow.setContainerName(null);
    flow.setFlags(new FlowModFlags(false, false, false, false, true));
    flow.setId(new FlowId("12"));
    flow.setTableId(getTableId(tableId));
    flow.setKey(key);
    flow.setFlowName(ORIGINAL_FLOW_NAME + "X" + flowType);
    return flow;
}
Also used : FlowId(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId) FlowKey(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey) FlowCookie(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie) FlowBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder) FlowModFlags(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags) BigInteger(java.math.BigInteger) ArpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder) Icmpv4MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder) TunnelIpv4MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.TunnelIpv4MatchBuilder) VlanMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder) EthernetMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder) TcpFlagsMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TcpFlagsMatchBuilder) Ipv4MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder) Ipv6MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder) IpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder) Icmpv6MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder) SctpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatchBuilder) UdpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder) TcpMatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder) MatchBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder)

Example 60 with NodeBuilder

use of org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder in project openflowplugin by opendaylight.

the class NodeChangeListenerImplTest method testOnNodeRemoved.

@SuppressWarnings({ "rawtypes" })
@Test
public void testOnNodeRemoved() {
    NodeKey topoNodeKey = new NodeKey(new NodeId("node1"));
    final InstanceIdentifier<Node> topoNodeII = topologyIID.child(Node.class, topoNodeKey);
    Node topoNode = new NodeBuilder().setKey(topoNodeKey).build();
    org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey nodeKey = newInvNodeKey(topoNodeKey.getNodeId().getValue());
    final InstanceIdentifier<?> invNodeID = InstanceIdentifier.create(Nodes.class).child(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node.class, nodeKey);
    List<Link> linkList = Arrays.asList(newLink("link1", newSourceNode("node1"), newDestNode("dest")), newLink("link2", newSourceNode("source"), newDestNode("node1")), newLink("link2", newSourceNode("source2"), newDestNode("dest2")));
    final Topology topology = new TopologyBuilder().setLink(linkList).build();
    final InstanceIdentifier[] expDeletedIIDs = { topologyIID.child(Link.class, linkList.get(0).getKey()), topologyIID.child(Link.class, linkList.get(1).getKey()), topologyIID.child(Node.class, new NodeKey(new NodeId("node1"))) };
    SettableFuture<Optional<Topology>> readFuture = SettableFuture.create();
    readFuture.set(Optional.of(topology));
    ReadWriteTransaction mockTx1 = mock(ReadWriteTransaction.class);
    doReturn(Futures.makeChecked(readFuture, ReadFailedException.MAPPER)).when(mockTx1).read(LogicalDatastoreType.OPERATIONAL, topologyIID);
    SettableFuture<Optional<Node>> readFutureNode = SettableFuture.create();
    readFutureNode.set(Optional.of(topoNode));
    doReturn(Futures.makeChecked(readFutureNode, ReadFailedException.MAPPER)).when(mockTx1).read(LogicalDatastoreType.OPERATIONAL, topoNodeII);
    final CountDownLatch submitLatch1 = setupStubbedSubmit(mockTx1);
    int expDeleteCalls = expDeletedIIDs.length;
    CountDownLatch deleteLatch = new CountDownLatch(expDeleteCalls);
    ArgumentCaptor<InstanceIdentifier> deletedLinkIDs = ArgumentCaptor.forClass(InstanceIdentifier.class);
    setupStubbedDeletes(mockTx1, deletedLinkIDs, deleteLatch);
    doReturn(mockTx1).when(mockTxChain).newReadWriteTransaction();
    DataTreeModification dataTreeModification = setupDataTreeChange(DELETE, invNodeID);
    nodeChangeListener.onDataTreeChanged(Collections.singleton(dataTreeModification));
    waitForSubmit(submitLatch1);
    setReadFutureAsync(topology, readFuture);
    waitForDeletes(expDeleteCalls, deleteLatch);
    assertDeletedIDs(expDeletedIIDs, deletedLinkIDs);
    verifyMockTx(mockTx1);
}
Also used : DataTreeModification(org.opendaylight.controller.md.sal.binding.api.DataTreeModification) TopologyBuilder(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyBuilder) InventoryNode(org.opendaylight.yang.gen.v1.urn.opendaylight.model.topology.inventory.rev131030.InventoryNode) TestUtils.newDestNode(org.opendaylight.openflowplugin.applications.topology.manager.TestUtils.newDestNode) Node(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node) TestUtils.newSourceNode(org.opendaylight.openflowplugin.applications.topology.manager.TestUtils.newSourceNode) NodeBuilder(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder) InstanceIdentifier(org.opendaylight.yangtools.yang.binding.InstanceIdentifier) TestUtils.newInvNodeKey(org.opendaylight.openflowplugin.applications.topology.manager.TestUtils.newInvNodeKey) NodeKey(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey) Optional(com.google.common.base.Optional) Topology(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology) CountDownLatch(java.util.concurrent.CountDownLatch) Nodes(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes) Mockito.doReturn(org.mockito.Mockito.doReturn) NodeId(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId) ReadWriteTransaction(org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction) TestUtils.newLink(org.opendaylight.openflowplugin.applications.topology.manager.TestUtils.newLink) Link(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link) Test(org.junit.Test)

Aggregations

NodeBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder)35 NodeBuilder (org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder)30 Node (org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node)21 Node (org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node)21 NodeId (org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId)18 NodeKey (org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey)17 Test (org.junit.Test)11 WriteTransaction (org.opendaylight.controller.md.sal.binding.api.WriteTransaction)11 FlowCapableNode (org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode)11 FlowBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder)11 NodeId (org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId)11 NodeKey (org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey)11 ReadWriteTransaction (org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction)10 Nodes (org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes)8 ArrayList (java.util.ArrayList)7 Optional (com.google.common.base.Optional)6 BigInteger (java.math.BigInteger)6 TableKey (org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey)6 Flow (org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow)6 TransactionCommitFailedException (org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException)5