Refactoring of cisco-xr-driver and impl modules.
[unimgr.git] / cisco-xr-driver / src / test / java / org / opendaylight / unimgr / mef / nrp / cisco / xr / l2vpn / activator / L2vpnActivatorTestUtils.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.mef.nrp.cisco.xr.l2vpn.activator;
9
10 import com.google.common.base.Optional;
11 import com.google.common.util.concurrent.CheckedFuture;
12 import org.junit.runner.RunWith;
13 import org.mockito.Mockito;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.controller.md.sal.binding.api.MountPointService;
16 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
17 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
18 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
19 import org.opendaylight.unimgr.mef.nrp.common.MountPointHelper;
20 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730.InterfaceConfigurations;
21 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730._interface.configurations.InterfaceConfiguration;
22 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730._interface.configurations._interface.configuration.mtus.Mtu;
23 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.L2vpn;
24 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.l2vpn.database.xconnect.groups.XconnectGroup;
25 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.l2vpn.database.xconnect.groups.xconnect.group.p2p.xconnects.P2pXconnect;
26 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.l2vpn.database.xconnect.groups.xconnect.group.p2p.xconnects.p2p.xconnect.attachment.circuits.AttachmentCircuit;
27 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.l2vpn.database.xconnect.groups.xconnect.group.p2p.xconnects.p2p.xconnect.pseudowires.Pseudowire;
28 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.l2vpn.database.xconnect.groups.xconnect.group.p2p.xconnects.p2p.xconnect.pseudowires.pseudowire.Neighbor;
29 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.l2vpn.database.xconnect.groups.xconnect.group.p2p.xconnects.p2p.xconnect.pseudowires.pseudowire.pseudowire.content.MplsStaticLabels;
30 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcPort;
31 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcPortBuilder;
32 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
33 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
34 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
35 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
36 import org.powermock.api.mockito.PowerMockito;
37 import org.powermock.core.classloader.annotations.PrepareForTest;
38 import org.powermock.modules.junit4.PowerMockRunner;
39
40 import java.util.List;
41 import java.util.concurrent.ExecutionException;
42
43 import static org.junit.Assert.*;
44
45 /**
46  * Util class responsible for executing suitable assert operations on given objects.
47  *
48  * @author marek.ryznar@amartus.com
49  */
50 public class L2vpnActivatorTestUtils {
51
52     public static MountPointService getMockedMountPointService(Optional<DataBroker> optBroker){
53         PowerMockito.mockStatic(MountPointHelper.class);
54         PowerMockito.when(MountPointHelper.getDataBroker(Mockito.anyObject(),Mockito.anyString())).thenReturn(optBroker);
55         return Mockito.mock(MountPointService.class);
56     }
57
58     public static void checkL2vpn(L2vpn l2vpn){
59         assertNotNull(l2vpn);
60         assertNotNull(l2vpn.getDatabase());
61         assertNotNull(l2vpn.getDatabase().getXconnectGroups());
62     }
63
64     public static void checkXConnectGroup(XconnectGroup xconnectGroup, String outerName){
65         assertNotNull(xconnectGroup);
66         assertEquals(outerName,xconnectGroup.getName().getValue());
67         assertNotNull(xconnectGroup.getP2pXconnects());
68         assertNotNull(xconnectGroup.getP2pXconnects().getP2pXconnect());
69     }
70
71     public static void checkP2pXconnect(P2pXconnect p2pXconnect, String innerName){
72         assertNotNull(p2pXconnect);
73         assertEquals(innerName,p2pXconnect.getName().getValue());
74         assertNotNull(p2pXconnect.getAttachmentCircuits());
75         assertNotNull(p2pXconnect.getAttachmentCircuits().getAttachmentCircuit());
76         assertNotNull(p2pXconnect.getPseudowires());
77         assertNotNull(p2pXconnect.getPseudowires().getPseudowire());
78     }
79
80     public static void checkAttachmentCircuit(AttachmentCircuit attachmentCircuit, String port){
81         assertTrue(attachmentCircuit.isEnable());
82         assertEquals(port,attachmentCircuit.getName().getValue());
83     }
84
85     public static void checkPseudowire(Pseudowire pseudowire){
86         assertNotNull(pseudowire);
87         assertNotNull(pseudowire.getPseudowireId());
88         assertNotNull(pseudowire.getNeighbor());
89         assertNotNull(pseudowire.getNeighbor().get(0));
90     }
91
92     public static void checkNeighbor(Neighbor neighbor){
93         assertNotNull(neighbor);
94         assertNotNull(neighbor.getXmlClass());
95         assertNotNull(neighbor.getNeighbor());
96         assertNotNull(neighbor.getMplsStaticLabels());
97     }
98
99     public static void checkMplsStaticLabels(MplsStaticLabels mplsStaticLabels){
100         assertNotNull(mplsStaticLabels);
101         assertNotNull(mplsStaticLabels.getLocalStaticLabel());
102         assertNotNull(mplsStaticLabels.getRemoteStaticLabel());
103     }
104
105     public static void checkInterfaceConfigurations(InterfaceConfigurations interfaceConfigurations){
106         assertNotNull(interfaceConfigurations);
107         assertNotNull(interfaceConfigurations.getInterfaceConfiguration());
108     }
109
110     public static void checkInterfaceConfiguration(InterfaceConfiguration interfaceConfiguration, String portNo, boolean mtu){
111         assertNotNull(interfaceConfiguration);
112         assertNotNull(interfaceConfiguration.getActive());
113         assertNotNull(interfaceConfiguration.getInterfaceModeNonPhysical());
114         assertEquals(portNo,interfaceConfiguration.getInterfaceName().getValue());
115         assertTrue(interfaceConfiguration.isShutdown());
116         if(mtu){
117             assertNotNull(interfaceConfiguration.getMtus());
118             assertNotNull(interfaceConfiguration.getMtus().getMtu());
119         }
120     }
121
122     public static void checkMtu(Mtu mtu, Long mtuValue){
123         assertEquals(mtuValue,mtu.getMtu());
124         assertNotNull(mtu.getOwner());
125     }
126
127     public static FcPort port(String topo, String host, String port) {
128         return new FcPortBuilder()
129                 .setTopology(new TopologyId(topo))
130                 .setNode(new NodeId(host))
131                 .setTp(new TpId(port))
132                 .build();
133     }
134
135     public static void checkDeactivated(Optional<DataBroker> optBroker, String deactivatedPort)  {
136         ReadOnlyTransaction transaction = optBroker.get().newReadOnlyTransaction();
137
138         InstanceIdentifier<L2vpn> l2vpnIid = InstanceIdentifier.builder(L2vpn.class).build();
139         InstanceIdentifier<InterfaceConfigurations> interfaceConfigurationsIid = InstanceIdentifier.builder(InterfaceConfigurations.class).build();
140
141         CheckedFuture<Optional<L2vpn>, ReadFailedException> driverL2vpn = transaction.read(LogicalDatastoreType.CONFIGURATION, l2vpnIid);
142         CheckedFuture<Optional<InterfaceConfigurations>, ReadFailedException> driverInterfaceConfigurations = transaction.read(LogicalDatastoreType.CONFIGURATION, interfaceConfigurationsIid);
143
144         try {
145             checkL2vpnDeactivation(driverL2vpn);
146             checkInterfaceConfigurationDeactivation(driverInterfaceConfigurations,deactivatedPort);
147         } catch (Exception e) {
148             fail(e.getMessage());
149         }
150
151     }
152
153     private static void checkL2vpnDeactivation(CheckedFuture<Optional<L2vpn>, ReadFailedException>driverL2vpn) throws ExecutionException, InterruptedException {
154         if (driverL2vpn.get().isPresent()){
155             L2vpn l2vpn = driverL2vpn.get().get();
156             L2vpnActivatorTestUtils.checkL2vpn(l2vpn);
157
158             XconnectGroup xconnectGroup = l2vpn.getDatabase().getXconnectGroups().getXconnectGroup().get(0);
159             assertTrue(xconnectGroup.getP2pXconnects().getP2pXconnect().isEmpty());
160         } else {
161             fail("L2vpn was not found.");
162         }
163     }
164
165     private static void checkInterfaceConfigurationDeactivation(CheckedFuture<Optional<InterfaceConfigurations>, ReadFailedException> driverInterfaceConfigurations, String deactivatedPort) throws InterruptedException, ExecutionException{
166         if (driverInterfaceConfigurations.get().isPresent()){
167             InterfaceConfigurations interfaceConfigurations = driverInterfaceConfigurations.get().get();
168             L2vpnActivatorTestUtils.checkInterfaceConfigurations(interfaceConfigurations);
169
170             List<InterfaceConfiguration> interfaceConfigurationList = interfaceConfigurations.getInterfaceConfiguration();
171             assertFalse(interfaceConfigurationList.stream().anyMatch(x -> x.getInterfaceName().getValue().equals(deactivatedPort)));
172         } else {
173             fail("InterfaceConfigurations was not found.");
174         }
175     }
176 }