+/*
+ * Copyright (c) 2014 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.test.sal.binding.it;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.verify;
import java.math.BigInteger;
-import java.util.concurrent.Future;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RoutedRpcRegistration;
-import org.opendaylight.controller.sal.binding.api.*;
+import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
+import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowInput;
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.types.rev131026.FlowCookie;
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.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcResult;
public class RoutedServiceTest extends AbstractTest {
/**
* Register provider 1 with first implementation of SalFlowService -
* service1
- *
+ *
*/
broker.registerProvider(provider1, getBundleContext());
assertNotNull("Registration should not be null", firstReg);
/**
* Register provider 2 with first implementation of SalFlowService -
* service2
- *
+ *
*/
broker.registerProvider(provider2, getBundleContext());
assertNotNull("Registration should not be null", firstReg);
/**
* Consumer creates addFlow message for node one and sends it to the
* MD-SAL
- *
+ *
*/
AddFlowInput addFlowFirstMessage = createSampleAddFlow(nodeOne, 1);
consumerService.addFlow(addFlowFirstMessage);
/**
* Verifies that implementation of the first provider received the same
* message from MD-SAL.
- *
+ *
*/
verify(salFlowService1).addFlow(addFlowFirstMessage);
/**
* Verifies that second instance was not invoked with first message
- *
+ *
*/
verify(salFlowService2, times(0)).addFlow(addFlowFirstMessage);
/**
* Provider 2 registers path of node 2
- *
+ *
*/
NodeRef nodeTwo = createNodeRef("foo:node:2");
secondReg.registerPath(NodeContext.class, nodeTwo.getValue());
/**
* Verifies that second instance was invoked 3 times with second message
* and first instance wasn't invoked.
- *
+ *
*/
verify(salFlowService2, times(3)).addFlow(AddFlowSecondMessage);
verify(salFlowService1, times(0)).addFlow(AddFlowSecondMessage);
/**
* Unregisteration of the path for the node one in the first provider
- *
+ *
*/
firstReg.unregisterPath(NodeContext.class, nodeOne.getValue());
/**
* Provider 2 registers path of node 1
- *
+ *
*/
secondReg.registerPath(NodeContext.class, nodeOne.getValue());
/**
* A consumer sends third message to node 1
- *
+ *
*/
AddFlowInput AddFlowThirdMessage = createSampleAddFlow(nodeOne, 3);
consumerService.addFlow(AddFlowThirdMessage);
/**
* Returns node reference from string which represents path
- *
+ *
* @param string
* string with key(path)
* @return instance of the type NodeRef
*/
private static NodeRef createNodeRef(String string) {
NodeKey key = new NodeKey(new NodeId(string));
- InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key)
- .toInstance();
+ InstanceIdentifier<Node> path = InstanceIdentifier.builder(Nodes.class).child(Node.class, key).build();
return new NodeRef(path);
}
/**
* Creates flow AddFlowInput for which only node and cookie are set
- *
+ *
* @param node
* NodeRef value
* @param cookie
static AddFlowInput createSampleAddFlow(NodeRef node, int cookie) {
AddFlowInputBuilder ret = new AddFlowInputBuilder();
ret.setNode(node);
- ret.setCookie(BigInteger.valueOf(cookie));
+ ret.setCookie(new FlowCookie(BigInteger.valueOf(cookie)));
return ret.build();
}
}