X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-dom-it%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Ftest%2Fconnect%2Fdom%2FCrossBrokerRpcTest.java;h=ca38ed0797e1f1d0433a2281a2763672d1d19300;hp=92a0a3a98dab8e1075a893f0af0e6730992f56cc;hb=bcdc6138d215d097b13510e08735808ed931aeda;hpb=d1ab4c3ea79bcd74e02aa9334bc660cb7fc6d037 diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java index 92a0a3a98d..ca38ed0797 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java @@ -1,13 +1,25 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ package org.opendaylight.controller.sal.binding.test.connect.dom; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertNotSame; +import static junit.framework.Assert.assertTrue; + import java.math.BigInteger; import java.util.Collections; +import java.util.Set; import java.util.concurrent.Future; import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RoutedRpcRegistration; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.controller.sal.binding.test.util.BindingBrokerTestFactory; import org.opendaylight.controller.sal.binding.test.util.BindingTestContext; @@ -19,19 +31,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddF import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeFlowRemoved; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeContext; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; -import org.opendaylight.yangtools.yang.binding.BaseIdentity; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.QName; @@ -40,12 +47,10 @@ import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl; -import static junit.framework.Assert.*; - -import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Multimap; +import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; public class CrossBrokerRpcTest { @@ -61,6 +66,9 @@ public class CrossBrokerRpcTest { public static final NodeId NODE_C = new NodeId("c"); public static final NodeId NODE_D = new NodeId("d"); + private static final QName NODE_ID_QNAME = QName.create(Node.QNAME, "id"); + private static final QName ADD_FLOW_QNAME = QName.create(NodeFlowRemoved.QNAME, "add-flow"); + public static final InstanceIdentifier BA_NODE_A_ID = createBANodeIdentifier(NODE_A); public static final InstanceIdentifier BA_NODE_B_ID = createBANodeIdentifier(NODE_B); public static final InstanceIdentifier BA_NODE_C_ID = createBANodeIdentifier(NODE_C); @@ -71,10 +79,7 @@ public class CrossBrokerRpcTest { public static final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier BI_NODE_C_ID = createBINodeIdentifier(NODE_C); public static final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier BI_NODE_D_ID = createBINodeIdentifier(NODE_D); - private static final QName NODE_ID_QNAME = QName.create(Node.QNAME, "id"); - private static final QName ADD_FLOW_QNAME = QName.create(NodeFlowRemoved.QNAME, "add-flow"); - private static final QName REMOVE_FLOW_QNAME = QName.create(NodeFlowRemoved.QNAME, "remove-flow"); - private static final QName UPDATE_FLOW_QNAME = QName.create(NodeFlowRemoved.QNAME, "update-flow"); + @Before public void setup() { @@ -95,7 +100,7 @@ public class CrossBrokerRpcTest { } @Test - public void bindingRoutedRpcProvider_DomInvokerTest() { + public void bindingRoutedRpcProvider_DomInvokerTest() throws Exception { flowService// .registerPath(NodeContext.class, BA_NODE_A_ID) // @@ -110,15 +115,36 @@ public class CrossBrokerRpcTest { CompositeNode addFlowDom = toDomRpc(ADD_FLOW_QNAME, addFlowA); assertNotNull(addFlowDom); - RpcResult domResult = biRpcInvoker.invokeRpc(ADD_FLOW_QNAME, addFlowDom); + RpcResult domResult = biRpcInvoker.invokeRpc(ADD_FLOW_QNAME, addFlowDom).get(); assertNotNull(domResult); assertTrue("DOM result is successful.", domResult.isSuccessful()); assertTrue("Bidning Add Flow RPC was captured.", flowService.getReceivedAddFlows().containsKey(BA_NODE_A_ID)); assertEquals(addFlowA, flowService.getReceivedAddFlows().get(BA_NODE_A_ID).iterator().next()); } - public void bindingRpcInvoker_DomRoutedProviderTest() { + @Test + public void bindingRpcInvoker_DomRoutedProviderTest() throws Exception { + AddFlowOutputBuilder builder = new AddFlowOutputBuilder(); + builder.setTransactionId(new TransactionId(BigInteger.valueOf(10))); + final AddFlowOutput output = builder.build(); + org.opendaylight.controller.sal.core.api.Broker.RoutedRpcRegistration registration = biRpcRegistry.addRoutedRpcImplementation(ADD_FLOW_QNAME, new RpcImplementation() { + @Override + public Set getSupportedRpcs() { + return ImmutableSet.of(ADD_FLOW_QNAME); + } + + @Override + public ListenableFuture> invokeRpc(QName rpc, CompositeNode input) { + CompositeNode result = testContext.getBindingToDomMappingService().toDataDom(output); + return Futures.immediateFuture(Rpcs.getRpcResult(true, result, ImmutableList.of())); + } + }); + registration.registerPath(NodeContext.QNAME, BI_NODE_C_ID); + SalFlowService baFlowInvoker = baRpcRegistry.getRpcService(SalFlowService.class); + Future> baResult = baFlowInvoker.addFlow(addFlow(BA_NODE_C_ID).setPriority(500).build()); + assertNotNull(baResult); + assertEquals(output,baResult.get().getResult()); } private CompositeNode toDomRpcInput(DataObject addFlowA) {