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.mef.nrp.cisco.xr.l2vpn.activator;
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;
40 import java.util.List;
41 import java.util.concurrent.ExecutionException;
43 import static org.junit.Assert.*;
46 * Util class responsible for executing suitable assert operations on given objects.
48 * @author marek.ryznar@amartus.com
50 public class L2vpnActivatorTestUtils {
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);
58 public static void checkL2vpn(L2vpn l2vpn){
60 assertNotNull(l2vpn.getDatabase());
61 assertNotNull(l2vpn.getDatabase().getXconnectGroups());
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());
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());
80 public static void checkAttachmentCircuit(AttachmentCircuit attachmentCircuit, String port){
81 assertTrue(attachmentCircuit.isEnable());
82 assertEquals(port,attachmentCircuit.getName().getValue());
85 public static void checkPseudowire(Pseudowire pseudowire){
86 assertNotNull(pseudowire);
87 assertNotNull(pseudowire.getPseudowireId());
88 assertNotNull(pseudowire.getNeighbor());
89 assertNotNull(pseudowire.getNeighbor().get(0));
92 public static void checkNeighbor(Neighbor neighbor){
93 assertNotNull(neighbor);
94 assertNotNull(neighbor.getXmlClass());
95 assertNotNull(neighbor.getNeighbor());
96 assertNotNull(neighbor.getMplsStaticLabels());
99 public static void checkMplsStaticLabels(MplsStaticLabels mplsStaticLabels){
100 assertNotNull(mplsStaticLabels);
101 assertNotNull(mplsStaticLabels.getLocalStaticLabel());
102 assertNotNull(mplsStaticLabels.getRemoteStaticLabel());
105 public static void checkInterfaceConfigurations(InterfaceConfigurations interfaceConfigurations){
106 assertNotNull(interfaceConfigurations);
107 assertNotNull(interfaceConfigurations.getInterfaceConfiguration());
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());
117 assertNotNull(interfaceConfiguration.getMtus());
118 assertNotNull(interfaceConfiguration.getMtus().getMtu());
122 public static void checkMtu(Mtu mtu, Long mtuValue){
123 assertEquals(mtuValue,mtu.getMtu());
124 assertNotNull(mtu.getOwner());
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))
135 public static void checkDeactivated(Optional<DataBroker> optBroker, String deactivatedPort) {
136 ReadOnlyTransaction transaction = optBroker.get().newReadOnlyTransaction();
138 InstanceIdentifier<L2vpn> l2vpnIid = InstanceIdentifier.builder(L2vpn.class).build();
139 InstanceIdentifier<InterfaceConfigurations> interfaceConfigurationsIid = InstanceIdentifier.builder(InterfaceConfigurations.class).build();
141 CheckedFuture<Optional<L2vpn>, ReadFailedException> driverL2vpn = transaction.read(LogicalDatastoreType.CONFIGURATION, l2vpnIid);
142 CheckedFuture<Optional<InterfaceConfigurations>, ReadFailedException> driverInterfaceConfigurations = transaction.read(LogicalDatastoreType.CONFIGURATION, interfaceConfigurationsIid);
145 checkL2vpnDeactivation(driverL2vpn);
146 checkInterfaceConfigurationDeactivation(driverInterfaceConfigurations,deactivatedPort);
147 } catch (Exception e) {
148 fail(e.getMessage());
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);
158 XconnectGroup xconnectGroup = l2vpn.getDatabase().getXconnectGroups().getXconnectGroup().get(0);
159 assertTrue(xconnectGroup.getP2pXconnects().getP2pXconnect().isEmpty());
161 fail("L2vpn was not found.");
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);
170 List<InterfaceConfiguration> interfaceConfigurationList = interfaceConfigurations.getInterfaceConfiguration();
171 assertFalse(interfaceConfigurationList.stream().anyMatch(x -> x.getInterfaceName().getValue().equals(deactivatedPort)));
173 fail("InterfaceConfigurations was not found.");