2 * Copyright (c) 2013 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.protocol.integration.pcep;
10 import static org.junit.Assert.assertNotNull;
11 import static org.junit.Assert.assertNotSame;
12 import static org.junit.Assert.assertSame;
13 import static org.mockito.Mockito.mock;
14 import static org.mockito.Mockito.verify;
15 import static org.mockito.Mockito.verifyZeroInteractions;
16 import static org.mockito.Mockito.when;
17 import static org.ops4j.pax.exam.CoreOptions.frameworkProperty;
18 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
19 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
20 import static org.ops4j.pax.exam.CoreOptions.options;
21 import com.google.common.util.concurrent.Futures;
22 import com.google.common.util.concurrent.ListenableFuture;
23 import java.lang.reflect.Method;
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
26 import org.mockito.Mockito;
27 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
28 import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
29 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.topology.rev140113.NetworkTopologyContext;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.topology.rev140113.NetworkTopologyRef;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.NetworkTopologyPcepProgrammingService;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.SubmitAddLspInput;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.SubmitAddLspInputBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.SubmitEnsureLspOperationalInput;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.SubmitRemoveLspInput;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.SubmitTriggerSyncInput;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.SubmitTriggerSyncInputBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.SubmitUpdateLspInput;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.programming.rev131106.SubmitUpdateLspInputBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspInput;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspInputBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspOutput;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.EnsureLspOperationalInput;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.EnsureLspOperationalInputBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.NetworkTopologyPcepService;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.RemoveLspInput;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.TriggerSyncInput;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.TriggerSyncInputBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.TriggerSyncOutput;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.UpdateLspInput;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.PcepCreateP2pTunnelInput;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.PcepCreateP2pTunnelInputBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.PcepDestroyTunnelInput;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.PcepDestroyTunnelInputBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.PcepUpdateTunnelInput;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.TopologyTunnelPcepProgrammingService;
58 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
59 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
60 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
61 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
62 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
63 import org.ops4j.pax.exam.Option;
64 import org.ops4j.pax.exam.junit.PaxExam;
65 import org.ops4j.pax.exam.options.DefaultCompositeOption;
66 import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
67 import org.ops4j.pax.exam.spi.reactors.PerClass;
69 @RunWith(PaxExam.class)
70 @ExamReactorStrategy(PerClass.class)
71 public class PcepRpcServicesRoutingTest extends AbstractPcepOsgiTest {
74 protected Option[] getAdditionalOptions() {
75 // register option to provide Mockito as a bundle dependency
77 new DefaultCompositeOption(
78 // Repository required to load harmcrest (OSGi-fied version).
80 mavenBundle("org.mockito", "mockito-core", "1.10.19"),
81 mavenBundle("org.objenesis", "objenesis", "2.2"),
85 * Felix has implicit boot delegation enabled by default. It
86 * conflicts with Mockito: java.lang.LinkageError: loader
87 * constraint violation in interface itable initialization: when
89 * "org.osgi.service.useradmin.User$$EnhancerByMockitoWithCGLIB$$dd2f81dc
91 * newInstance(Lorg/mockito/cglib/proxy/Callback;)Ljava/lang/Object
92 * ;" the class loader (instance of
93 * org/mockito/internal/creation/jmock/SearchingClassLoader) of
94 * the current class, org/osgi/service/useradmin/
95 * User$$EnhancerByMockitoWithCGLIB$$dd2f81dc, and the class
96 * loader (instance of org/apache/felix/framework/
97 * BundleWiringImpl$BundleClassLoaderJava5) for interface
98 * org/mockito/cglib/proxy/Factory have different Class objects
99 * for the type org/mockito/cglib/ proxy/Callback used in the
102 * So we disable the bootdelegation. this property has no effect
103 * on the other OSGi implementation.
105 frameworkProperty("felix.bootdelegation.implicit").value("false"))
109 private static <T> T getInputForRpc(final InstanceIdentifier<Topology> topology, final Class<?> builderClass, final Class<T> builtObjectClass) {
111 final Object builderInstance = builderClass.newInstance();
112 final Method method = builderClass.getMethod("setNetworkTopologyRef", NetworkTopologyRef.class);
113 method.invoke(builderInstance, new NetworkTopologyRef(topology));
114 return builtObjectClass.cast(builderClass.getMethod("build").invoke(builderInstance));
115 } catch (final Exception e) {
116 throw new RuntimeException("Unable to create instance from " + builderClass, e);
121 public void testRoutedRpcNetworkTopologyPcepService() throws Exception {
122 final NetworkTopologyPcepService pcepService1 = mock(NetworkTopologyPcepService.class, "First pcep Service");
123 final NetworkTopologyPcepService pcepService2 = mock(NetworkTopologyPcepService.class, "Second pcep Service");
124 initMock(pcepService1);
125 initMock(pcepService2);
126 assertNotNull(getBroker());
128 final InstanceIdentifier<Topology> topology = InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class,
129 new TopologyKey(getTopologyId("Topo1"))).build();
131 final BindingAwareProvider provider1 = new AbstractTestProvider() {
134 public void onSessionInitiated(final BindingAwareBroker.ProviderContext session) {
135 assertNotNull(session);
136 final BindingAwareBroker.RoutedRpcRegistration<NetworkTopologyPcepService> firstReg = session.addRoutedRpcImplementation(
137 NetworkTopologyPcepService.class, pcepService1);
138 assertNotNull("Registration should not be null", firstReg);
139 assertSame(pcepService1, firstReg.getInstance());
141 firstReg.registerPath(NetworkTopologyContext.class, topology);
145 broker.registerProvider(provider1);
147 final InstanceIdentifier<Topology> topology2 = InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class,
148 new TopologyKey(getTopologyId("Topo2"))).build();
150 final BindingAwareProvider provider2 = new AbstractTestProvider() {
153 public void onSessionInitiated(final BindingAwareBroker.ProviderContext session) {
154 assertNotNull(session);
155 final BindingAwareBroker.RoutedRpcRegistration<NetworkTopologyPcepService> secondReg = session.addRoutedRpcImplementation(
156 NetworkTopologyPcepService.class, pcepService2);
157 secondReg.registerPath(NetworkTopologyContext.class, topology2);
161 broker.registerProvider(provider2);
163 final BindingAwareConsumer consumer = new BindingAwareConsumer() {
165 public void onSessionInitialized(final BindingAwareBroker.ConsumerContext session) {
166 final NetworkTopologyPcepService consumerPcepService = session.getRpcService(NetworkTopologyPcepService.class);
168 assertNotNull(consumerPcepService);
169 assertNotSame(pcepService1, consumerPcepService);
170 assertNotSame(pcepService2, consumerPcepService);
172 testAddLspRpce(consumerPcepService);
173 testEnsureLspRpce(consumerPcepService);
174 testTriggerSyncRpce(consumerPcepService);
177 private void testAddLspRpce(final NetworkTopologyPcepService consumerPcepService) {
178 AddLspInput addLspInput = getInputForRpc(topology, AddLspInputBuilder.class, AddLspInput.class);
179 consumerPcepService.addLsp(addLspInput);
181 verify(pcepService1).addLsp(addLspInput);
182 verifyZeroInteractions(pcepService2);
184 addLspInput = getInputForRpc(topology2, AddLspInputBuilder.class, AddLspInput.class);
186 consumerPcepService.addLsp(addLspInput);
188 verifyZeroInteractions(pcepService1);
189 verify(pcepService2).addLsp(addLspInput);
192 private void testTriggerSyncRpce(final NetworkTopologyPcepService consumerPcepService) {
193 TriggerSyncInput triggerInput = getInputForRpc(topology, TriggerSyncInputBuilder.class,
194 TriggerSyncInput.class);
195 consumerPcepService.triggerSync(triggerInput);
197 verify(pcepService1).triggerSync(triggerInput);
198 verifyZeroInteractions(pcepService2);
200 triggerInput = getInputForRpc(topology2, TriggerSyncInputBuilder.class, TriggerSyncInput.class);
202 consumerPcepService.triggerSync(triggerInput);
204 verifyZeroInteractions(pcepService1);
205 verify(pcepService2).triggerSync(triggerInput);
208 private void testEnsureLspRpce(final NetworkTopologyPcepService consumerPcepService) {
209 EnsureLspOperationalInput ensureInput = getInputForRpc(topology, EnsureLspOperationalInputBuilder.class,
210 EnsureLspOperationalInput.class);
212 consumerPcepService.ensureLspOperational(ensureInput);
214 verify(pcepService1).ensureLspOperational(ensureInput);
215 verifyZeroInteractions(pcepService2);
217 ensureInput = getInputForRpc(topology2, EnsureLspOperationalInputBuilder.class, EnsureLspOperationalInput.class);
219 consumerPcepService.ensureLspOperational(ensureInput);
221 verifyZeroInteractions(pcepService1);
222 verify(pcepService2).ensureLspOperational(ensureInput);
225 broker.registerConsumer(consumer);
228 @SuppressWarnings("unchecked")
229 private void initMock(final NetworkTopologyPcepService pcepService) {
230 @SuppressWarnings("rawtypes")
231 final ListenableFuture future = Futures.immediateFuture(RpcResultBuilder.<AddLspOutput>success().build());
232 final ListenableFuture futureSyncTrigger = Futures.immediateFuture(RpcResultBuilder.<TriggerSyncOutput>success().build());
234 when(pcepService.addLsp(Mockito.<AddLspInput>any())).thenReturn(future);
235 when(pcepService.removeLsp(Mockito.<RemoveLspInput>any())).thenReturn(future);
236 when(pcepService.triggerSync(Mockito.<TriggerSyncInput>any())).thenReturn(futureSyncTrigger);
237 when(pcepService.ensureLspOperational(Mockito.<EnsureLspOperationalInput>any())).thenReturn(future);
238 when(pcepService.updateLsp(Mockito.<UpdateLspInput>any())).thenReturn(future);
243 public void testRoutedRpcNetworkTopologyPcepProgrammingService() throws Exception {
244 final NetworkTopologyPcepProgrammingService pcepService1 = mock(NetworkTopologyPcepProgrammingService.class,
245 "First pcep program Service");
246 final NetworkTopologyPcepProgrammingService pcepService2 = mock(NetworkTopologyPcepProgrammingService.class,
247 "Second pcep program Service");
248 initMock(pcepService1);
249 initMock(pcepService2);
250 assertNotNull(getBroker());
252 final InstanceIdentifier<Topology> topology = InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class,
253 new TopologyKey(getTopologyId("Topo1"))).build();
255 final BindingAwareProvider provider1 = new AbstractTestProvider() {
257 public void onSessionInitiated(final BindingAwareBroker.ProviderContext session) {
258 assertNotNull(session);
259 final BindingAwareBroker.RoutedRpcRegistration<NetworkTopologyPcepProgrammingService> firstReg = session.addRoutedRpcImplementation(
260 NetworkTopologyPcepProgrammingService.class, pcepService1);
261 assertNotNull("Registration should not be null", firstReg);
262 assertSame(pcepService1, firstReg.getInstance());
264 firstReg.registerPath(NetworkTopologyContext.class, topology);
268 broker.registerProvider(provider1);
270 final InstanceIdentifier<Topology> topology2 = InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class,
271 new TopologyKey(getTopologyId("Topo2"))).build();
273 final BindingAwareProvider provider2 = new AbstractTestProvider() {
275 public void onSessionInitiated(final BindingAwareBroker.ProviderContext session) {
276 assertNotNull(session);
277 final BindingAwareBroker.RoutedRpcRegistration<NetworkTopologyPcepProgrammingService> secondReg = session.addRoutedRpcImplementation(
278 NetworkTopologyPcepProgrammingService.class, pcepService2);
279 secondReg.registerPath(NetworkTopologyContext.class, topology2);
283 broker.registerProvider(provider2);
285 final BindingAwareConsumer consumer = new BindingAwareConsumer() {
287 public void onSessionInitialized(final BindingAwareBroker.ConsumerContext session) {
288 final NetworkTopologyPcepProgrammingService consumerPcepService = session.getRpcService(NetworkTopologyPcepProgrammingService.class);
290 assertNotNull(consumerPcepService);
291 assertNotSame(pcepService1, consumerPcepService);
292 assertNotSame(pcepService2, consumerPcepService);
294 testSubmitAddLspRpc(consumerPcepService);
295 testSubmitUpdateLspRpc(consumerPcepService);
296 testTriggerSyncRpc(consumerPcepService);
299 private void testSubmitAddLspRpc(final NetworkTopologyPcepProgrammingService consumerPcepService) {
300 SubmitAddLspInput addLspInput = getInputForRpc(topology, SubmitAddLspInputBuilder.class, SubmitAddLspInput.class);
301 consumerPcepService.submitAddLsp(addLspInput);
303 verify(pcepService1).submitAddLsp(addLspInput);
304 verifyZeroInteractions(pcepService2);
306 addLspInput = getInputForRpc(topology2, SubmitAddLspInputBuilder.class, SubmitAddLspInput.class);
308 consumerPcepService.submitAddLsp(addLspInput);
310 verifyZeroInteractions(pcepService1);
311 verify(pcepService2).submitAddLsp(addLspInput);
314 private void testSubmitUpdateLspRpc(final NetworkTopologyPcepProgrammingService consumerPcepService) {
315 SubmitUpdateLspInput submitLspInput = getInputForRpc(topology, SubmitUpdateLspInputBuilder.class,
316 SubmitUpdateLspInput.class);
317 consumerPcepService.submitUpdateLsp(submitLspInput);
319 verify(pcepService1).submitUpdateLsp(submitLspInput);
320 verifyZeroInteractions(pcepService2);
322 submitLspInput = getInputForRpc(topology2, SubmitUpdateLspInputBuilder.class, SubmitUpdateLspInput.class);
324 consumerPcepService.submitUpdateLsp(submitLspInput);
326 verifyZeroInteractions(pcepService1);
327 verify(pcepService2).submitUpdateLsp(submitLspInput);
330 private void testTriggerSyncRpc(final NetworkTopologyPcepProgrammingService consumerPcepService) {
331 SubmitTriggerSyncInput submitTriggerSyncInput = getInputForRpc(topology,
332 SubmitTriggerSyncInputBuilder.class,
333 SubmitTriggerSyncInput.class);
334 consumerPcepService.submitTriggerSync(submitTriggerSyncInput);
336 verify(pcepService1).submitTriggerSync(submitTriggerSyncInput);
337 verifyZeroInteractions(pcepService2);
339 submitTriggerSyncInput = getInputForRpc(topology2, SubmitTriggerSyncInputBuilder.class,
340 SubmitTriggerSyncInput.class);
342 consumerPcepService.submitTriggerSync(submitTriggerSyncInput);
344 verifyZeroInteractions(pcepService1);
345 verify(pcepService2).submitTriggerSync(submitTriggerSyncInput);
348 broker.registerConsumer(consumer);
351 @SuppressWarnings("unchecked")
352 private void initMock(final NetworkTopologyPcepProgrammingService pcepService) {
353 @SuppressWarnings("rawtypes")
354 final ListenableFuture future = Futures.immediateFuture(RpcResultBuilder.<AddLspOutput>success().build());
355 final ListenableFuture futureTriggerSync = Futures.immediateFuture(RpcResultBuilder.<TriggerSyncOutput>success().build());
356 when(pcepService.submitAddLsp(Mockito.<SubmitAddLspInput>any())).thenReturn(future);
357 when(pcepService.submitRemoveLsp(Mockito.<SubmitRemoveLspInput>any())).thenReturn(future);
358 when(pcepService.submitTriggerSync(Mockito.<SubmitTriggerSyncInput>any())).thenReturn(futureTriggerSync);
359 when(pcepService.submitEnsureLspOperational(Mockito.<SubmitEnsureLspOperationalInput>any())).thenReturn(future);
360 when(pcepService.submitUpdateLsp(Mockito.<SubmitUpdateLspInput>any())).thenReturn(future);
364 public void testRoutedRpcTopologyTunnelPcepProgrammingService() throws Exception {
365 final TopologyTunnelPcepProgrammingService pcepService1 = mock(TopologyTunnelPcepProgrammingService.class,
366 "First pcep program Service");
367 final TopologyTunnelPcepProgrammingService pcepService2 = mock(TopologyTunnelPcepProgrammingService.class,
368 "Second pcep program Service");
369 initMock(pcepService1);
370 initMock(pcepService2);
371 assertNotNull(getBroker());
373 final InstanceIdentifier<Topology> topology = InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class,
374 new TopologyKey(getTopologyId("Topo1"))).build();
376 final BindingAwareProvider provider1 = new AbstractTestProvider() {
378 public void onSessionInitiated(final BindingAwareBroker.ProviderContext session) {
379 assertNotNull(session);
380 final BindingAwareBroker.RoutedRpcRegistration<TopologyTunnelPcepProgrammingService> firstReg = session.addRoutedRpcImplementation(
381 TopologyTunnelPcepProgrammingService.class, pcepService1);
382 assertNotNull("Registration should not be null", firstReg);
383 assertSame(pcepService1, firstReg.getInstance());
385 firstReg.registerPath(NetworkTopologyContext.class, topology);
389 broker.registerProvider(provider1);
391 final InstanceIdentifier<Topology> topology2 = InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class,
392 new TopologyKey(getTopologyId("Topo2"))).build();
394 final BindingAwareProvider provider2 = new AbstractTestProvider() {
396 public void onSessionInitiated(final BindingAwareBroker.ProviderContext session) {
397 assertNotNull(session);
398 final BindingAwareBroker.RoutedRpcRegistration<TopologyTunnelPcepProgrammingService> secondReg = session.addRoutedRpcImplementation(
399 TopologyTunnelPcepProgrammingService.class, pcepService2);
400 secondReg.registerPath(NetworkTopologyContext.class, topology2);
404 broker.registerProvider(provider2);
406 final BindingAwareConsumer consumer = new BindingAwareConsumer() {
408 public void onSessionInitialized(final BindingAwareBroker.ConsumerContext session) {
409 final TopologyTunnelPcepProgrammingService consumerPcepService = session.getRpcService(TopologyTunnelPcepProgrammingService.class);
411 assertNotNull(consumerPcepService);
412 assertNotSame(pcepService1, consumerPcepService);
413 assertNotSame(pcepService2, consumerPcepService);
415 testCreateP2pTunnel(consumerPcepService);
416 testDestroyP2pTunnel(consumerPcepService);
419 private void testCreateP2pTunnel(final TopologyTunnelPcepProgrammingService consumerPcepService) {
420 PcepCreateP2pTunnelInput addLspInput = getInputForRpc(topology, PcepCreateP2pTunnelInputBuilder.class,
421 PcepCreateP2pTunnelInput.class);
422 consumerPcepService.pcepCreateP2pTunnel(addLspInput);
424 verify(pcepService1).pcepCreateP2pTunnel(addLspInput);
425 verifyZeroInteractions(pcepService2);
427 addLspInput = getInputForRpc(topology2, PcepCreateP2pTunnelInputBuilder.class, PcepCreateP2pTunnelInput.class);
429 consumerPcepService.pcepCreateP2pTunnel(addLspInput);
431 verifyZeroInteractions(pcepService1);
432 verify(pcepService2).pcepCreateP2pTunnel(addLspInput);
435 private void testDestroyP2pTunnel(final TopologyTunnelPcepProgrammingService consumerPcepService) {
436 PcepDestroyTunnelInput addLspInput = getInputForRpc(topology, PcepDestroyTunnelInputBuilder.class,
437 PcepDestroyTunnelInput.class);
438 consumerPcepService.pcepDestroyTunnel(addLspInput);
440 verify(pcepService1).pcepDestroyTunnel(addLspInput);
441 verifyZeroInteractions(pcepService2);
443 addLspInput = getInputForRpc(topology2, PcepDestroyTunnelInputBuilder.class, PcepDestroyTunnelInput.class);
445 consumerPcepService.pcepDestroyTunnel(addLspInput);
447 verifyZeroInteractions(pcepService1);
448 verify(pcepService2).pcepDestroyTunnel(addLspInput);
451 broker.registerConsumer(consumer);
454 private void initMock(final TopologyTunnelPcepProgrammingService pcepService) {
455 @SuppressWarnings("rawtypes")
456 final ListenableFuture future = Futures.immediateFuture(RpcResultBuilder.<AddLspOutput>success().build());
457 when(pcepService.pcepCreateP2pTunnel(Mockito.<PcepCreateP2pTunnelInput>any())).thenReturn(future);
458 when(pcepService.pcepDestroyTunnel(Mockito.<PcepDestroyTunnelInput>any())).thenReturn(future);
459 when(pcepService.pcepUpdateTunnel(Mockito.<PcepUpdateTunnelInput>any())).thenReturn(future);