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.netconf.impl.osgi;
10 import static org.junit.Assert.assertEquals;
11 import static org.mockito.Mockito.doNothing;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.times;
14 import static org.mockito.Mockito.verify;
16 import com.google.common.collect.Sets;
17 import java.util.HashSet;
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22 import org.mockito.Mock;
23 import org.mockito.junit.MockitoJUnitRunner;
24 import org.opendaylight.netconf.api.capability.BasicCapability;
25 import org.opendaylight.netconf.api.capability.Capability;
26 import org.opendaylight.netconf.api.monitoring.CapabilityListener;
27 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
29 @RunWith(MockitoJUnitRunner.StrictStubs.class)
30 public class AggregatedNetconfOperationServiceFactoryTest {
32 private final Set<Capability> factory1Caps = new HashSet<>();
33 private final Set<Capability> factory2Caps = new HashSet<>();
36 private CapabilityListener listener1;
38 private CapabilityListener listener2;
40 private CapabilityListener listener3;
42 private NetconfOperationServiceFactory factory1;
44 private NetconfOperationServiceFactory factory2;
46 private AutoCloseable autoCloseable1;
48 private AutoCloseable autoCloseable2;
50 private AutoCloseable autoCloseable3;
52 private AggregatedNetconfOperationServiceFactory aggregatedFactory;
55 public void setUp() throws Exception {
56 factory1Caps.add(new BasicCapability("AAA"));
57 factory1Caps.add(new BasicCapability("BBB"));
59 factory2Caps.add(new BasicCapability("CCC"));
60 factory2Caps.add(new BasicCapability("DDD"));
62 aggregatedFactory = new AggregatedNetconfOperationServiceFactory();
64 aggregatedFactory.registerCapabilityListener(listener1);
65 aggregatedFactory.registerCapabilityListener(listener2);
67 doReturn(autoCloseable1).when(factory1).registerCapabilityListener(listener1);
68 doReturn(autoCloseable2).when(factory1).registerCapabilityListener(listener2);
69 doReturn(factory1Caps).when(factory1).getCapabilities();
71 doReturn(autoCloseable1).when(factory2).registerCapabilityListener(listener1);
72 doReturn(autoCloseable2).when(factory2).registerCapabilityListener(listener2);
73 doReturn(factory2Caps).when(factory2).getCapabilities();
75 doNothing().when(autoCloseable1).close();
76 doNothing().when(autoCloseable2).close();
78 doReturn(autoCloseable3).when(factory1).registerCapabilityListener(listener3);
79 doReturn(autoCloseable3).when(factory2).registerCapabilityListener(listener3);
83 public void testOnAddAndOnRemove() throws Exception {
84 aggregatedFactory.onAddNetconfOperationServiceFactory(factory1);
85 aggregatedFactory.onAddNetconfOperationServiceFactory(factory2);
87 verify(factory1).registerCapabilityListener(listener1);
88 verify(factory2).registerCapabilityListener(listener1);
89 verify(factory1).registerCapabilityListener(listener2);
90 verify(factory2).registerCapabilityListener(listener2);
92 aggregatedFactory.onRemoveNetconfOperationServiceFactory(factory1);
93 aggregatedFactory.onRemoveNetconfOperationServiceFactory(factory2);
95 verify(autoCloseable1, times(2)).close();
96 verify(autoCloseable2, times(2)).close();
100 public void testGetCapabilities() throws Exception {
101 aggregatedFactory.onAddNetconfOperationServiceFactory(factory1);
102 aggregatedFactory.onAddNetconfOperationServiceFactory(factory2);
103 final Set<Capability> actual = aggregatedFactory.getCapabilities();
104 Set<Capability> expected = Sets.union(factory1Caps, factory2Caps);
105 assertEquals(expected, actual);
109 public void testRegisterCapabilityListener() throws Exception {
110 aggregatedFactory.onAddNetconfOperationServiceFactory(factory1);
111 aggregatedFactory.onAddNetconfOperationServiceFactory(factory2);
112 aggregatedFactory.registerCapabilityListener(listener3);
114 verify(factory1).registerCapabilityListener(listener3);
115 verify(factory2).registerCapabilityListener(listener3);
119 public void testClose() throws Exception {
120 aggregatedFactory.onAddNetconfOperationServiceFactory(factory1);
121 aggregatedFactory.onAddNetconfOperationServiceFactory(factory2);
122 aggregatedFactory.close();
123 verify(autoCloseable1, times(2)).close();
124 verify(autoCloseable2, times(2)).close();