Remove unused references to DataChangeListener
[genius.git] / itm / itm-impl / src / test / java / org / opendaylight / genius / itm / impl / ItmExternalTunnelDeleteTest.java
1 /*
2  * Copyright (c) 2016, 2017 Ericsson India Global Services Pvt Ltd. 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
9 package org.opendaylight.genius.itm.impl;
10
11 import static org.mockito.Matchers.any;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.times;
14 import static org.mockito.Mockito.verify;
15 import static org.mockito.Mockito.when;
16
17 import com.google.common.base.Optional;
18 import com.google.common.util.concurrent.Futures;
19 import java.math.BigInteger;
20 import java.util.ArrayList;
21 import java.util.List;
22 import java.util.concurrent.Future;
23 import org.junit.After;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 import org.mockito.Mock;
28 import org.mockito.runners.MockitoJUnitRunner;
29 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
30 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
31 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
32 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
33 import org.opendaylight.genius.itm.confighelpers.HwVtep;
34 import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelDeleteWorker;
35 import org.opendaylight.genius.itm.globals.ITMConstants;
36 import org.opendaylight.genius.utils.cache.DataStoreCache;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInput;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInputBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutput;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutputBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInput;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.ExternalTunnelList;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfoBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfoKey;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.dpn.teps.info.TunnelEndPoints;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.dpn.teps.info.TunnelEndPointsBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.external.tunnel.list.ExternalTunnel;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.external.tunnel.list.ExternalTunnelBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.external.tunnel.list.ExternalTunnelKey;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZones;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZone;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneKey;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.Subnets;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.SubnetsBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.SubnetsKey;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.DeviceVteps;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.DeviceVtepsBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.DeviceVtepsKey;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.Vteps;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.VtepsBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.VtepsKey;
72 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
73 import org.opendaylight.yangtools.yang.common.RpcResult;
74 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
75
76 @RunWith(MockitoJUnitRunner.class)
77 public class ItmExternalTunnelDeleteTest {
78
79     int vlanId = 100 ;
80     String portName1 = "phy0";
81     String parentInterfaceName = "1:phy0:100" ;
82     String transportZone1 = "TZA" ;
83     String subnetIp = "10.1.1.24";
84     String tepIp1 = "192.168.56.30";
85     String tepIp2 = "192.168.56.40";
86     String tepIp3 = "192.168.56.101";
87     String gwyIp1 = "0.0.0.0";
88     String gwyIp2 = "0.0.0.1";
89     String trunkInterfaceName = null;
90     IpAddress ipAddress1 = null;
91     IpAddress ipAddress2 = null;
92     IpAddress ipAddress3 = null;
93     IpAddress gtwyIp1 = null;
94     IpAddress gtwyIp2 = null;
95     IpPrefix ipPrefixTest = null;
96     BigInteger dpId2 = BigInteger.valueOf(1);
97     DPNTEPsInfo dpntePsInfoVxlan = null;
98     TunnelEndPoints tunnelEndPointsVxlan = null;
99     HwVtep hwVtep1  = null;
100     Subnets subnets = null;
101     DeviceVteps deviceVteps1 = null;
102     DeviceVteps deviceVteps2 = null;
103     Vteps vteps = null;
104     TransportZone transportZone = null;
105     AllocateIdInput getIdInput1 = null;
106     AllocateIdInput getIdInput2 = null;
107     AllocateIdInput getIdInput3 = null;
108     AllocateIdInput getIdInput4 = null;
109     AllocateIdInput getIdInput5 = null;
110     AllocateIdInput getIdInput6 = null;
111     AllocateIdInput getIdInput7 = null;
112     AllocateIdInput getIdInput8 = null;
113     ExternalTunnel externalTunnel = null;
114     List<TunnelEndPoints> tunnelEndPointsListVxlan = new ArrayList<>();
115     List<DPNTEPsInfo> dpnTepsList = new ArrayList<>() ;
116     List<HwVtep> cfgdHwVtepsList = new ArrayList<>();
117     List<Subnets> subnetsList = new ArrayList<>();
118     List<DeviceVteps> deviceVtepsList = new ArrayList<>();
119     List<Vteps> vtepsList = new ArrayList<>();
120     java.lang.Class<? extends TunnelTypeBase> tunnelType1 = TunnelTypeVxlan.class;
121
122     AllocateIdOutput expectedId1 = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("100")).build();
123     Future<RpcResult<AllocateIdOutput>> idOutputOptional1 ;
124     AllocateIdOutput expectedId2 = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("101")).build();
125     Future<RpcResult<AllocateIdOutput>> idOutputOptional2 ;
126     AllocateIdOutput expectedId3 = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("102")).build();
127     Future<RpcResult<AllocateIdOutput>> idOutputOptional3 ;
128     AllocateIdOutput expectedId4 = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("103")).build();
129     Future<RpcResult<AllocateIdOutput>> idOutputOptional4 ;
130     AllocateIdOutput expectedId5 = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("104")).build();
131     Future<RpcResult<AllocateIdOutput>> idOutputOptional5 ;
132     AllocateIdOutput expectedId6 = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("105")).build();
133     Future<RpcResult<AllocateIdOutput>> idOutputOptional6 ;
134     AllocateIdOutput expectedId7 = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("105")).build();
135     Future<RpcResult<AllocateIdOutput>> idOutputOptional7 ;
136     AllocateIdOutput expectedId8 = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("106")).build();
137     Future<RpcResult<AllocateIdOutput>> idOutputOptional8 ;
138     InstanceIdentifier<Interface> trunkIdentifier ;
139     InstanceIdentifier<ExternalTunnel> path ;
140
141     @Mock DataBroker dataBroker;
142     @Mock ReadOnlyTransaction mockReadTx;
143     @Mock WriteTransaction mockWriteTx;
144     @Mock IdManagerService idManagerService;
145
146     @Before
147     public void setUp() {
148         setupMocks();
149         DataStoreCache.create(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME);
150
151         when(idManagerService.releaseId(any(ReleaseIdInput.class))).thenReturn(Futures.immediateFuture(RpcResultBuilder
152                 .<Void>success().build()));
153     }
154
155     @After
156     public void cleanUp() {
157     }
158
159     private void setupMocks() {
160
161         ipAddress1 = IpAddressBuilder.getDefaultInstance(tepIp1);
162         ipAddress2 = IpAddressBuilder.getDefaultInstance(tepIp2);
163         ipAddress3 = IpAddressBuilder.getDefaultInstance(tepIp3);
164         ipPrefixTest = IpPrefixBuilder.getDefaultInstance(subnetIp + "/24");
165         gtwyIp1 = IpAddressBuilder.getDefaultInstance(gwyIp1);
166         gtwyIp2 = IpAddressBuilder.getDefaultInstance(gwyIp2);
167         deviceVteps1 = new DeviceVtepsBuilder().setIpAddress(ipAddress1)
168                 .setKey(new DeviceVtepsKey(ipAddress1, "hwvtep:1"))
169                 .setNodeId("hwvtep://192.168.101.30:6640/physicalswitch/s3")
170                 .setTopologyId("hwvtep:1").build();
171         deviceVteps2 = new DeviceVtepsBuilder().setIpAddress(ipAddress2)
172                 .setKey(new DeviceVtepsKey(ipAddress2, "hwvtep:1"))
173                 .setNodeId("hwvtep://192.168.101.30:6640/physicalswitch/s3")
174                 .setTopologyId("hwvtep:1").build();
175         deviceVtepsList.add(deviceVteps1);
176         deviceVtepsList.add(deviceVteps2);
177         hwVtep1 = new HwVtep();
178         hwVtep1.setTransportZone(transportZone1);
179         hwVtep1.setGatewayIP(gtwyIp1);
180         hwVtep1.setHwIp(ipAddress2);
181         hwVtep1.setTunnelType(tunnelType1);
182         hwVtep1.setVlanID(vlanId);
183         hwVtep1.setTopoId("hwvtep:1");
184         hwVtep1.setNodeId("hwvtep://192.168.101.30:6640/physicalswitch/s3");
185         hwVtep1.setIpPrefix(ipPrefixTest);
186         vteps = new VtepsBuilder().setDpnId(dpId2).setIpAddress(ipAddress1).setPortname(portName1).setKey(new
187                 VtepsKey(dpId2,portName1)).build();
188         vtepsList.add(vteps);
189         idOutputOptional1 = RpcResultBuilder.success(expectedId1).buildFuture();
190         getIdInput1 = new AllocateIdInputBuilder()
191                 .setPoolName(ITMConstants.ITM_IDPOOL_NAME)
192                 .setIdKey("1:phy0:100:192.168.56.101:192.168.56.30:VXLAN").build();
193         doReturn(idOutputOptional1).when(idManagerService).allocateId(getIdInput1);
194         idOutputOptional2 = RpcResultBuilder.success(expectedId2).buildFuture();
195         getIdInput2 = new AllocateIdInputBuilder()
196                 .setPoolName(ITMConstants.ITM_IDPOOL_NAME)
197                 .setIdKey("hwvtep:1:hwvtep:1:192.168.56.30:192.168.56.101:VXLAN").build();
198         doReturn(idOutputOptional2).when(idManagerService).allocateId(getIdInput2);
199         idOutputOptional3 = RpcResultBuilder.success(expectedId3).buildFuture();
200         getIdInput3 = new AllocateIdInputBuilder()
201                 .setPoolName(ITMConstants.ITM_IDPOOL_NAME)
202                 .setIdKey("1:phy0:100:192.168.56.101:192.168.56.40:VXLAN").build();
203         doReturn(idOutputOptional3).when(idManagerService).allocateId(getIdInput3);
204         idOutputOptional4 = RpcResultBuilder.success(expectedId4).buildFuture();
205         getIdInput4 = new AllocateIdInputBuilder()
206                 .setPoolName(ITMConstants.ITM_IDPOOL_NAME)
207                 .setIdKey("hwvtep:1:hwvtep:1:192.168.56.40:192.168.56.101:VXLAN").build();
208         doReturn(idOutputOptional4).when(idManagerService).allocateId(getIdInput4);
209         idOutputOptional5 = RpcResultBuilder.success(expectedId5).buildFuture();
210         getIdInput5 = new AllocateIdInputBuilder()
211                 .setPoolName(ITMConstants.ITM_IDPOOL_NAME)
212                 .setIdKey("hwvtep:1:hwvtep://192.168.101.30:6640/physicalswitch/"
213                         + "s3:192.168.56.40:192.168.56.101:VXLAN").build();
214         doReturn(idOutputOptional5).when(idManagerService).allocateId(getIdInput5);
215         idOutputOptional6 = RpcResultBuilder.success(expectedId6).buildFuture();
216         getIdInput6 = new AllocateIdInputBuilder()
217                 .setPoolName(ITMConstants.ITM_IDPOOL_NAME)
218                 .setIdKey("hwvtep:1:hwvtep://192.168.101.30:6640/physicalswitch/"
219                         + "s3:192.168.56.40:192.168.56.30:VXLAN")
220                 .build();
221         doReturn(idOutputOptional6).when(idManagerService).allocateId(getIdInput6);
222         idOutputOptional7 = RpcResultBuilder.success(expectedId7).buildFuture();
223         getIdInput7 = new AllocateIdInputBuilder()
224                 .setPoolName(ITMConstants.ITM_IDPOOL_NAME)
225                 .setIdKey("hwvtep:1:hwvtep:1:192.168.56.30:192.168.56.40:VXLAN").build();
226         doReturn(idOutputOptional7).when(idManagerService).allocateId(getIdInput7);
227         idOutputOptional8 = RpcResultBuilder.success(expectedId8).buildFuture();
228         getIdInput8 = new AllocateIdInputBuilder()
229                 .setPoolName(ITMConstants.ITM_IDPOOL_NAME)
230                 .setIdKey("1:phy0:100:192.168.56.30:192.168.56.40:VXLAN").build();
231         doReturn(idOutputOptional8).when(idManagerService).allocateId(getIdInput8);
232         tunnelEndPointsVxlan = new TunnelEndPointsBuilder().setVLANID(vlanId).setPortname(portName1)
233                 .setIpAddress(ipAddress3).setGwIpAddress(gtwyIp1).setInterfaceName(parentInterfaceName)
234                 .setTzMembership(ItmUtils.createTransportZoneMembership(transportZone1)).setTunnelType(tunnelType1)
235                 .setSubnetMask(ipPrefixTest).build();
236         tunnelEndPointsListVxlan.add(tunnelEndPointsVxlan);
237         dpntePsInfoVxlan = new DPNTEPsInfoBuilder().setDPNID(dpId2).setUp(true).setKey(new DPNTEPsInfoKey(dpId2))
238                 .setTunnelEndPoints(tunnelEndPointsListVxlan).build();
239         dpnTepsList.add(dpntePsInfoVxlan);
240         cfgdHwVtepsList.add(hwVtep1);
241         subnets = new SubnetsBuilder().setGatewayIp(gtwyIp1).setVlanId(vlanId).setKey(new SubnetsKey(ipPrefixTest))
242                 .setDeviceVteps(deviceVtepsList).setVteps(vtepsList).build();
243         subnetsList.add(subnets);
244         transportZone = new TransportZoneBuilder().setTunnelType(tunnelType1).setZoneName(transportZone1).setKey(new
245                 TransportZoneKey(transportZone1)).setSubnets(subnetsList).build();
246         externalTunnel = new ExternalTunnelBuilder().setTunnelInterfaceName(parentInterfaceName)
247                 .setTransportType(tunnelType1).setDestinationDevice("hwvtep:1").setSourceDevice(dpId2.toString())
248                 .setKey(new ExternalTunnelKey(dpId2.toString() , hwVtep1.getNodeId() , tunnelType1)).build();
249         trunkInterfaceName = ItmUtils.getTrunkInterfaceName(idManagerService, parentInterfaceName,
250                 tunnelEndPointsVxlan.getIpAddress().getIpv4Address().getValue(), ipAddress1.getIpv4Address().getValue(),
251                 tunnelType1.getName());
252         trunkIdentifier = ItmUtils.buildId(trunkInterfaceName);
253         path = InstanceIdentifier.create(ExternalTunnelList.class)
254                 .child(ExternalTunnel.class, ItmUtils.getExternalTunnelKey(ipAddress1.toString(), dpId2.toString(),
255                         tunnelType1));
256
257         doReturn(mockReadTx).when(dataBroker).newReadOnlyTransaction();
258         doReturn(mockWriteTx).when(dataBroker).newWriteOnlyTransaction();
259         doReturn(Futures.immediateCheckedFuture(null)).when(mockWriteTx).submit();
260     }
261
262     @Test
263     public void testDeleteTunnels() {
264         ItmExternalTunnelDeleteWorker.deleteTunnels(dataBroker,idManagerService,dpnTepsList,ipAddress1,tunnelType1);
265
266         verify(mockWriteTx).delete(LogicalDatastoreType.CONFIGURATION,trunkIdentifier);
267         verify(mockWriteTx).delete(LogicalDatastoreType.CONFIGURATION,path);
268     }
269
270     @Test
271     public void testDeleteHwVtepsTunnels() {
272
273         InstanceIdentifier<TransportZone> transportZoneIdentifier = InstanceIdentifier.builder(TransportZones.class)
274                 .child(TransportZone.class, new TransportZoneKey(transportZone1)).build();
275         InstanceIdentifier<ExternalTunnel> externalTunnelIdentifier1 = InstanceIdentifier.create(ExternalTunnelList
276                 .class).child(ExternalTunnel.class, ItmUtils.getExternalTunnelKey(hwVtep1.getTopoId(),
277                 dpId2.toString(), tunnelType1));
278         InstanceIdentifier<ExternalTunnel> externalTunnelIdentifier2 = InstanceIdentifier.create(ExternalTunnelList
279                 .class).child(ExternalTunnel.class, ItmUtils.getExternalTunnelKey(dpId2.toString(),
280                 hwVtep1.getTopoId(), tunnelType1));
281         InstanceIdentifier<ExternalTunnel> externalTunnelIdentifier3 = InstanceIdentifier.create(ExternalTunnelList
282                 .class).child(ExternalTunnel.class, ItmUtils.getExternalTunnelKey(hwVtep1.getNodeId(),
283                 dpId2.toString(), tunnelType1));
284         InstanceIdentifier<ExternalTunnel> externalTunnelIdentifier4 = InstanceIdentifier.create(ExternalTunnelList
285                 .class).child(ExternalTunnel.class, ItmUtils.getExternalTunnelKey(dpId2.toString(),
286                 hwVtep1.getNodeId(), tunnelType1));
287         InstanceIdentifier<ExternalTunnel> externalTunnelIdentifier5 = InstanceIdentifier.create(ExternalTunnelList
288                 .class).child(ExternalTunnel.class, ItmUtils.getExternalTunnelKey(hwVtep1.getTopoId(),
289                 hwVtep1.getNodeId(), tunnelType1));
290         InstanceIdentifier<ExternalTunnel> externalTunnelIdentifier6 = InstanceIdentifier.create(ExternalTunnelList
291                 .class).child(ExternalTunnel.class, ItmUtils.getExternalTunnelKey(hwVtep1.getNodeId(),
292                 hwVtep1.getTopoId(), tunnelType1));
293
294         Optional<TransportZone> optionalTransportZone = Optional.of(transportZone);
295         Optional<ExternalTunnel> exTunnels = Optional.of(externalTunnel);
296
297         doReturn(Futures.immediateCheckedFuture(optionalTransportZone)).when(mockReadTx).read(LogicalDatastoreType
298                 .CONFIGURATION,transportZoneIdentifier);
299         doReturn(Futures.immediateCheckedFuture(exTunnels)).when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,
300                 externalTunnelIdentifier1);
301         doReturn(Futures.immediateCheckedFuture(exTunnels)).when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,
302                 externalTunnelIdentifier2);
303         doReturn(Futures.immediateCheckedFuture(exTunnels)).when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,
304                 externalTunnelIdentifier3);
305         doReturn(Futures.immediateCheckedFuture(exTunnels)).when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,
306                 externalTunnelIdentifier4);
307         doReturn(Futures.immediateCheckedFuture(exTunnels)).when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,
308                 externalTunnelIdentifier5);
309         doReturn(Futures.immediateCheckedFuture(exTunnels)).when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,
310                 externalTunnelIdentifier6);
311
312         ItmExternalTunnelDeleteWorker.deleteHwVtepsTunnels(dataBroker, idManagerService, dpnTepsList, cfgdHwVtepsList,
313                 transportZone);
314
315         verify(mockWriteTx).delete(LogicalDatastoreType.CONFIGURATION,trunkIdentifier);
316         verify(mockWriteTx, times(2)).delete(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier1);
317         verify(mockWriteTx, times(2)).delete(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier2);
318         verify(mockWriteTx, times(2)).delete(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier3);
319         verify(mockWriteTx, times(2)).delete(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier4);
320         verify(mockWriteTx).delete(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier5);
321         verify(mockWriteTx).delete(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier6);
322     }
323 }