Refactoring of cisco-xr-driver and impl modules.
[unimgr.git] / impl / src / test / java / org / opendaylight / unimgr / utils / NodeTestUtils.java
1 /*
2  * Copyright (c) 2016 Cisco Systems Inc and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.unimgr.utils;
9
10
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;
26
27 import java.util.ArrayList;
28 import java.util.Arrays;
29 import java.util.List;
30
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;
36
37 public class NodeTestUtils {
38     public static final String DEVICE_ID = "device";
39
40     public static final String TOPOLOGY_ID = "topology";
41
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);
46
47         try {
48             when(transactionResult.checkedGet()).thenReturn(nodeOptional);
49         } catch (Exception e) {
50             fail("Cannot create mocks : " + e.getMessage());
51         }
52         when(transaction.read(eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class))).thenReturn(transactionResult);
53         when(dataBroker.newReadOnlyTransaction()).thenReturn(transaction);
54
55         return dataBroker;
56     }
57
58     public static FcPort mockFcPort(int nodeNo) {
59         FcPort mockedFcPort = mock(FcPort.class);
60         StringBuilder nodeIdBuilder = new StringBuilder(DEVICE_ID);
61
62         if(nodeNo > 0) {
63             nodeIdBuilder.append("_").append(Integer.toString(nodeNo));
64         }
65
66         when(mockedFcPort.getNode()).thenReturn(new NodeId(nodeIdBuilder.toString()));
67         when(mockedFcPort.getTopology()).thenReturn(new TopologyId(TOPOLOGY_ID));
68
69         return mockedFcPort;
70     }
71
72     public static FcPort mockFcPort() {
73         return mockFcPort(0);
74     }
75
76     public static Optional<Node> mockNode() {
77         final Node node = mock(Node.class);
78         when(node.getNodeId()).thenReturn(new NodeId(DEVICE_ID));
79
80         return Optional.of(node);
81     }
82
83     public static Optional<Node> mockNetconfNode(boolean withNetconfCapabilities) {
84         Optional<Node> mockedNodeOptional = mockNode();
85
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));
91         }
92
93         AvailableCapabilities availableCapabilities = Mockito.mock(AvailableCapabilities.class);
94         when(availableCapabilities.getAvailableCapability()).thenReturn(netconfCapabilityList);
95
96         NetconfNode netconfNode = mock(NetconfNode.class);
97         when(netconfNode.getAvailableCapabilities()).thenReturn(availableCapabilities);
98
99         Node mockedNode = mockedNodeOptional.get();
100         when(mockedNode.getAugmentation(NetconfNode.class)).thenReturn(netconfNode);
101
102         return mockedNodeOptional;
103     }
104
105     private static AvailableCapability createAvailableCapability(String name){
106         AvailableCapabilityBuilder availableCapabilityBuilder = new AvailableCapabilityBuilder();
107         availableCapabilityBuilder.setCapability(name);
108         return availableCapabilityBuilder.build();
109     }
110 }