2 * Copyright (c) 2016 Cisco Systems Inc and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.unimgr.utils;
11 import com.google.common.base.Optional;
12 import com.google.common.util.concurrent.CheckedFuture;
13 import org.mockito.Mockito;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
16 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
17 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcPort;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.AvailableCapabilities;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapabilityBuilder;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
24 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
25 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
27 import java.util.ArrayList;
28 import java.util.Arrays;
29 import java.util.List;
31 import static org.junit.Assert.fail;
32 import static org.mockito.Matchers.any;
33 import static org.mockito.Matchers.eq;
34 import static org.mockito.Mockito.mock;
35 import static org.mockito.Mockito.when;
37 public class NodeTestUtils {
38 public static final String DEVICE_ID = "device";
40 public static final String TOPOLOGY_ID = "topology";
42 public static DataBroker mockDataBroker(Optional<Node> nodeOptional) {
43 DataBroker dataBroker = mock(DataBroker.class);
44 final ReadOnlyTransaction transaction = mock(ReadOnlyTransaction.class);
45 final CheckedFuture transactionResult = mock(CheckedFuture.class);
48 when(transactionResult.checkedGet()).thenReturn(nodeOptional);
49 } catch (Exception e) {
50 fail("Cannot create mocks : " + e.getMessage());
52 when(transaction.read(eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class))).thenReturn(transactionResult);
53 when(dataBroker.newReadOnlyTransaction()).thenReturn(transaction);
58 public static FcPort mockFcPort(int nodeNo) {
59 FcPort mockedFcPort = mock(FcPort.class);
60 StringBuilder nodeIdBuilder = new StringBuilder(DEVICE_ID);
63 nodeIdBuilder.append("_").append(Integer.toString(nodeNo));
66 when(mockedFcPort.getNode()).thenReturn(new NodeId(nodeIdBuilder.toString()));
67 when(mockedFcPort.getTopology()).thenReturn(new TopologyId(TOPOLOGY_ID));
72 public static FcPort mockFcPort() {
76 public static Optional<Node> mockNode() {
77 final Node node = mock(Node.class);
78 when(node.getNodeId()).thenReturn(new NodeId(DEVICE_ID));
80 return Optional.of(node);
83 public static Optional<Node> mockNetconfNode(boolean withNetconfCapabilities) {
84 Optional<Node> mockedNodeOptional = mockNode();
86 List<AvailableCapability> netconfCapabilityList = new ArrayList<>();
87 if(withNetconfCapabilities) {
88 netconfCapabilityList = Arrays.asList(createAvailableCapability(NetconfConstants.CAPABILITY_IOX_L2VPN),
89 createAvailableCapability(NetconfConstants.CAPABILITY_IOX_IFMGR),
90 createAvailableCapability(NetconfConstants.CAPABILITY_IOX_ASR9K_POLICYMGR));
93 AvailableCapabilities availableCapabilities = Mockito.mock(AvailableCapabilities.class);
94 when(availableCapabilities.getAvailableCapability()).thenReturn(netconfCapabilityList);
96 NetconfNode netconfNode = mock(NetconfNode.class);
97 when(netconfNode.getAvailableCapabilities()).thenReturn(availableCapabilities);
99 Node mockedNode = mockedNodeOptional.get();
100 when(mockedNode.getAugmentation(NetconfNode.class)).thenReturn(netconfNode);
102 return mockedNodeOptional;
105 private static AvailableCapability createAvailableCapability(String name){
106 AvailableCapabilityBuilder availableCapabilityBuilder = new AvailableCapabilityBuilder();
107 availableCapabilityBuilder.setCapability(name);
108 return availableCapabilityBuilder.build();