Merge "Bug 8351: Enforce check-style rules for restconf - sal-rest-docgen"
[netconf.git] / netconf / sal-netconf-connector / src / test / java / org / opendaylight / netconf / sal / connect / netconf / sal / NetconfDeviceSalFacadeTest.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
9 package org.opendaylight.netconf.sal.connect.netconf.sal;
10
11 import static org.mockito.Matchers.any;
12 import static org.mockito.Matchers.eq;
13 import static org.mockito.Mockito.doNothing;
14 import static org.mockito.Mockito.doReturn;
15 import static org.mockito.Mockito.mock;
16 import static org.mockito.Mockito.times;
17 import static org.mockito.Mockito.verify;
18 import static org.mockito.MockitoAnnotations.initMocks;
19
20 import java.net.InetSocketAddress;
21 import java.util.Arrays;
22 import java.util.List;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
26 import org.mockito.Mock;
27 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
28 import org.opendaylight.controller.md.sal.dom.api.DOMNotification;
29 import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
30 import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities;
31 import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences;
32 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil;
33 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
34 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
35 import org.powermock.api.mockito.PowerMockito;
36 import org.powermock.core.classloader.annotations.PrepareForTest;
37 import org.powermock.modules.junit4.PowerMockRunner;
38
39 @RunWith(PowerMockRunner.class)
40 @PrepareForTest({NetconfDeviceTopologyAdapter.class, NetconfDeviceSalProvider.MountInstance.class,
41         NetconfSessionPreferences.class})
42 public class NetconfDeviceSalFacadeTest {
43
44     private NetconfDeviceSalFacade deviceFacade;
45
46     private NetconfDeviceTopologyAdapter netconfDeviceTopologyAdapter;
47     private NetconfDeviceSalProvider.MountInstance mountInstance;
48
49     @Mock
50     private NetconfDeviceSalProvider salProvider;
51
52     @Before
53     public void setUp() throws Exception {
54         initMocks(this);
55         final InetSocketAddress address = new InetSocketAddress("127.0.0.1", 8000);
56         final RemoteDeviceId remoteDeviceId = new RemoteDeviceId("test", address);
57
58         deviceFacade = new NetconfDeviceSalFacade(remoteDeviceId, salProvider);
59
60         netconfDeviceTopologyAdapter = PowerMockito.mock(NetconfDeviceTopologyAdapter.class);
61         mountInstance = PowerMockito.mock(NetconfDeviceSalProvider.MountInstance.class);
62
63         doReturn(netconfDeviceTopologyAdapter).when(salProvider).getTopologyDatastoreAdapter();
64         doNothing().when(netconfDeviceTopologyAdapter)
65                 .updateDeviceData(any(Boolean.class), any(NetconfDeviceCapabilities.class));
66
67         doReturn(mountInstance).when(salProvider).getMountInstance();
68         doNothing().when(mountInstance).onTopologyDeviceDisconnected();
69     }
70
71     @Test
72     public void testOnDeviceDisconnected() {
73         deviceFacade.onDeviceDisconnected();
74
75         verify(netconfDeviceTopologyAdapter).updateDeviceData(eq(false), any(NetconfDeviceCapabilities.class));
76         verify(mountInstance, times(1)).onTopologyDeviceDisconnected();
77
78     }
79
80     @Test
81     public void testOnDeviceFailed() {
82         final Throwable throwable = new Throwable();
83         deviceFacade.onDeviceFailed(throwable);
84
85         verify(netconfDeviceTopologyAdapter).setDeviceAsFailed(throwable);
86         verify(mountInstance, times(1)).onTopologyDeviceDisconnected();
87     }
88
89     @Test
90     public void testOnDeviceClose() throws Exception {
91         deviceFacade.close();
92         verify(salProvider).close();
93     }
94
95     @Test
96     public void testOnDeviceConnected() {
97         final SchemaContext schemaContext = mock(SchemaContext.class);
98
99         final NetconfSessionPreferences netconfSessionPreferences =
100                 NetconfSessionPreferences.fromStrings(getCapabilities());
101
102         final DOMRpcService deviceRpc = mock(DOMRpcService.class);
103         deviceFacade.onDeviceConnected(schemaContext, netconfSessionPreferences, deviceRpc);
104
105         verify(mountInstance, times(1)).onTopologyDeviceConnected(eq(schemaContext),
106                 any(DOMDataBroker.class), eq(deviceRpc), any(NetconfDeviceNotificationService.class));
107         verify(netconfDeviceTopologyAdapter,
108                 times(1)).updateDeviceData(true, netconfSessionPreferences.getNetconfDeviceCapabilities());
109     }
110
111     @Test
112     public void testOnDeviceNotification() throws Exception {
113         final DOMNotification domNotification = mock(DOMNotification.class);
114         deviceFacade.onNotification(domNotification);
115         verify(mountInstance).publish(domNotification);
116     }
117
118     private static List<String> getCapabilities() {
119         return Arrays.asList(NetconfMessageTransformUtil.NETCONF_CANDIDATE_URI.toString());
120     }
121 }